Every commercial decision is scored at the deployment unit — the address — not the account. A 50-location HVAC operator has 50 different unit economics. Most software collapses that into one row per customer. We don't. That's the moat.
Every CRM, every CPQ, every ERP you've ever used has this schema: Account → Contact → Opportunity. That works for SaaS. It's blind for physical. Because one account can have 50 addresses with 50 different margin profiles.
Salesforce, HubSpot, 6sense. Revenue and margin live at the account level. A 50-location operator looks like one row. Location 3 can be hemorrhaging margin and Location 27 can be your best deal ever — you'll never know, because the schema doesn't see them.
Every quote, job, deal, signal, asset relates to a Location. The account aggregates them, but the atomic unit is the address. Margin, EV, risk — all measured at the address. Same 50-location account = 50 underwriting decisions.
Same customer. Three addresses. Three radically different economics. A CRM would average them into "34% margin, okay deal" and you'd keep expanding the bad one. Address-level underwriting tells you which to keep, which to reprice, and which to cut.
Technically non-trivial. Operationally painful. Competitors who are account-rooted can't get there — the schema change is a rewrite, not a patch. Four reasons most won't cross this line:
Changing the root object from Account to Location means every table, every query, every view, every API endpoint re-keys. Legacy CRM/CPQ vendors won't touch this — it would break every customer integration they've ever shipped.
Per-address scoring means ingesting cost data, labor rates, supplier lead times, maintenance windows, utilization rates per location — across 50-2,500 locations per customer. Multi-stage RAG + structured + semantic retrieval, all keyed to addresses.
Every "one row per account" dashboard breaks. Maps become primary UI. Location pickers everywhere. Filters compose at the address level, not the account level. Most SaaS tools can't render this without a ground-up redesign.
Per-address margin accuracy requires real realized margin — closed jobs, actual costs, variance data. Address-level models need address-level training signal. We get it from every closed job the Pulse governs. Competitors starting from account-level data can never catch up.
Address-level isn't just a schema preference. It's what lets every module work the way it does. Here's what you get that account-rooted systems can't deliver:
Score prospects at the address level. Pass on the firmographically-perfect but economically-toxic accounts.
Cost floors differ by city, labor market, supplier distance. Address-level costs = accurate margin on every line item.
LTV × retention × expansion potential, computed per location. Aggregates up for account-level views when you want them.
Asset Intelligence (08) tracks deployed assets per location. SLA risk, uptime, maintenance — all address-level.
Too much of your margin from one city? From one labor market? Risk Scoring (15) flags it at the address level.
When humanoids deploy, the dispatch primitive is "address." Our API already speaks that language. Competitors' don't.
It's not a feature. It's the data model. Every action module and every platform capability sees Allometry through the same address-keyed lens.
Location — every other entity relates to itIf your operators have 5+ locations per customer and different economics at each, address-level is the only model that tells the truth. Everything else averages the noise.