Skip to content
RA — Rohit Agnihotri, home
Resume ↓

Operations · Techjockey · Shipped · 5 min read

Automated lead distribution: from a manual queue to minutes

How do you route every marketplace lead to the right vendors within minutes, and keep it fair to vendors who pay for leads?

The Lead Distribution Algorithm (v2.0, then v3.0) replaced hand-picking vendors from a queue with a rules engine. It waits until each lead is complete, matches it to the best-fit vendors by category, and paces vendors fairly against what their plan promised. Lead assignment dropped from about 7 hours to about 3 minutes, the lead qualification rate doubled in HR, CRM and accounting categories, and every routing decision is logged in the CRM.

At a glance

Lead assignment time, manual queue → automated
7 hrs → 3 min
Lead qualification rate, HR, CRM and accounting categories
15% → 30%
First connect rate
+38%
Algorithm versions shipped
v2.0 → v3.0
Role
Product Manager · User pod lead
Context
Shipped at Techjockey
Format
Internal system · rules engine
Key concepts
Rules engine · Category matching · Credit-based plans · Fair pacing · Chatbot · CRM activity logs

The problem

Techjockey is a software marketplace: buyers leave their details on a product page, and vendors on paid plans buy credits to receive those leads. When a lead landed on a product without a paid plan, it waited in a queue until someone picked vendors for it by hand: too slow for buyers, whose intent cooled while they waited, and with no consistent way to be fair to the vendors who had paid.

How I made the call

Six stages, from the manual queue to the result. The schematics are illustrative; the only numbers on them are real results.

  1. Leads on products without a paid plan went into a queue, and someone picked vendors for each one by hand. Assignment took about 7 hours, so by the time a vendor called, the buyer's intent had cooled. And hand-picking had no consistent way to spread leads fairly across vendors who had paid for them.

    Evidence

    Schematic
    Leads on products without a paid plan~7 hrs to assign
    1. Lead 1
    2. Lead 2
    3. Lead 3
    4. Lead 4
    5. Lead 5
    6. Lead 6
    7. Lead 7
    8. Lead 8
    Someone picks vendors by hand
    • Vendor 1
    • Vendor 2
    • Vendor 3
    • Vendor 4
    Slow
    Leads sat for hours, so buyers had cooled by the time a vendor called.
    Uneven
    No consistent way to spread leads across vendors who had paid for them.
  2. Each vendor's plan promises a number of leads over a period. So instead of taking turns, the system paces every vendor against where their plan says they should be by now: vendors who are behind catch up, vendors who are ahead ease off. Speed comes from automating the queue; fairness comes from that one principle.

    Insight

    Schematic
    Round-robinEveryone gets the next turn, whatever they paid for.PacingLeads flow to each vendor in step with what their plan promised.
    • Vendor 1Behind plan · catches up

    • Vendor 2On pace

    • Vendor 3Ahead of plan · eases off

    • Vendor 4Behind plan · catches up

    Pace against the plan, not the turn

    Nobody who paid is starved, and nobody is flooded.

  3. Each rule gives up a little speed, reach or volume to earn trust: from vendors, who pay per lead, and from buyers, who shouldn't be called by a crowd.

    Options & trade-offs

    • Not: Route on arrival

      Wait until it's complete

      Chatbot leads arrive a detail at a time

      Costs
      A little speed
      Buys
      No half-filled leads
    • Not: Send to every match

      Share with only a few vendors

      Closest matches first, then stop

      Costs
      Reach
      Buys
      No crowd calling the buyer
    • Not: No limit per vendor

      A daily cap per vendor

      A large balance is spread over time

      Costs
      Volume for big balances
      Buys
      No balance burnt in a day
    • Not: Resend to the same vendor

      No repeats

      One buyer reaches one vendor once

      Costs
      Reach
      Buys
      No paying twice for one buyer
  4. The engine matches each lead to vendors by category. It tries the closest match first and widens only while it still needs vendors. At each step it drops vendors who don't qualify, because the buyer doesn't meet their criteria, they have reached today's cap or they already had this lead, and paces the rest against their plan.

    Decision

    Schematic

    Lead category → vendor categories

    1. Closest match first
    2. Widen only if needed
    3. Stop once a few vendors are found

    At every step

    • Vendor's own criteria
    • Under today's cap
    • No repeats
    • Fair pacing

    Categories outside ALDS still go to a person.

  5. Every decision writes an activity log entry that can be pulled up in the CRM. When sales or a vendor asks "why did this lead go there?", the answer is in the log, not someone's memory.

    Explainability

    Schematic

    “Why did this lead go there?”Sales or a vendor, any time later

    CRM activity log · one lead

    1. Lead complete, category known
    2. Closest match: vendor foundmatch
    3. Closest match: vendor skipped, cap reached
    4. Wider match: vendor foundmatch
    5. Enough vendors found, lead shared

    An illustrative log. Every decision writes a line, so the answer is in the log, not in someone's memory.

  6. Lead assignment went from about 7 hours in a manual queue to about 3 minutes, and part of that is a deliberate wait so no lead is routed half-filled. Lead quality rose with it: the lead qualification rate doubled, from 15% to 30%, in HR, CRM and accounting categories, and the first connect rate rose 38%.

    Result

    To scale

    7 hrs → 3 minlead assignment time

    Manual queue~7 hrs
    ~7 hrs
    ALDS~3 min
    ~3 min

    That sliver includes the deliberate wait for a complete lead.

    Lead qualification rate, HR, CRM and accounting categories
    15% → 30%
    First connect rate
    +38%

