Field Service & Trades// diagnostic

The repeat caller keeps arriving as a brand-new customer

In short

Intake dedupe fails on the service location, not the person. A household shares one number, a landlord calls about three addresses and a tenant calls about one, so caller ID alone can never resolve who is on the line. Match in order — inbound number, then normalised service address, then equipment at that address — and ask one confirming question before you write anything.

Key takeaways

  • The unit being served is an address, not a person. Match the place and the person resolves itself.
  • Caller ID is a first filter, never a decision. Households, landlords and mobile numbers all break it.
  • Sample 50 near-duplicate pairs and record which field differed. That distribution is the whole diagnosis.
  • Run number, then normalised address, then equipment — and stop at the first unambiguous hit.
  • Link records mid-call, never merge. Merging is a reviewed operation with an undo, not a phone decision.
  • An agent that cannot read history cannot dedupe. Read scope is the cause nobody checks first.

The matcher is looking for the wrong object. A trades business does not serve people, it serves addresses with equipment in them, and the person on the phone is whoever happened to pick it up this time. Match on the caller and you get a new record every time the husband rings instead of the wife, the tenant instead of the landlord, or the site manager instead of head office.

The cost is not the tidy database. It is the membership that does not apply, the two-year-old install nobody sees, the technician arriving without the model number, and the follow-up sequence firing at a customer of six years as though they were new — which is one of the ways review requests fire at the wrong moment.

Confirm it before you change the matcher

Two measurements. The first tells you how big the problem is and where it enters; the second tells you which field is failing. Neither takes longer than an afternoon.

  1. Compute a duplicate rate by acquisition channel. For every customer record created in the last 90 days, test whether a customer already existed at the same normalised service address. Split the result by channel — phone agent, web form, technician-created, imported — because a blended figure hides which one is bleeding.
  2. Pull 50 near-duplicate pairs at random from that set. For each pair, record exactly which fields matched and which differed: number, surname, street line, unit designator, postcode, equipment serial.
  3. Tally the differing field. One field usually accounts for more than half the pairs, and that tally is your ranked cause list rather than the generic one below.
  4. Check the agent's read scope before anything else. Confirm by reading the credential, not by asking, that the intake agent can query customers and service history at all. An agent with write access and no read access produces a duplicate on every call, and the symptom looks identical to a bad matcher.

Five causes, ranked by how often they turn out to be it

CauseSignature in the sampleCheapest check
Matching on caller ID onlyNumbers match, surnames differ; or numbers differ and everything else matchesCount records sharing one number, and count customers whose calls arrive from more than one number
Unnormalised addressesStreet lines differ by abbreviation, unit designator or punctuation onlyGroup by postcode and eyeball the street lines inside each group
One customer, several service locationsSame payer name, different addresses, both created as customersLook for landlords, letting agents and multi-site commercial names in the duplicate set
Tenant versus ownerSame address, different people, both created — often months apartCheck whether any record type distinguishes occupier from bill payer
Agent cannot read historyEvery agent-created record is new; the rate is near 100 percent for that channelRead the credential's scopes; a two-minute check that ends the investigation
Cause, the signature in your 50-pair sample, and the cheapest check

The first two dominate almost everywhere. Caller ID fails because a number identifies a handset, not a household: two adults share a landline, a mobile is ported between people, a landlord's number appears on jobs at addresses they will never visit, and withheld or spoofed numbers arrive with nothing at all. Address matching fails because nobody normalises before comparing, so 'Flat 2, 14 Oak St' and 'Apt 2 14 Oak Street' are different strings and therefore different customers.

That second failure has a twin worth knowing about, because it is the same broken address doing two jobs. An address that will not normalise usually will not geocode either, so the same call that creates a duplicate also passes a boundary test it should have failed — the mechanism behind jobs booked ninety minutes outside the service area. Fix normalisation once and both symptoms move.

The match order an agent can actually run mid-call

Three signals, in strength order, each one narrowing the last. The agent stops at the first unambiguous hit and spends no further conversational turns on identity.

  1. Normalise the inbound number to a single canonical form — E.164 is the usual choice — and look it up, so a national format and an international one collide rather than diverge. One match is a candidate, not a decision. Zero means continue; more than one means continue, and do not guess.
  2. Ask for the service address, normalise it, and match on the location. This is the real key. Parse to structured components — building, unit, thoroughfare, locality, postcode — expand abbreviations on both sides, and compare the components rather than the string. Then geocode and treat coordinates within a few metres as the same place even when the text disagrees.
  3. If the address still resolves to two or more records, ask about the equipment. What is on the plate, where the unit sits, roughly when it went in. Equipment is the strongest identifier a homeowner can supply from memory and the one an existing customer usually answers instantly.
  4. Confirm before writing. One question, phrased against something the caller can verify, and an explicit fallback to a new record when the answer is no.
  5. Write a link, never a merge. If two records still look like one place, attach the job to the more complete record and flag the pair for review with both identifiers. Merging is a reviewed operation with an undo path, not something decided in the eleventh second of a phone call.

