Estimates bonded to a person by identity, never by name

Estimator job payloads are matched to a contact using only email and phone — never names — because name matching has caused real misattribution.

What it is

The estimator port exposes a contactHints function that reads only the identity fields from a job payload, tolerating the varying key casing the estimator uses. The rule against name matching is enforced at the port boundary.

Also called: wrong contact on the estimate · matching jobs to leads · contact hints

See it
Estimates bonded to a person by identity, never by name
Area
Integrations
Group
SmartBuild
System
SmartBuild
Solves
1 named problem
01A job payload arrives with contact fields under varying key names.
02Only email and phone are extracted, checked in both casings.
03Bonding uses those identity fields.
A matching panel showing email and phone as the only accepted keys, with 'name' greyed out and annotated 'never'. Sample data — no customer information appears here.
How it works
  1. 1A job payload arrives with contact fields under varying key names.
  2. 2Only email and phone are extracted, checked in both casings.
  3. 3Bonding uses those identity fields.
  4. 4Names are deliberately excluded from the match.
Why we built it

Stated at the port: 'SmartBuild job payloads carry customer contact info under varying keys; bonding uses ONLY these identity fields (never names — see sbContactMatch.ts for the incident history behind that rule).'

The problem
  • Name-based matching bonded estimates to the wrong person.
Sound familiar?
What you get
An estimate is only ever attached on a real identity signal.
Key-casing differences in the upstream payload do not break matching.

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →