Back to the build library
Agencies
Standard

Agency Lead Qualification and Routing

Inbound gets answered in minutes, qualified by BO against a written scorecard, then routed to the closer whose specialism and capacity actually fit.

Industry
Agencies
Build effort
Standard
Typical time to launch
1–2 weeks
On this page
The problemWhat gets builtHow it runsAutomations in detailWhat changesBefore you start
Want this built for you?

Bring your stack to a call and we will scope it against how your business actually runs.

Book a call
01

The problem

An agency's inbound is a mixed bag arriving at random hours. In one morning you get a serious prospect with a real budget and a named project, a competitor doing reconnaissance, a student looking for dissertation help, someone who wants a logo for the weekend, and a referral from a past client that is worth more than everything else combined. All five hit the same form, the same inbox, the same phone. The agency's response to all five is identical: whoever sees it first replies when they get a moment.

Two things then go wrong, and they compound. The first is speed. Inbound inquiries decay fast, and a reply the next morning competes against the two agencies who answered within the hour. The serious prospect is almost always shopping, and the agency that gets into conversation first sets the frame for the whole evaluation. The second is fit. Even when the reply is fast, it goes to whoever was free rather than to whoever is right. The performance specialist takes a brand strategy inquiry, the junior takes the biggest opportunity of the quarter because they happened to be on duty, and the senior closer spends forty minutes on a call that a two-question form would have filtered out.

The leak shows up in three places. Qualified opportunities are lost to response time, which never appears in any report because nobody logs the deals that quietly went elsewhere. Senior capacity is consumed by unqualified calls, so the pipeline looks busy while the win rate falls. And because nothing is scored or captured consistently, the agency cannot tell which channels produce real work and which produce noise, so marketing spend keeps flowing to the source that generates the most forms rather than the most clients. Almost every agency can describe its ideal client in conversation; almost none has that description written down as a scorecard the system can act on in the first five minutes.

02

What gets built

The scorecard, written first

Before any workflow exists, the agency has to write down what a good lead is. Not describe it - write it, as weighted criteria with thresholds. Service fit, company size band, self-reported budget band, timeline, decision authority, geography and whether an incumbent agency is in place. Budget bands are defined with the client and stored as band labels only, never as amounts in any message. This document is the build. Everything after it is plumbing.

Pipeline and stages

One pipeline, New Business. Short, because long pipelines in agencies get abandoned.

  • New Inbound - captured, first touch not yet sent. A record should spend seconds here.
  • Qualifying - BO in conversation, or the qualification form out.
  • Routed - scored, banded and assigned to a named closer with an SLA clock running.
  • Discovery Booked - a call on a real calendar.
  • Discovery Held - call happened, outcome captured.
  • Proposal Out - scope agreed, document sent.
  • Negotiation - terms or scope being worked.
  • Won - handed to delivery and onboarding.
  • Not Now - real fit, wrong timing, with a dated revisit.
  • Disqualified - with a reason. This stage is a reporting asset, not a bin.
  • Unresponsive - went cold before qualification completed.

Calendars

  • Quick Fit Call - 15 min - held by the new business coordinator. Where mid-band and unclear leads go, so no senior time is spent qualifying.
  • Discovery Call - 30 min - routed by service specialism. One calendar per service line, each with its own closer pool.
  • Strategy Session - 45 min - top-band leads only, senior closers, with a longer pre-call brief.
  • Referral Priority - 30 min - a separate calendar with wider availability and shorter notice, because referrals should never wait for a generic slot.

Custom fields

  • Source: lead_source, utm_source, utm_campaign, landing_page, form_variant, first_touch_channel, referral_source_contact, repeat_inquiry.
  • Company: company_name, website_url, company_size_band, industry_vertical, geography, incumbent_agency.
  • Need: service_interest, secondary_service_interest, pain_primary, pain_notes, timeline_to_start, budget_band, budget_source, decision_role, decision_makers_count, procurement_required.
  • Scoring and routing: lead_score, lead_band, icp_fit, routing_reason, assigned_closer, closer_specialism, assignment_method, reassignment_count.
  • Speed: inquiry_received_at, first_touch_at, speed_to_lead_minutes, sla_first_touch_due, sla_breached, qualified_at, booked_at.
  • Outcome: discovery_outcome, proposal_sent_date, proposal_status, disqualify_reason, not_now_reason, revisit_date, lost_reason, lost_to.

