Where Impact numbers come from: the nightly network rollup
Impact is the network's read on the value Verinode | IQ has produced for your franchisees over the last 30 days: how many decisions they acted on, how many recoverable dollars they captured, how mu…
On this page
What Impact shows you
Impact is the network's read on the value Verinode | IQ has produced for your franchisees over the last 30 days: how many decisions they acted on, how many recoverable dollars they captured, how much they are using IQ, and who needs a nudge. It is the HQ mirror of the Impact page every franchisee already sees on their own IQ account, rolled up so you can read it across the whole network at once.
Verinode does not decide anything on this page. It reads what already happened inside each franchisee's IQ account and reports it up as an aggregate. You decide who to coach, who to congratulate, and where to focus your enablement calls.
Where to find it. Open Impact from the Intelligence group in the HQ sidebar, alongside Benchmarks, Margin & Cash, and Forecasting, at hq.verinode.ai/impact.
This article is about the mechanics behind the numbers: where they come from, how often they refresh, and what an empty tile actually means. For what to do with the numbers once they land, see network health and HQ benchmarks.
The privacy boundary, first
HQ never reads a franchisee's underlying business data to build this page. The Impact page is served entirely from the network data, a table of pre-computed per-franchisee numbers written by a nightly cron. HQ's server code queries that summary table plus the network data for display names, both in the the network layer schema. It never opens a franchisee's signals, documents, agent conversations, or surveys directly. Those live in the the private layer schema, which only the franchisee's own IQ account and the cron job that produces the rollup can read.
That boundary is what lets you see "Acme Restoration acted on 14 of 20 decisions and recovered $42k" without ever seeing which decisions, which jobs, which carrier, or which document those numbers came from. The detail stays with the franchisee. The aggregate comes to you.
The pipeline: one cron, one bridge
A single scheduled job, hq-aggregate-refresh, is the only bridge from franchisee data (pii.*) into network data (the network data*). It runs once nightly (in a checkpointed window described below) and, for every franchise group, walks every franchisee in that group's directory and rebuilds around twenty different the network data* summary tables: signals, program adoption, compliance, reputation, facilities, fleet, vendor spend, forms and audits, and more. Impact is one line item in that same sweep.
For Impact specifically, the cron does one thing: it calls the exact same function the franchisee's own IQ Impact page calls, getImpactMetrics, once per franchisee, over a rolling 30-day window (right now back to 30 days ago, not a calendar month). That function counts decisions surfaced and acted on, sums hard-recoverable and soft-conditional dollars, counts IQ commands, IU consumption, documents added, and survey responses, then grades the franchisee's utilization. The cron takes that same result and writes one row into the network data, keyed by group and franchisee, upserting so a re-run overwrites rather than duplicates.
Only franchisees already listed in the group's member directory get rolled up. A franchisee that has not yet been added to the directory, or has left it, simply will not have a row.
Why it runs on a schedule instead of live
The franchisee-side Impact page computes its numbers live, on the page load, because it is reading one operator's data. The HQ side cannot do that: computing this for every franchisee, in every group, on every page view, would mean re-running the full decision, dollar, and engagement query for dozens or hundreds of businesses on every click. Instead, the cron does that work once overnight, at low traffic, and HQ pages read the pre-built result. That is the trade Verinode makes across every the network data* table, not just Impact: a fast, always-available network page in exchange for the number being a snapshot from the most recent nightly run rather than to-the-second live.
The schedule itself is a checkpointed sweep, not a single run:
- 1The job is scheduled every 10 minutes between 06:00 and 07:50 UTC.
- 2Each invocation picks up a persisted cursor of "which group did we get to last time" and resumes from there, walking the franchise groups in a stable order.
- 3Within that run, it works through as many groups as it can inside its time budget, rebuilding all ~20 summary tables (Impact included) for every franchisee in each group before moving to the next.
- 4Whichever invocation processes the last group marks the sweep complete for the night. Any later invocation in the same window sees the sweep is done and does nothing.
- 5The next night, the cursor resets and the sweep starts again from the first group.
The reason it is spread across a two-hour window rather than one run is scale: a large network can have more franchisees than a single invocation can finish rebuilding in its time limit. Splitting the sweep across repeated 10-minute invocations, each picking up where the last left off, means a big network's tail groups still get processed instead of being silently dropped by a run that ran out of time. A partial sweep (one that did not reach every group by the end of the window) is itself something the platform monitors for.
Note
If you compare notes with a franchisee and their Impact number looks a beat ahead of yours, this is why. Their page is live. Yours is as of the most recent nightly rollup, at most about a day old, occasionally older right at the edge of a heavy sweep night.
The cron is also resilient to the table simply not existing yet in a given environment: if the read against the network rollup fails, HQ treats that as "no data" and renders the empty state below rather than showing an error.
What each part of the page means
The hero band
At the top, an eyebrow reads "Network impact · last 30 days." Below it:
- The headline number is total decisions acted on across every franchisee in the network this window.
- The pill beside it reads "X of Y franchisees active" once there is data (only franchisees that produced any measurable impact, meaning at least one acted decision, IQ command, recoverable or potential dollar, or added document, count as "active"). Before any data exists, it reads "No data yet."
- Recovered is the total hard-recoverable dollars, the realized, already-collected value across the network.
- Potential is the total soft-conditional dollars, value that is identified but not yet locked in.
- Action rate is the network-wide share of surfaced decisions that got acted on, shown as a percentage, and colored to reflect how the network as a whole is doing (stronger green at higher rates, easing toward neutral and then toward Analyse red as the rate drops).
Recovered and Potential are always shown side by side and never added together into one number. A recovered dollar is money the network actually captured. A potential dollar is not, and Verinode does not let the two blur into a single headline.
Value Captured
This row ranks franchisees by realized hard-recoverable dollars. Each tile shows a franchisee's recovered total as its headline figure, the franchisee's name, and a line beneath it: "$X recovered · $Y potential" when there is a soft-conditional figure to show, or "$X recovered · N acted" when there is not. Clicking a tile takes you to that franchisee's entry on the Franchisees page.
Empty state: "No recoverable or potential dollars captured across the network yet. Value appears here as franchisees act on dollar-tagged decisions."
Needs Attention
This row surfaces franchisees graded Underutilized, meaning their pattern of acting on decisions and staying active inside IQ over the window is below where it should be. Each tile shows "Underutilized" as its label, the franchisee's name, and either "N of M decisions acted" or, if IQ saw no activity at all from that franchisee this window, "No IQ activity this window." Verinode does not publish the exact rule behind the grade; read it as a flag that the franchisee is due a check-in, not a scorecard to argue with line by line.
Empty state: "No underutilized franchisees. Every active location is acting on decisions or engaging with IQ."
Engagement
This row ranks franchisees by how many IQ commands (operator-initiated agent conversations) they ran this window, a read on how deeply a franchisee is actually using their IQ account day to day, separate from dollar outcomes. Each tile shows the command count as its label, the franchisee's name, and either "N IQ commands · M survey responses" or "N IQ commands run" if there were no survey responses to add.
Empty state: "No operator-initiated IQ commands across the network this window."
Empty network, before any data exists
If your network has no franchisees reporting yet, the hero pill reads "No data yet" and the subtext explains the reason plainly: "Impact will appear as franchisees act on decisions, run IQ, and capture recoverable dollars. The nightly rollup fills this in." This is not a broken page. It means either your franchisees have not yet generated the underlying activity, or the nightly rollup has not run since they did. Give it a night; the next scheduled sweep will pick up whatever happened.
Heads up
Impact only ever reflects franchisees who are already in your group's member directory. If a franchisee you expect to see is missing entirely (not showing "No data yet" inside a tile, just absent from the page), check that they are correctly listed on the Franchisees page first. The rollup cannot build a summary row for a franchisee it does not know is in the group.