The one question that resolves most calls

The failure here is asking a question that puts the burden of matching on the caller. 'Are you an existing customer?' gets an unreliable yes from people who called a different company two years ago and a no from people whose partner booked the last visit. Ask instead about a fact the record already holds.

  • Anchor on the place. 'Is this for the property on Oak Street?' A caller either recognises the address or does not, and there is no judgement involved.
  • Anchor on the equipment when the address is ambiguous. 'Is this the unit in the loft, or the one in the garage?' Two units at one address is exactly the case a pure address match cannot split.
  • Anchor on the last visit only when it was recent. 'We were with you in March about the boiler pressure — same property?' Beyond a few months this reads as surveillance rather than service.
  • Never read back a full address to an unverified caller. Offer the street or the first line and let them complete it. This costs nothing conversationally and is the difference between confirming a record and disclosing one.

One caution on where these questions sit. Identity work belongs after the caller has said what is wrong, not before it. Front-loading verification into the opening turn is one of the reliable ways to lose the call outright, which is the pattern in callers hanging up in the first eight seconds. Take the problem first, match while they talk, confirm once.

A phone number tells you which handset dialled. It does not tell you which house has no hot water, and the house is the thing you are being asked to fix.

The model that stops it recurring

Most platforms already separate these objects and most operators use only the first. If your records collapse them, no matcher will hold, because the matcher is being asked to make one row mean four things.

ObjectThe question it answersThe duplicate it prevents
CustomerWho is billed and holds the agreementA landlord with nine properties becoming nine customers
Service locationWhich address is being worked onOne property splitting because the payer changed
ContactWhich person may be called, and about whatA household creating a record per adult
EquipmentWhich asset sits at that locationA second unit at one address booked as a second property
Four objects, what each answers, and the duplicate it prevents

The tenant-versus-owner case is where this earns its keep. The occupier is the contact who must be called to arrange access; the landlord or agent is the customer who authorises and pays. Modelled as one row, whichever of them rings last overwrites the other. A third-party warranty dispatch has the same two-party shape for a different reason, set out in why a home warranty dispatch books differently.

What to build, and what to leave alone

The deliverable is small and specific: one match service, called by every channel, returning a ranked candidate list with a score and a reason per candidate. Phone, web form and technician app all call the same endpoint, because three matchers guarantee three definitions of duplicate. Behind it sits a review queue with a named owner, a daily clearing time and a merge that can be undone. Against a platform like ServiceTitan, Jobber or Housecall Pro that is a narrowly scoped piece of internal tooling and operations software reading the operator's own API access, not a migration.

Two things to leave alone for now. Do not attempt a retrospective mass merge before the inbound rate is fixed, or you will merge into a system still producing new pairs. And do not confuse this with reconciling records across two systems after a migration, which has different keys and belongs with platform integration and data.

The rest of the intake path — what a booking must capture, how tiers are decided, what an agent may promise — is mapped across intake and call capture, within our field service and trades work.

Frequently asked questions

Short answers to the follow-ups this page tends to raise.

Why does our AI booking agent create a duplicate customer for callers we already know?

Because it is matching a person against a phone number when the thing it needs to identify is a property. Numbers move between people, households share one line, and landlords call about addresses they never visit, so caller ID resolves cleanly only for single-occupant customers who always ring from the same handset. Match the normalised service address instead and the person becomes a contact on the record rather than the record itself.

Should the agent merge records during the call?

No. Link the job to the best candidate and flag the pair for review. A merge collapses history, membership status, equipment and billing under time pressure with no second opinion, and an incorrect merge is far more expensive to reverse than a duplicate is to clean up. Merging belongs in a reviewed queue with an undo path and a named owner.

What address matching is good enough for a service business?

Parse to structured components, expand abbreviations on both sides, compare the components, then geocode and treat near-identical coordinates as the same place. Component comparison catches the abbreviation and punctuation differences that string matching misses; the geocode catches the cases where the text genuinely differs. Flag anything that geocodes to a locality centroid rather than a specific building, because those match everything nearby and nothing precisely.

How do we tell a duplicate from two genuinely separate customers at one address?

Use the equipment and the agreement, not the name. Two flats in one converted house are separate service locations with separate units and separate agreements even though the street line is identical; a husband and wife at one house share both. If your records cannot express that difference, the model is the problem rather than the matcher.

  • intake
  • customer data
  • deduplication
  • voice agents
// shipped work

The work behind this page

Builds from our portfolio that this page draws on.

Working on something in this space?

Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.

Start the conversation