Tags

  • Source: inbound, source-[channel], referral, repeat-inquiry, existing-client, after-hours.
  • Need: svc-[service_code], timeline-now, timeline-quarter, timeline-exploring, has-incumbent.
  • Band: band-a, band-b, band-c, icp-high, icp-medium, icp-low.
  • Routing: routed-[closer], awaiting-routing, sla-breach, reassigned, unassigned-capacity.
  • Disqualification: dq-service, dq-budget, dq-geo, dq-size, dq-student, dq-vendor, dq-competitor, dq-spam.
  • State: not-now, unresponsive, nurture-active, do-not-contact, sms-opt-out.

Forms and capture

  • Short inquiry form - name, work email, company, one free-text line on what they need. Four fields. Every extra field on the public form costs you qualified inquiries; the qualification happens after capture, not before it.
  • Qualification form - sent by BO or linked from the first reply. Service, timeline, budget band as a picklist with band labels, company size band, role in the decision, whether an agency is currently in place, geography. Six to eight questions, one screen, progress indicator.
  • Disqualification capture - internal, one field with a required reason from the fixed list. Mandatory before a record can move to Disqualified.
  • Discovery outcome form - closer-facing, filled immediately after the call. Outcome, scope, next step, date, and the real reason if it is not proceeding.
  • Inbound call capture - voice routing takes name, company and service interest, then routes live or captures a callback request with the same fields the form would have captured.

BO and the guardrails

  • BO may: respond within seconds on web chat, SMS and email, ask the qualification questions conversationally in a sensible order, write every answer to its field, explain the agency's service lines and process, send relevant case material, offer the correct calendar for the band and specialism, and book the call.
  • BO may not quote a price, a rate, a retainer figure, a day rate or a range, and may not confirm whether a budget band is enough. The honest line is that scoping sets the number and that the call is where it gets discussed, with a pointer to bookings.appbo.io. No exceptions - a figure from an assistant becomes an expectation the agency has to argue with later.
  • BO may not promise results, timelines for delivery, or capacity to start by a given date.
  • BO may not disqualify anyone. It gathers the answers; the scoring workflow bands them and a human signs off every disqualification. An AI telling a prospect they are not a fit is a reputational risk with no upside.
  • BO escalates immediately on: an existing client with a service issue, anything that reads as a complaint or legal matter, press or analyst inquiries, and anyone who asks to speak to a person. The last one is absolute and unconditional.
  • BO identifies itself as an assistant when asked, plainly, and never claims to be a named member of staff.

Numbers and channels

  • A dedicated new business number with voice routing: a short menu by service line during business hours, straight to the duty closer's mobile for top-band callers, and a capture-and-callback flow out of hours that still creates the record and starts the SLA clock at the next business-hours boundary.
  • SMS on the same number for first touch where a mobile was given, because an SMS inside five minutes outperforms an email inside five minutes on reply rate for inbound.
  • Email from a monitored new business address with replies threading into the conversation so BO and the closer see one history.
  • Web chat on the site with BO live, and the chat transcript written to the record so the closer reads the actual words rather than a summary.
  • Internal notifications in whatever the team already lives in, such as Slack, for routing and SLA alerts. One channel for new qualified leads, a separate one for SLA breaches, so breaches are visible rather than buried.
03

How it runs, step by step

