Every dashboard, every CSV export, and every HCP report uses slightly different rules to calculate "revenue per tech." Here's exactly how each source works, why the numbers differ, and which one to trust for what question.
Cody's HCP Custom Report $177k
The "Sales by Tech" custom report Cody pulls from HCP's report builder. Sums total_amount on every job where the tech is the primary assigned employee.
SUM(total_amount) WHERE primary_tech = X
(no work_status filter applied)
✓ Use when: you want the gross book HCP shows by default. Matches what Cody emails out.
⚠ Includes cancelled jobs — HCP's custom report builder has no filter for them. Inflates the number.
HCP Service Request Export $170k
The downloadable CSV from HCP's Service Requests page. Has two revenue columns: Amount (what was charged net of discounts) and Subtotal (full retail price before SP discounts).
Amount = invoice charged (net)
Subtotal = retail before member pricing
✓ Use when: you want to see what was actually billed AND what service value was delivered.
⚠ CSV excludes cancellations entirely (different filter than custom report). And Amount excludes any post-billing refunds/adjustments.
This Dashboard ("REAL" view) $167k
What you see in the cyan number on every row. Pulls jobs from the /jobs API directly, sums total_amount where the tech is primary assigned, and excludes cancelled jobs using the work_status field.
SUM(total_amount) WHERE primary_tech = X
AND work_status NOT LIKE '%cancel%'
✓ Use when: you want clean real sales. This is the closest to "what the tech actually billed and the customer can still pay."
⚠ A few dollars off Cody's CSV because of tax handling differences in HCP's report engine.
HCP API Raw SOURCE
The underlying truth. Every job has a total_amount, outstanding_balance, work_status, assigned_employees[], tags, and notes. All other reports are filtered slices of this.
GET /jobs?scheduled_start_min=…&page=N
Each job has 28+ fields
✓ Use when: any HCP/Cody number doesn't match and you need to verify. Every dashboard on this site pulls from here.
⚠ Read-only key can't see Service Plans endpoint (returns 404), so SP visits are detected via notes/tags scan rather than the dedicated module.
Worked example: Jose Caballero, YTD 2026 (Jan-Jun)
Five different "Jose numbers" exist. Each is correct for what it measures. The 4% variance between them is not a bug — it's HCP report definitions diverging. The 26% gap between Amount and Subtotal is the real story.
Cody Report
$177,452
384 jobs · incl. 9 cancellations
CSV Amount
$170,002
385 jobs · excludes cancellations
CSV Subtotal
$229,843
retail value — pre-SP discount
Dashboard REAL
$167,253
375 jobs · excludes cancellations
Race bar (live)
~$169k
refreshes every 30 min
The hidden story: Jose ran 215 of 385 jobs (55.8%) at $0 charge — these are Service Plan / Maintenance Agreement visits included in members' annual fee. The $229k Subtotal minus $170k Amount = $59,841 in service value he delivered to SP members at no charge. That's the SP program working as designed — and it's invisible on every revenue dashboard. Maintenance techs should be ranked on SP coverage, callback rate, and IAQ attach — not pure revenue.
Why the small differences exist (FAQ)
- Why doesn't the Tech Race match Cody's CSV exactly?
- Three reasons, in order: (1) Cancellations — Cody's custom report includes them, the CSV excludes them, this dashboard's REAL view excludes them. (2) Tax handling — HCP report engine and the API normalize tax slightly differently (~$5-$50 per tech). (3) Timing — Cody's CSV is a snapshot from a specific moment; the dashboard refreshes every 30 min, so you'll see drift as new jobs land.
- Why do maintenance techs look like they're underperforming?
- Because Service Plan visits charge $0. The SP work doesn't show as revenue on any ranking. Jose, Josh Ogbonna, Trevor Humiston, Noah Deleusomme all do mostly SP work — their REAL revenue is 30-60% lower than service techs who close installs, but they're protecting $4.79M in Previous Customer retention. Ranking by revenue alone is the wrong scoring system for them.
- What's a "primary assigned" tech?
- HCP lets multiple techs be assigned to one job (estimator + install crew + QC tech). All revenue is credited to the first employee in the assigned_employees array — which HCP treats as the lead/owner. The dashboard, Cody's reports, and the CSV all use this same rule.
- Why do some jobs show "$0" but still appear on the tech's race?
- HCP's "multi-ticket install" pattern: a single job is split into ticket -1 (the install with the money), -2 (QC visit, $0), -3 (warranty follow-up, $0). The follow-up techs appear on $0 lines because they did the work but didn't sell the install. This is correct — the install money should go to the estimator.
- Where do cancellations come from?
- Click any tech's name on the race (when it has the ▸ arrow) to see their cancelled-job list with invoice number, customer, and amount. Cody's HCP report counts these as revenue because his custom report doesn't filter by work_status. The cleanest fix is to add a "work_status ≠ cancelled" filter when Cody builds the custom report inside HCP. Right now, this is the gap shown next to every CODY number on the race.
- Where does the "Subtotal" $59k member-discount come from?
- HCP's Subtotal column on the Service Request export is the retail price before any membership discount. The Amount column is what was actually charged. The difference is the dollar value Cowboys delivered to maintenance-agreement / Comfort Club members at no charge under their plan. This is real service value, just not real revenue — it's how the SP program protects the customer base.