The Technical Moat · Per-Address Economics

Address-level
underwriting.

Souscription
par adresse.

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.

The Core Difference

Others organize around the account. We organize around the address.

Les autres s'organisent autour du compte. Nous nous organisons autour de l'adresse.

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.

× Legacy Schema

Account-rooted

Enraciné au compte

Account {
  name: string
  revenue: number // aggregate
  margin: number? // if known at all
  contacts: Contact[]
}

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.

Salesforce, HubSpot, 6sense. Revenu et marge vivent au niveau du compte. Un opérateur à 50 emplacements a l'air d'une seule ligne. L'emplacement 3 peut hémorragier la marge et l'emplacement 27 peut être votre meilleur contrat — vous ne le saurez jamais, parce que le schéma ne les voit pas.

✓ Allometry Schema

Address-rooted

Enraciné à l'adresse

Account { locations: Location[] }
Location {
  address: GeocodedAddress
  pulse: PulseScore
  margin: number // realized, per-job
  ev: number // projected per address
  jobs: Job[], assets: Asset[]
}

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.

Chaque soumission, projet, transaction, signal, actif se rapporte à un Emplacement. Le compte les agrège, mais l'unité atomique est l'adresse. Marge, VE, risque — tous mesurés à l'adresse. Même compte à 50 emplacements = 50 décisions de souscription.

Why It Matters

One account. Three different stories.

Un compte. Trois histoires différentes.

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.

SOLARIS HVAC INC. · 3 addresses · composite Pulse: 67
Each address · independent score
Chaque adresse · score indépendant
LOC A
1200 Rue St-Denis
Montreal, QC
Margin38%
EV$24.8K
Risk0.08
Pulse 91
LOC B
450 Boul Charest
Quebec City, QC
Margin26%
EV$12.2K
Risk0.22
Pulse 64
LOC C
88 Queen St W
Toronto, ON
Margin9%
EV$5.8K
Risk0.61
Pulse 46
// Legacy CRM reports: Solaris HVAC = $42.8K TCV, "34% blended margin." Good account.
// Allometry reports: Loc A is your best deal ever. Loc B is borderline — reprice next quote. Loc C is eroding margin — stop expanding, consider churn. Same account. Three underwriting decisions.
Why Nobody Ships This

Address-level is hard to build — that's the moat.

Par adresse, c'est difficile à construire — c'est le fossé.

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:

1. Data model refactor

1. Refactorisation du modèle de données

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.

Changer l'objet racine de Compte à Emplacement signifie que chaque table, chaque requête, chaque vue, chaque endpoint d'API se re-référence. Les fournisseurs CRM/CPQ hérités ne toucheront pas à ça — ça briserait chaque intégration client jamais livrée.

2. Signal ingestion at scale

2. Ingestion de signaux à l'échelle

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.

Le scoring par adresse exige d'ingérer coûts, taux de main-d'œuvre, délais fournisseurs, fenêtres de maintenance, taux d'utilisation par emplacement — sur 50 à 2 500 emplacements par client. RAG multi-étapes + récupération structurée + sémantique, tout indexé aux adresses.

3. UI doesn't fit

3. L'interface ne convient pas

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.

Chaque tableau de bord « une ligne par compte » casse. Les cartes deviennent l'UI principale. Sélecteurs d'emplacement partout. Les filtres se composent au niveau de l'adresse, pas du compte. La plupart des outils SaaS ne peuvent pas rendre ça sans refonte complète.

4. Training data is proprietary

4. Les données d'entraînement sont propriétaires

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.

La précision de marge par adresse exige une vraie marge réalisée — projets clos, coûts réels, données d'écart. Les modèles par adresse ont besoin d'un signal d'entraînement par adresse. Nous l'obtenons de chaque projet clos que le Pulse gouverne. Les concurrents partant de données au niveau du compte ne peuvent jamais rattraper.

What It Unlocks

Because everything's at the address, everything compounds.

Parce que tout est à l'adresse, tout se cumule.

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:

ABM

Target by margin potential

Cibler par potentiel de marge

Score prospects at the address level. Pass on the firmographically-perfect but economically-toxic accounts.

Notez les prospects à l'adresse. Passez sur les comptes firmographiquement parfaits mais économiquement toxiques.

CPQ

Price per location

Tarifer par emplacement

Cost floors differ by city, labor market, supplier distance. Address-level costs = accurate margin on every line item.

Les planchers de coûts diffèrent par ville, marché du travail, distance fournisseur. Coûts par adresse = marge précise sur chaque ligne.

EV

Forecast per address

Prévoir par adresse

LTV × retention × expansion potential, computed per location. Aggregates up for account-level views when you want them.

VVC × rétention × potentiel d'expansion, calculés par emplacement. S'agrègent en vues au niveau du compte quand vous le voulez.

SLA

Asset tracking per address

Suivi d'actifs par adresse

Asset Intelligence (08) tracks deployed assets per location. SLA risk, uptime, maintenance — all address-level.

Asset Intelligence (08) suit les actifs déployés par emplacement. Risque SLA, temps de service, maintenance — tout par adresse.

Risk

Concentration by address

Concentration par adresse

Too much of your margin from one city? From one labor market? Risk Scoring (15) flags it at the address level.

Trop de votre marge vient d'une seule ville ? D'un seul marché du travail ? Risk Scoring (15) le signale à l'adresse.

API

Humanoid-ready

Prêt pour l'humanoïde

When humanoids deploy, the dispatch primitive is "address." Our API already speaks that language. Competitors' don't.

Quand les humanoïdes se déploient, la primitive de répartition est « adresse ». Notre API parle déjà ce langage. Pas celle des concurrents.

Where It Lives

Address-level runs through every module.

Par adresse traverse chaque module.

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.

// Core data object · Location — every other entity relates to it
Quote → Location · Job → Location · Asset → Location · Deal → Location · Signal → Location

// Powered by · System 2 · Territory / Geo (see PRD Section 4)
Deepest surface: Location Intelligence (05) · the module that exposes address-level scoring to users.

// Compounds into · The Pulse aggregates per-address signals into per-account composite scores.
// Enforces · Margin Protection reads address-level cost floors when gating quotes.
// Humanoid-ready · See /allometry-platform/humanoid for the future dispatch story.

Score every address. Not every account.

Notez chaque adresse. Pas chaque compte.

If 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.

Si vos opérateurs ont 5+ emplacements par client avec des économies différentes à chacun, par adresse est le seul modèle qui dit la vérité. Tout le reste moyenne le bruit.