One inbound inquiry, form submission to booked discovery call, in about eleven minutes.

  1. The form comes in at 21:40. A head of marketing at a mid-sized retailer submits four fields from a paid search landing page. The capture workflow writes inquiry_received_at, lead_source, utm_source, utm_campaign and landing_page, applies inbound, source-paid-search and after-hours, and creates the opportunity in New Inbound.
  2. First touch goes out in under a minute. An email and, because she gave a mobile, an SMS: her name, the agency's name, an acknowledgement of what she asked for in her own words, and one question back. Not a brochure. Out of hours, the message says plainly when a human will be available and offers to get the details sorted now.
  3. She replies at 21:44. BO picks it up immediately, moves the record to Qualifying, and asks the questions in order: what she needs, by when, who else is involved, what is in place today, and the budget band as a picklist. Conversationally, two at a time, not an interrogation.
  4. Every answer is written to a field. service_interest is paid media, timeline_to_start is this quarter, decision_role is recommender with a CFO sign-off, incumbent_agency is yes, budget_band is the upper band, company_size_band is mid-market.
  5. She asks what it costs. BO does not answer with a number. It explains how the agency scopes, says the figure comes out of the first conversation, and offers slots. This is the moment most chat implementations break trust; declining cleanly keeps it.
  6. Scoring runs on form completion. Service fit plus upper budget band plus a named quarter plus mid-market size gives a score above the band-A threshold. lead_band becomes A, icp_fit high, and routing_reason is written as a readable string so the closer knows why they got it.
  7. Routing picks a person, not a queue. Band A plus paid media specialism narrows to two senior closers. Capacity check: one is at their open-opportunity ceiling, so it assigns the other. assigned_closer, closer_specialism and assignment_method are written, routed-[closer] applies, stage moves to Routed, and sla_first_touch_due is set to 30 minutes after business hours open.
  8. BO offers the right calendar. Because she is band A, it offers the Strategy Session calendar with that specific closer's availability, not a generic round robin. She books 11:00 Thursday. booked_at is written, stage moves to Discovery Booked, and every chase sequence stops.
  9. The closer wakes up to a brief, not a lead. At 08:00 she has a notification with the full transcript, every field, the band, the routing reason, the referring campaign, and the company's website. She has not had to ask a single qualifying question and the call is in two days.
  10. Reminders run themselves. Confirmation on booking, email at 24 hours with an agenda and what to bring, SMS at 1 hour with the joining link. Reschedule is one click, offered deliberately.
  11. The call happens and the outcome is captured. The closer fills the discovery outcome form: proceeding to proposal, scope agreed, CFO to be included. discovery_outcome and the next step date are written, stage moves to Proposal Out.
  12. Proposal follow-up is automated, politely. Day 2 a short check that it arrived and whether anything needs clarifying. Day 5 a specific question about the one thing most prospects query. Day 9 a direct ask for a decision date. Then it stops and becomes a human's task - automated chasing past three touches reads as desperation.
  13. Either way, the record ends cleanly. Won moves to onboarding with every captured field carried over, so delivery starts with context. Lost requires lost_reason and lost_to before the stage will move, which is how the agency finds out six months later that it keeps losing the same kind of deal to the same competitor.
  14. The channel gets credited. Because utm_campaign was captured at second zero and carried all the way to the outcome, the weekly report shows which campaign produced a band-A opportunity rather than which produced the most forms.
04

Automations in detail

Eight workflows. Workflows 1 and 5 are the ones that make or break the build - speed, and the escalation that enforces it.

1. Instant Capture and First Touch

Trigger: any inbound capture event - inquiry form, chat conversation started, inbound call completed, inbound email to the new business address, or a paid lead form.

Steps, with no waits before step 4:

  1. Create or match the contact. Match on email first, then on domain plus name, so a second inquiry from the same company attaches to the existing record and applies repeat-inquiry rather than creating a duplicate.
  2. Write inquiry_received_at, lead_source, utm_source, utm_campaign, landing_page, form_variant. Apply inbound and source-[channel].
  3. Check for an existing client or open deal. If found, apply existing-client, route straight to the account owner with a priority task, and skip the rest of this build entirely.
  4. Branch on business hours. In hours: send first touch immediately and notify the duty closer. Out of hours: send first touch immediately anyway, but with honest framing, and set sla_first_touch_due to 30 minutes after opening.
  5. First-touch email, within 60 seconds: "Hi [first name], thanks for getting in touch about [their own words from the form]. I'm BO, [agency]'s assistant - I'll get the details together so [closer or the team] can come to you with something useful rather than a list of questions. Two quick things: [first qualifying question]?" Writes first_touch_at and first_touch_channel.
  6. If a mobile was given, send an SMS in parallel: "Hi [first name], BO here from [agency] - got your inquiry about [service]. Quickest way to get you to the right person is two questions, or grab a slot straight away: [link]. Reply STOP to opt out."
  7. Calculate speed_to_lead_minutes. Move the record to Qualifying.
  8. Post to the internal new-leads channel with the raw inquiry text, the source and the campaign.

