About this demonstration
The problem
Product behavior exists, but the weekly Sales and Customer Success queue is late, noisy, over capacity, or unexplained. One lead score is often the wrong abstraction: it collapses fit, product value, and buying intent into a single opaque number.
The intervention
Product Usage Scoring & Routing is an explainable weekly routing application. It separates fit, product usage, and buying intent; applies visible gates before any human action; routes the right accounts to the right owner with a real SLA; and compares the same accounts under a naive combined score so the difference is legible.
Northfield Software is the fictional vendor and Northfield Incident Management is its fictional product, supplying believable product signals. The primary surface is the weekly routing queue in the Work Queue.
Method
Every account is scored on three separate 0–100 dimensions — fit (ICP and firmographics), product usage (Northfield signals), and buying intent (pricing, SSO, security, and admin activity) — under a deterministic, versioned policy (northfield_v1). Before any human action, visible gates pick a context-specific play: hand raiser, acquisition sales-assist, monitor, self-serve, manual review, or expansion — each with an owner persona and SLA. The naive comparator (combined_score_naive_v1) collapses the same scores into one number and routes any account scoring at least 60 into a single generic Sales queue, with no gates, no hard blocks, and no prospect/customer distinction.
The 120 synthetic accounts (80 prospects, 40 customers) are generated from a fixed seed. Latent fit, realized value, and commercial readiness are drawn first; observable attributes and events derive from them; outcomes are sampled from the latent variables plus bounded noise — never from the displayed policy. The precision, recall, false-positive rate, and routed-yield metrics in the queue and Policy views compare those methods on the same accounts and capacity.
Architecture
TanStack Start app on Cloudflare Workers -> Worker API -> pure decision-engine package -> D1 audit/state -> Cloudflare Workflow -> HubSpot company/contact/owner/task HubSpot company card -> authenticated Cloudflare endpoint -> latest scores, signals, gates, and run link
Cloudflare is the decision and execution layer: the Worker API persists runs to D1 and triggers a durable, idempotent Workflow that syncs the designated fictional account to HubSpot. HubSpot is only the operational CRM destination. Locally and in the preview the sync runs through a deterministic fake adapter — the real HubSpot test account is used only when write credentials are configured.
HubSpot proof
One designated action — Approve and sync — persists a run and executes the fictional company, contact, association, and follow-up task through the configured HubSpot adapter. It is idempotent (reruns never duplicate records), creates a task only when the play requires one, and never sends outreach. Synthetic contacts omit email entirely and are identified by fictional name plus a unique usage_routing_person_id. The read-only HubSpot company card authenticates against the same application state; the Routing Log shows the truthful pending/completed CRM states.
All CRM records live in a dedicated HubSpot developer test account and contain fictional data only. No HubSpot tokens, portal identifiers, or external ids are exposed to the browser or the repository.
Limitations
All people, companies, usage, and outcomes are fictional or synthetic.
- Scores, gates, and outcomes are expert-defined demonstration hypotheses, not validated predictors — never real business efficacy.
- The synthetic outcome comparison is illustrative. The naive queue’s routed yield at the default capacity of 12 is a small-sample artifact, not evidence the naive policy is better.
- The gated policy is designed to provide context-specific plays, hard blocks, ownership, SLAs, rejected alternatives, and explainability — not to claim universal predictive superiority.
- The naive comparator is a transparent educational construct, not a claim about any real company’s former policy.
- There is no authentication, no real incident data, and no outreach: the sync creates one fictional task at most.
Source
Public repository: github.com/HanifCarroll/product-usage-scoring-routing. Published case study: hanifcarroll.com/case-studies/product-usage-scoring-routing.
Authorship and next step
Designed and built by Hanif Carroll as proof that product behavior can be connected to explainable revenue action and HubSpot operations — without an opaque universal score.
If product or customer signals are reaching HubSpot too late — or without enough context — I can review one workflow and return a written map of the leaks, risks, and the smallest useful fix.