Late-stageData & Developer Infrastructure

Two years of holding an inbound routing chain together: scheduler, routing engine and two synced CRMs

Routing behaviour became explainable

SalesforceHubSpotChili PiperLeanData
Play leadKyleeGTM Architect · LeanScale

The problem

Every inbound lead crossed four systems before it reached a human: a web form, a meeting scheduler, a routing engine, and two CRMs kept in sync. Which sales pool a lead belonged to, commercial or enterprise, was decided by an inferred employee count that lived in several competing fields across leads, contacts, accounts and opportunities, populated by different sources with no agreed winner.

The play

  1. 1
    Treated routing failures as a standing operational queue, not a project

    Every reported misroute became a ticket carrying the record link and the routing engine's audit log for that record.

  2. 2
    Rebuilt segmentation around a single trustworthy employee-count signal

    Researched how each candidate field was populated, on which object, by which source, and which one the routing actually depended on. When the ceiling defining the commercial segment was raised, with a carve-out for one account type, the change was made in the scheduler and the routing engine together, in the same pass, rather than in one and then the other.

  3. 3
    Made ownership win over round-robin

    The most common failure was an account that already had an owner, with the scheduler round-robining the meeting to someone else anyway.

  4. 4
    Stopped duplicate opportunity creation at the source

    Added a check for an existing open opportunity before an opportunity is created from a booked meeting, and fixed the new-lead branch of the router so a lead already carrying a recent qualification date falls through to standard routing instead of down a second creation path.

  5. 5
    Fixed the qualification and exclusion rules

    Rewrote the disqualification logic after it was matching text anywhere inside an email address rather than at the domain, legitimate addresses were being excluded on a substring.

  6. 6
    Stood up SLA tracking and then actually monitored it

    Built alerting on unworked leads with the engagement detail and title in the alert body so a rep could triage from the alert, and excluded owners who shouldn't receive them.

  7. 7
    Built the ABM and nurture automation on top of the fixed foundation

    Personalized outbound built from an enrichment webhook, run through the marketing platform into a cold-email tool. Because the message copy was generated upstream and not always ready when the workflow fired, added email-readiness checks and copy safeguards so a contact cannot receive a send while a placeholder token is still unresolved.

What it moved

Routing behaviour became explainable

Reported misroutes could be traced to a named rule or router node using the engine's audit log and fixed there, instead of being corrected record by record.

Ownership rules stopped being overridden. Owned accounts, team accounts and lead-level ownership are now respected by the scheduler and the ownership-update automation, closing the most frequently reported failure class.

From a LeanScale case studyRead the full case study →

More from Kylee