Branches: an obvious spam or vendor pattern - a free email address with a generic pitch, a known vendor domain, a link-building request - applies dq-spam or dq-vendor, sends nothing, and goes to a review queue rather than to Disqualified. Never auto-reply to suspected spam, and never auto-delete it either.

Stop conditions: do-not-contact, or an existing-client match.

2. BO Conversational Qualification

Trigger: any inbound reply on any channel while the record is in Qualifying.

Question order, two at a time, never all at once:

  1. What are you trying to achieve, and which service does that point at? Writes service_interest, pain_primary, pain_notes.
  2. When would you want to start? Writes timeline_to_start and applies timeline-now, timeline-quarter or timeline-exploring.
  3. Is anything in place at the moment, in-house or with an agency? Writes incumbent_agency, applies has-incumbent.
  4. Who else is involved in deciding? Writes decision_role, decision_makers_count, procurement_required.
  5. Roughly what band have you set aside, offered as a picklist of band labels? Writes budget_band and budget_source as self-reported.
  6. How big is the team or business? Writes company_size_band, geography, industry_vertical, enriched from website_url where possible.

Branches:

  • A pricing question at any point: decline the number, explain scoping in one sentence, offer the calendar. Then continue the question set. Never let a pricing question end the conversation.
  • Three or more questions answered is enough to score. Do not block on the full set - a partial qualification that routes beats a complete one that never finishes.
  • A request for a human, a complaint, a legal or press matter: stop the question set, apply the escalation tag, notify a named person, and tell the prospect a person is coming.
  • If after two exchanges BO cannot determine service_interest, stop asking and offer the Quick Fit Call instead. Ambiguity is a human's job.

Steps on completion: write qualified_at, hand to workflow 3, and offer the calendar workflow 4 selects.

Stop conditions: booking made, opt-out, escalation, or 5 days with no reply, which hands to workflow 7.

3. Lead Scoring and Banding

Trigger: qualification form submitted, or BO writing the third qualifying field.

Scoring, additive. Tune the weights with the client, keep the shape:

  • Service fit: core service 30, adjacent service 15, service not offered minus 50. A negative weight here is deliberate - it should dominate.
  • Budget band: top band 30, middle band 20, lowest band 5, below the floor minus 40.
  • Timeline: within 30 days 25, this quarter 15, exploring 5, no timeline 0.
  • Decision authority: decision maker 20, recommender 10, researching on someone's behalf 0.
  • Company size band: in the target bands 15, above 10, below the floor minus 20.
  • Geography: served 10, outside the served area minus 40.
  • Source: referral 25, repeat inquiry 15, organic or direct 10, paid 5, cold list 0.
  • Incumbent agency with a named frustration: 10. Contrary to instinct this is a positive - they have budget, a process, and a reason to move.

Steps:

  1. Write lead_score, then lead_band: A at 80 or above, B at 50 to 79, C at 20 to 49, review below 20.
  2. Write icp_fit and routing_reason as a readable sentence naming the three biggest contributors, so a closer can see at a glance why this landed with them.
  3. Apply the band tag and hand to workflow 4.
  4. Any single disqualifying condition - service not offered, outside geography, below the size or budget floor - routes to workflow 8 for human sign-off rather than to routing. The score alone never disqualifies.

Stop conditions: none. Every record gets a band, including the ones heading for disqualification, because banding is what makes the reporting work.

4. Routing and Assignment

Trigger: lead_band written.

Steps, evaluated in strict order:

  1. Named-owner override: if referral_source_contact names an existing client, or the record matches a known account, assign that account's owner regardless of everything else. Relationship beats routing logic every time.
  2. Specialism filter: reduce the closer pool to those whose closer_specialism covers service_interest.
  3. Band filter: band A to the senior pool, band B to the full pool, band C to the coordinator.
  4. Capacity filter: drop anyone at or above their open-opportunity ceiling, or marked out of office. If the pool empties, widen to adjacent specialisms and apply unassigned-capacity so the gap is visible.
  5. Round robin across whoever remains, weighted by current open count rather than strictly in turn.
  6. Write assigned_closer and assignment_method, apply routed-[closer], move to Routed, set sla_first_touch_due: 15 minutes for band A in hours, 60 minutes for band B, same working day for band C.
  7. Notify the closer directly, in chat and by SMS for band A, with the brief: name, company, service, band, routing reason, timeline, decision role, source, campaign, website and the full conversation transcript.
  8. Create the closer's task with the SLA time as the due time.
  9. Select the calendar: Strategy Session for band A, Discovery for band B, Quick Fit for band C, Referral Priority where referral is tagged. BO then offers exactly that one, with that closer's real availability.