How a lead flows through ALDS

ALDS (the automated lead distribution system, shipped as Lead Distribution Algorithm v2.0 and then v3.0) runs as soon as a lead is complete. A person only gets involved when a category is outside its scope.

  1. Lead captured

    The buyer leaves their details on a product page or through the chatbot.

  2. Already spoken for?

    A lead on a product with a paid plan already belongs to that vendor. Every other lead goes to ALDS.

  3. Wait until it's complete

    The chatbot collects details one at a time, so routing waits until the lead is whole. A short, deliberate pause beats routing a half-filled lead.

  4. In scope?

    If ALDS doesn't cover the lead's category, a person routes it, as before.

  5. Match, closest first

    The engine looks for the best-fit vendors by category, starting with the closest match and widening only while it still needs vendors.

  6. Check and pace

    Vendors who don't qualify drop out: the buyer doesn't meet their criteria, they have reached today's cap, or they already had this lead. The rest are paced against what their plan promised.

  7. Share with a few, and log it

    The lead goes to only a few vendors, then into the usual sales workflow. Every decision along the way is logged in the CRM.

What each rule protects

Each rule gives something up, a little speed, reach or volume, to protect a buyer or a vendor.

  1. Fair pacing

    Fairness
    • Each vendor is paced against what their plan promised by now, not served in turn. Vendors behind their plan catch up; vendors ahead of it ease off.
    Impact
    Nobody who paid is starved, and no single vendor soaks up the flow. Trade-off: a vendor who is ahead of plan may wait for leads they would have liked.
  2. Daily cap per vendor

    Guardrail
    • Each vendor has a ceiling on how many leads they receive in a day.
    Impact
    A large balance can't be burnt in a day, and smaller vendors still get their share. Trade-off: some volume for the biggest buyers of credits.
  3. No repeats

    Lead quality
    • The same lead isn't sent to the same vendor twice.
    Impact
    Vendors don't pay twice for one buyer, and buyers aren't chased twice by the same company. Trade-off: reach.
  4. Complete before routing

    Data integrity
    • Routing waits until every detail of the lead is saved. Chatbot leads arrive a detail at a time, so routing on arrival would send half a lead.
    Impact
    No half-filled lead reaches a vendor. Trade-off: assignment takes minutes, not zero.
  5. Vendor acceptance criteria

    Fit
    • When a vendor has set qualifying questions, a lead must meet them before it can be sent to that vendor.
    Impact
    Vendors say which buyers they want, without anyone screening leads by hand.
  6. A few vendors, then a fallback

    Coverage
    • Each lead goes to only a few vendors. If no close match exists, the engine widens the match; categories outside its scope go to a person.
    Impact
    Every in-scope lead is put to work without a crowd calling the buyer. Trade-off: reach.

What I took away

Speed and fairness needed different fixes. Speed came from automating the queue, with one deliberate exception: a short wait so no lead is routed half-filled. Fairness came from one principle, pacing each vendor against what their plan promised. Writing every rule down, and logging every decision, is what turned distribution from someone's judgement into a system sales and vendors can question and trust.

Want to talk through this?