Lane-Classifier: deterministic routing for the two-lane marketplace

By Jason, Founder · Published · 2 min read · Wave 292

Summary

Wave 292C ships the Lane-Classifier: a pure-function deterministic router that decides Lane A (vetted-exclusive Tier-0 GC, tiered take-rate) vs Lane B (open marketplace, fairness rotation, take-rate-only) using permit, value, multi-trade, and regulatory-density signals. 67/67 tests green.

Article body

The two-lane marketplace lives or dies on whether the routing is deterministic. If a homeowner with a $35K kitchen renovation gets routed to Lane B today and Lane A next week for the same scope, every promise on the site collapses. Wave 292C is the classifier — a pure-function input/output module that takes a scope and returns either {lane: "A"} or {lane: "B"} with a confidence score and a per-signal rationale.

The signals are four: permit complexity (does the scope require a city permit, multiple permits, or HPOZ/LL97/PS overlay), project value (in cents, integer), multi-trade count (how many of plumbing/electrical/HVAC/structural/finish), regulatory density (the city has a multi-board approval pipeline, e.g., LA HPOZ + LADBS, NYC Co-op board + DOB, London Party Wall + Building Control). Each signal is computed independently and contributes a weighted score. Lane A threshold is calibrated from the spec at docs/PHASE-OPEN-MARKETPLACE-V2.md: project_value > $25K AND (permit_required OR multi_trade >= 2 OR regulatory_density >= 2). Below threshold, Lane B.

The classifier never calls an LLM. It is straight-line scoring code in lib/routing/lane-classifier.ts. The decision is reproducible byte-for-byte across the synthetic-QA suite (Wave 292J) and the production scoring path. We log every classification with its inputs and rationale to the dispatch log so we can later audit "why did this homeowner end up in Lane B" with full receipts.

A second module, lane-clarifier.ts, runs only when the classifier confidence is below 0.85. It generates a single follow-up question the homeowner can answer that flips the borderline signal — typically "is this a permitted job or a no-permit cosmetic refresh?" The clarifier is also pure-function; it does not call an LLM either. The escalation-detector module flags scopes that should bypass both lanes and route to L2 mediator (existing dispute, prior code violations, multi-party disputes); fewer than 0.5 percent of scopes hit that branch.

Lane B is the part competitors get wrong. Angi, Thumbtack, HomeAdvisor all charge contractors per lead in the small-tasks tier, which incentivizes overcounting and creates the per-lead-fee inflation cycle Hipages publicly acknowledged on their last earnings call. Lane B charges take-rate only — the contractor pays nothing until a job closes, and only as a percentage of GMV. The fairness rotation caps how often any one contractor appears in front of homeowners over a rolling window, so Lane B does not collapse into a winner-take-all that degrades supply quality.

The classifier ships gated behind LANE_CLASSIFIER_ENABLED so we can A/B against the legacy single-lane router during a 30-day soak. Telemetry: classification distribution, confidence-score histogram, override rate (homeowner manually requests the other lane), and conversion delta. We are looking for the override rate to be under 4 percent and conversion delta to be neutral-or-positive.

Sources & references

Commit attestation

Tests green
67
Files changed
5
Lines added
880
Waves
292
Author
jason

Commit SHAs are from the AskBaily private repository. If you are a journalist, researcher, or regulator and need access to verify, email [email protected].

Frequently asked

Is the lane decision negotiable?
The homeowner can override after seeing the classification with a one-click 'show me the other lane' request. We track override rate as a calibration signal — too many overrides means the threshold is wrong.
What take-rate does each lane charge?
Lane A is tiered by project value: 15% under $25K, 12% $25K-$100K, 10% $100K-$500K, 8% above $500K. Lane B is flat 10%. Both are take-rate only; no per-lead fees and no subscriptions.
Why is permit complexity weighted heavily?
Permitted scope correlates with a homeowner's appetite for an exclusive vetted GC. Cosmetic refreshes that do not touch structure, gas, or electrical typically fit a Lane B small-tasks contractor. The classifier respects that distinction so neither lane is mis-served.
← All postsRoadmapCommitmentsChat with Baily →