Branches: out-of-hours band A also notifies the duty closer's mobile, if the agency has agreed that rota. Do not build it without that agreement.

Stop conditions: assignment complete, or the record going to workflow 8.

5. SLA Monitoring and Escalation

Trigger: scheduled, every 5 minutes, over every record in Routed with an open first-touch task.

Steps:

  1. At 50 percent of the SLA window, remind the assigned closer in chat. One line, no ceremony.
  2. At 100 percent with the task still open, apply sla_breached and sla-breach, write the breach time, and post to the SLA channel naming the closer, the lead and the band. Visible, not punitive.
  3. At 150 percent, reassign to the next closer in the pool, increment reassignment_count, apply reassigned, and notify both people. The lead moving matters more than whose lead it was.
  4. At 200 percent on a band-A record, escalate to the new business lead with a priority task and a direct notification.
  5. Daily at 17:30, send a digest to the new business lead: breaches today by closer, records still unactioned, and the median speed to first touch for the day.
  6. Weekly on Monday, send a summary: median and worst-decile speed to first touch, breach rate by closer, reassignment count, and band distribution.

Conditions: SLA clocks pause outside business hours for band B and C and resume at opening. Band A out of hours runs against the agreed out-of-hours window or waits until opening, depending on the rota. Pick one and make it explicit.

Stop conditions: first touch logged, or the record leaving Routed.

6. Booking, Reminders and No-show Recovery

Trigger: booking on any of the four calendars.

Steps:

  1. Write booked_at, move to Discovery Booked, cancel the first-touch task, and stop every chase sequence.
  2. Confirmation immediately: time, duration, who they are meeting with a one-line bio, the joining link, a three-bullet agenda and one thing to think about beforehand.
  3. Brief the closer with the full record, and for band A add a prompt to spend ten minutes on the prospect's site and the incumbent situation before the call.
  4. Reminder at 24 hours by email. Reminder at 1 hour by SMS with the joining link only.
  5. Attended: move to Discovery Held and require the discovery outcome form within 2 hours, with a task that chases the closer, not the prospect.
  6. No-show: within 10 minutes send "Hi [first name], [closer] is on the call if you still want to join: [link]. If something came up, grab another slot here: [rebook link] - no problem at all." Then a call task for the closer the same day.
  7. If no rebooking within 48 hours, one final message, then move to Unresponsive and hand to workflow 7. Two no-shows moves straight to Not Now without a third attempt.
  8. Proposal follow-up on moving to Proposal Out: day 2 a check that it landed, day 5 a specific question about scope, day 9 a direct ask for a decision date. Then stop and create a human task. Three touches, then a person.

Stop conditions: stage reaching Won, Not Now or Disqualified.

7. Unresponsive Chase and Recycle

Trigger: no inbound reply for 24 hours while in Qualifying or Routed.

Steps, rotating channel every touch:

  1. Day 1, SMS from the assigned closer by name: "Hi [first name], [closer] here from [agency]. You asked about [service] yesterday - still want to look at it? Happy to send something useful either way."
  2. Day 2, email with one genuinely relevant piece of case material for service_interest and no ask at all. The no-ask touch is the one that gets replies.
  3. Day 4, a call task for the closer. Band A gets two call attempts at different times of day.
  4. Day 7, email with a direct question: "Should I keep this open, or close it off for now? Either answer is helpful." Giving an easy exit produces more responses than another nudge.
  5. Day 11, final SMS. Then move to Unresponsive, apply unresponsive, and stop.
  6. Band A records only: after 30 days, one single re-approach referencing their original inquiry by name. One message.

Branches: any reply at any point returns the record to its prior stage and restarts qualification where it stopped, never from the beginning.

Stop conditions: any reply, any booking, opt-out, or six touches, whichever comes first. Six is the ceiling across the whole sequence.

8. Disqualification, Not-Now and Re-entry

