Back to Blog
Home ServicesInsight FeedWorked Example

What a Morning Brief for an HVAC Contractor Actually Contains

Six numbers, three source systems, one read before the trucks roll. A worked example of what Dashfeed writes at 6am, where each line comes from, and why estimate aging is the first thing we compute.

Dashfeed Research9 min readAugust 4, 2026

Who this is for

An HVAC contractor with a dispatch system, an accounting system, and an ad account already has more data than most software companies had in 2015. What they don’t have is an analyst. This post walks through what Dashfeeddoes with that data every morning, using a hypothetical 12-truck shop. Every number below is made up to show the shape of the brief. None of it is customer data.

The brief, as it lands

The brief arrives around 6am in the app, and in Slack, email, or a text if the operator wants it there. It’s ranked by what needs a decision, not by what changed most recently. Here’s the whole thing for our hypothetical shop on a Tuesday in early August.

Morning brief · Tue 6:02amIllustrative
  1. Act today
    9 estimates are 8 to 14 days old and unanswered
    Combined value about $61K. Six were quoted by the same tech. Call list is attached, sorted by value.
  2. Act today
    22 maintenance agreements expire in the next 30 days
    About 14% of the active base. Only 5 have a renewal touch logged. Last year the same window renewed at roughly two thirds.
  3. This week
    Overdue invoices crossed $48K, up from $39K a week ago
    Three commercial accounts make up half of it. The oldest is 74 days.
  4. This week
    Callbacks clustered on one install crew
    4 of the last 6 repeat visits trace to installs completed the week of July 13.
  5. Watch
    Technician utilization held at 78% last week
    Flat versus the prior week. No action suggested.
  6. Opportunity
    Forecast shows the first 95°F day on Thursday
    312 homes in your service history have a system 15+ years old and no active agreement. Outreach list attached, grouped by neighborhood.

Notice what isn’t there. No chart of revenue by month. No table of jobs by type. Those exist, and the operator can ask for them in chat any time. But the brief is a list of decisions, and a number that doesn’t change a decision doesn’t make the cut.

Where each line comes from

Every item in the brief is a metric Dashfeed builds and maintains over the contractor’s own systems, connected with read-only access. For HVAC that usually means a dispatch platform such as ServiceTitan, FieldEdge, Housecall Pro, or Jobber, an accounting system such as QuickBooks, and the ad accounts. Here’s the mapping for the six items above.

Brief itemMetricBuilt fromFires when
Unanswered estimatesEstimate agingDispatch estimates table, status and created dateEvery morning, if the 8 to 14 day bucket is non-empty
Expiring agreementsAgreement renewalsDispatch memberships or agreements, plus renewal activityWeekly, and daily once the 30-day count passes a threshold
Overdue invoicesCollections agingAccounting invoices and paymentsWhen the overdue total moves more than a set percentage week over week
Callback clusterCallback rateDispatch jobs joined to prior jobs at the same addressWhen repeat visits concentrate on one crew, tech, or install week
UtilizationTechnician utilizationDispatch timesheets or job durations against scheduled hoursWeekly, as a watch item unless it moves
Replacement outreachSystem age by neighborhoodEquipment records and service history, joined to agreementsAhead of the first heat wave or cold snap in the forecast

Two things about that table matter more than the specifics. First, none of the metrics need a data team to define. Dashfeed ships them for the trade and keeps them working when the dispatch vendor renames a column. Second, each metric has its own trigger. The brief isn’t a report that runs on a schedule and prints everything. It’s a set of monitors, and only the ones with something to say get a line.

Why estimate aging goes first

When we set up a new HVAC workspace, estimate aging is the first metric we compute. It’s cheap, because it needs one table. And it’s the metric most likely to change what someone does before lunch.

The reason is the shape of the distribution. Open estimates pile up at both ends. The very fresh ones don’t need a call yet. The very old ones are mostly gone and calling them is a poor use of an office manager’s morning. The middle is small and it’s where a follow-up still has a chance.

Open estimates by age (illustrative)0–3 days: 14 open estimates. Still warm. Usually no action needed.0–3 days144–7 days: 11 open estimates. First follow-up window.4–7 days118–14 days: 9 open estimates. The bucket the brief leads with.8–14 days915–30 days: 6 open estimates. Reachable, but expect competition.15–30 days630+ days: 17 open estimates. Mostly lost. Worth a cleanup pass, not a call.30+ days17OPEN ESTIMATES, ILLUSTRATIVE
Made-up counts for a hypothetical 12-truck shop. The shape is the point, not the numbers. Most shops carry a big 30+ day tail that isn’t worth calling, and a small middle bucket that is.

So the brief doesn’t report “57 open estimates.” That number is true and useless. It reports the nine in the middle bucket, with the dollar value and a call list sorted by size. The operator can ask “which tech quoted these” in chat and get the answer with the underlying rows cited, but the default is already the version that leads to a phone call.

How it gets built, in a week

  1. Connect the systems. Dispatch, accounting, and ad accounts link with read-only credentials from the Connections page. Most contractors finish this step in under an hour.
  2. Dashfeed builds the trade metrics. Estimate aging, agreement renewals, callback rate, technician utilization, collections aging, and system age by neighborhood. These are maintained by us, not by the contractor.
  3. Monitors run overnight. Each metric has a monitor with its own trigger. Statistical detection handles the “this moved more than usual” cases. Thresholds handle the “this crossed a line” cases.
  4. The brief is written and delivered. Plain English, ranked by what needs a decision, with the supporting list attached. Delivered to the feed and to whichever channels the operator picked.
  5. Follow-up happens in chat. “Show me the 22 agreements by neighborhood.” “Which commercial accounts are past 60 days?” Every answer cites the rows it came from.

The full set of HVAC metrics is typically live within a week of connecting the first system. Plumbing, roofing, and pest control follow the same pattern with their own metric sets. The brief looks different for each trade, but the design is the same. A short list of decisions, ranked, before the day starts.

The point of all this

An operations manager who reads six lines at 6am and makes two calls before 8am gets more out of their data than one who has a dashboard with forty charts and opens it on Fridays. The data was the same in both cases. What differs is whether someone did the reading. We think that should be the software’s job.

See the brief on your own numbers

Dashfeed connects to your dispatch, accounting, and ad accounts with read-only access and starts writing the brief within a week.