maxswarm · run #001 · 2026-04-29 (sample)

Phoenix HVAC TAM Validation

Conducted by Claude · audit verdict: PASS

Assignment

Validate the 6,265-company Phoenix HVAC TAM produced on 2026-04-22 — is the count defensible, are the segments right, and what should the buy-side roll-up shortlist look like?

Roster

writerarchitecthunter quarterbacklistenerdraper market-analystaudit-qualitystoryteller debrieftech-translator
All 11 called. No subset.

Final output — what the swarm concluded

The 6,265-company TAM is directionally correct but inflated by ~14% due to duplicate listings across Google Maps secondary categories (HVAC + Plumbing + Mechanical Contractor for the same business). Net defensible TAM: ~5,400 companies. Segmentation should split residential-only (62%), commercial-capable (28%), and industrial (10%) — the original single-bucket view masked roll-up fit. Recommended shortlist for buy-side roll-up: commercial-capable, $3M–$15M revenue, 10–50 techs, owner age 55+ — yields ~310 targets, all addressable with free-tier sourcing (LinkedIn + state license registry) before paid enrichment is needed.

Where the swarm disagreed

market-analyst + hunter (2 agents) — argue the residential bucket is also worth roll-up attention
  • Residential HVAC has higher recurring service revenue per tech, raising EBITDA multiples paid by PE in 2025 cohorts. [research →]
  • Three named PE platforms in 2025–26 prioritized residential density over commercial scale; majority view excludes this signal. [research →]
draper (1 agent) — flags the owner-age 55+ filter as ageist framing for outreach copy
  • Replace "owner age 55+" with "owners signaling exit readiness" in any client-facing version — same filter, no liability. [research →]

Currency this run

FromToActionMultScore
architecthunterPre-flagged Google Maps duplicate-category bug before Hunter ran second pass3x15
huntermarket-analystRestructured TAM CSV to include NAICS 2-digit + 6-digit so multiples could join3x15
listenerquarterbackSurfaced unstated requirement: shortlist must be ready for cold outreach Monday3x20
tech-translatorwriterPlain-Englished "addressable TAM net of duplicate-category leakage" → "real list size after we de-dupe"3x5
draperwriterReplaced age-bracket framing with exit-readiness framing across client copy3x15
storytellerswarmCaught that the segment %s and the shortlist criteria didn't reconcile in v1; forced a refactor5x100
quarterbackselfSequenced Phase 2 cross-read in batches of 3 drafts to avoid agent overload1x5
Cross-agent ratio: 86% (target ≥60%) ✓ · Coverage: 9/11 agents both gave and received ✓ · Total events: 7 · No-zero rule: 2 agents (audit-quality, debrief) ended with zero — flag for next run.

Cross-system gaps surfaced

  • hunter → architect: Google Maps secondary-category dedup is not in the canonical TAM pipeline. Recommended change: add a dedup step keyed on (lat,lng,phone) in the api-agent registry for any future Maps-sourced TAM.
  • draper → writer: Age-bracket filters keep leaking into client copy. Recommended change: add an "ageist phrase" check to writer's brand_kit.json voice rules.

Evidence cited

For next time

Surprises

  • 14% Maps-category duplicate rate was higher than expected.
  • Residential vs commercial split moved the entire shortlist conclusion.

What we'd do differently

  • Have hunter run dedup before Phase 1 drafts so market-analyst has clean numbers from the start.
  • Pull audit-quality into the dissent block at Phase 4, not just the majority synthesis.
Phase 1 raw drafts (collapsed) — sample shows structure only

writer

[draft text...]

architect

[draft text...]

hunter

[draft text...]

(others omitted in sample)