Trigger A, disqualification: a disqualifying condition from workflow 3, or a closer requesting it.

  1. Create a review task for the new business coordinator, due in 4 working hours, with the disqualification capture form attached. No record is disqualified by a machine.
  2. On human confirmation, write disqualify_reason from the fixed list, apply the matching dq- tag, move to Disqualified, and suppress all sequences.
  3. Send one courteous close-out that is genuinely useful: say plainly that it is not a fit for the agency and, where possible, point at the type of firm that would suit. Referring work away is the cheapest reputation you will ever buy.
  4. Service-not-offered and size-below-floor records go to a light quarterly list only if the consent basis supports it. Student, competitor, vendor and spam records get nothing further, ever.

Trigger B, not now: discovery_outcome or a qualification answer indicating real fit with wrong timing.

  1. Move to Not Now, write not_now_reason and revisit_date from what they actually said, apply not-now and nurture-active.
  2. Go quiet. One useful email every 6 weeks, maximum, on the relevant service line. Nothing that reads as a chase.
  3. At 14 days before revisit_date, create a task for the original closer and send one message referencing the exact reason they gave: "You mentioned [reason] - is [month] looking more realistic now?"
  4. If the revisit date passes with no engagement twice, move to a once-a-quarter cadence and re-permission at 12 months.

Trigger C, re-entry: a new inquiry from a contact or company already on the pipeline.

  1. Apply repeat-inquiry, attach to the existing record, and add 15 to lead_score. A second inquiry is a real buying signal.
  2. Route straight to the previously assigned closer, bypassing round robin, and surface the whole prior history including why it stalled last time.
  3. Notify that closer directly with the previous not_now_reason or lost_reason front and center.

Stop conditions: do-not-contact stops every branch immediately and permanently.

05

What changes

What is different afterwards

  • Every inbound inquiry gets a real, personal response in minutes, at any hour, including the ones that arrive at 2am on a Sunday. Response time stops being a function of who is at their desk.
  • Qualification happens before a human is involved, so a closer's first conversation starts from the facts rather than from the first five minutes of discovery questions everyone hates asking.
  • Routing is by specialism and capacity, not by who is free. The person taking the call is the person most likely to win it, and the senior closers stop losing hours to leads that were never going to buy.
  • The agency finally has a written definition of a good lead that the system enforces. That document ends more internal arguments than the automation does.
  • Nothing goes cold silently. Every record is in a stage with an owner and a clock, and leads that stall are visibly stalled rather than quietly forgotten in an inbox.
  • Disqualification becomes data. Reasons are captured on a fixed list, so the agency can see that a third of its paid traffic is below the size threshold and fix the targeting rather than the follow-up.
  • Attribution works end to end. Campaign and source are captured at the moment of inquiry and survive to the won or lost outcome, so spend decisions are made on clients acquired rather than forms submitted.
  • Not-now leads stop being lost leads. A real fit with wrong timing gets a dated revisit instead of a nurture email every two weeks until they unsubscribe.

Metrics to watch

  • Median speed to first touch, measured from inquiry_received_at to first_touch_at, split by in-hours and out-of-hours. The core metric of the whole build. Use the median and also watch the worst decile.
  • Time to qualified - inquiry received to qualified_at.
  • Time to booked - inquiry received to booked_at.
  • SLA breach rate by closer and by day of week. Breaches cluster on Fridays and around holidays; the fix is capacity rules, not nagging.
  • Qualification completion rate - share of inbound that answers enough questions to be scored. If this is low the question set is too long or BO's tone is wrong.
  • Band distribution and band accuracy - of leads scored band A, what share actually reached proposal. If band A does not convert materially better than band B, the scorecard weights are wrong and need rewriting, not tuning.
  • Show rate by calendar - Strategy Session versus Discovery versus Quick Fit. A low show rate on the senior calendar usually means leads are being over-banded.
  • Discovery to proposal rate, and proposal to won rate, both segmented by lead_source.
  • Disqualification reason distribution - the single most actionable report here, because each reason points at a different marketing fix.
  • Source quality, not source volume - band-A opportunities and won clients per source, next to form volume per source. The gap between those two columns is usually the most expensive thing in the agency.
  • Senior closer time per won client - calls held divided by clients won, for the senior pool. This should fall, and it is the clearest measure of whether the filtering works.
  • Reassignment rate - how often routing gets it wrong and a record moves closer. High reassignment means the specialism mapping needs work.
  • Lost-to analysis - lost_to counts over a quarter, which turns anecdote about competitors into something you can act on.
06

Before you start

Decisions to make before building

  • Write the scorecard, with weights and thresholds, and get the agency's principals to sign it off. Expect disagreement - that is the point. A scorecard nobody argued about has not been tested.
  • Define the band thresholds and what each band earns: which calendar, which closer pool, what response time. Band A should be scarce enough that it genuinely means something.
  • Map service lines to closer specialisms explicitly, including who covers what when someone is away. Write the fallback order; do not leave it to a default round robin.
  • Set the capacity ceiling per closer as a number of open opportunities. Without it, routing will stack leads on your best closer until their follow-up collapses.
  • Agree the SLA in writing: minutes to first touch in hours and out of hours, and what happens on breach. An SLA with no escalation is a wish.
  • Agree the disqualification reason list as a fixed, closed picklist. Free text here destroys the reporting value within a month.
  • Decide the out-of-hours posture. BO qualifying at midnight is usually right for agencies, but it must be transparent about when a human will pick it up, and never imply a person is responding.

Integrations and provisioning

  • Website forms and chat widget wired to the platform with UTM and landing page capture on every submission. Test that the parameters actually survive the submission - they very often do not.
  • A dedicated new business number with voice routing configured, plus every closer's mobile for live transfer, tested in and out of hours.
  • Calendar connections for every closer with real availability, buffers, and a minimum notice that matches how the team actually works. A calendar showing a slot in twenty minutes will be missed.
  • Team chat integration such as Slack for routing and breach notifications.
  • Email authentication on the sending domain with SPF, DKIM and DMARC aligned, because a first-touch email in the spam folder is worse than no automation at all.
  • Proposal or e-signature tool connection if proposal status is to be tracked automatically rather than updated by hand.
  • Reporting sink or dashboard for the source-quality view, and a conversions-back feed to the ad platforms if paid is a material channel.

Messaging compliance

  • Complete A2P 10DLC brand and campaign registration for the new business number before the SMS first touch goes live, declared as the mix of conversational and marketing traffic it actually is. Unregistered traffic gets filtered, which silently destroys the speed-to-lead advantage this build exists to create.
  • Capture consent on the form itself for both email and SMS follow-up, with clear wording and the submission stored as evidence. Replying to someone's own inquiry is a strong basis in most places, but the consent language still has to be there and the record still has to prove it.
  • Include opt-out wording on the first SMS of any sequence, honor STOP and HELP automatically, and make sms-opt-out suppress every workflow rather than one.
  • Observe quiet hours for marketing and nurture messages. Do not observe them for a direct reply to an inquiry someone just submitted - that is a response to them, and delaying it to 8am loses the deal. Separate the two message classes in the platform so this distinction is enforced rather than remembered.
  • Record any calls only with the disclosure and consent the jurisdiction requires, and note that requirements differ sharply between one-party and all-party consent regions. If the agency takes calls from multiple regions, default to announcing recording on every call.

Transparency and data protection

  • Be straightforward that BO is an assistant. Do not give it a human first name that implies a staff member, and have it confirm what it is whenever asked. Agencies sell trust; getting caught pretending costs more than the automation saves.
  • Honor a request for a human immediately and unconditionally, at any point in any conversation.
  • The qualification data is commercially sensitive information about another business and about a named individual's role. Restrict who can see budget_band and pain_notes, and never let that data leak into an outbound marketing sequence.
  • Set a retention period for disqualified and unresponsive records and delete or anonymize on schedule. Holding every inquiry forever is a liability with no value.
  • Keep a lawful basis for the not-now nurture track, separate from the reply-to-inquiry basis. Someone who inquired once has not agreed to a year of monthly marketing, and the nurture sequence needs its own consent and its own unsubscribe.
  • Automated decision-making deserves a thought here: the scoring workflow bands people but never rejects them, which is why human sign-off on every disqualification is in the design rather than being a nicety.
  • Messaging consent, call recording, marketing permission, automated decision-making and data retention rules all vary by jurisdiction, and an agency with clients in several regions is subject to several sets. Confirm consent wording, recording disclosures, retention periods and the nurture basis with the client's own counsel before launch. Nothing here is legal advice.
Field notes

Build it with us.

Every build on this page is something we configure, test and hand over with the SOPs your team needs to run it.

Book a call