We built a production AI-calling workflow on top of Follow Up Boss that: checks TCPA and National DNC status before dialing, records consent, runs warm transfers with call-whisper, applies deterministic booking rules to avoid false bookings, and syncs outcomes back into Follow Up Boss without polluting pipelines. If you are looking to automate Follow Up Boss calling safely, this is the implementation we shipped and the compliance guardrails that made it hold up in production.
AI calling for Follow Up Boss is: an orchestration layer that reads scoped leads from FUB, enforces consent and DNC rules, connects an AI voice agent for first contact, warm-transfers qualified conversations to humans, and writes traceable call notes and dispositions back to FUB.
The problem it solves
AI dialers can move the needle on speed-to-lead, but without TCPA and DNC gates they create risk. Without booking guards and warm transfer rules they also create bad data: false bookings, wrong calendars, and duplicate notes.
| Manual workflow | Automated with compliance |
|---|---|
| Agent skims FUB, guesses who to call, often outside quiet hours | Lead scope is explicit. Only compliant numbers are dialed during configured hours |
| No proof of consent. DNC checked ad hoc | Consent ledger stored with timestamp, source and IP. National and internal DNC gates run pre-dial |
| Agent tries to qualify and book while multitasking | AI agent qualifies. Warm transfer hands off live when criteria match |
| Calendar collisions and AI hallucinated bookings | Deterministic booking guard checks event type, slot, and intent before confirming |
| Notes vary by rep. Some calls never logged | Standardized outcome schema appended to FUB on every leg |
Cited facts for the risk picture:
- The TCPA allows $500 per violation and up to $1,500 for willful violations (source: Federal Communications Commission: https://www.fcc.gov/rules-regulations-telemarketing-and-robocalls).
- The National Do Not Call Registry applies to telemarketing calls to residential numbers with limited exceptions, and businesses must honor internal do-not-call requests for 5 years (source: Federal Trade Commission: https://www.ftc.gov/business-guidance/resources/complying-telemarketing-sales-rule).
How the automation works
We designed the system as a thin orchestration layer around your existing Follow Up Boss account. It enforces compliance first, then drives conversations, then writes clean data.
- Lead scope from Follow Up Boss: We read only the agreed stage or list segment to avoid unwanted outreach. In our real estate deployment we limited to WATCH-style segments so active deals were never touched.
- Consent and DNC gate: Before every dial we check an internal consent ledger, the National DNC, and your internal DNC list. We store proof: timestamp, source, IP or form record.
- AI voice agent with guardrails: The agent follows a bounded script: qualify, verify consent, offer a warm transfer. It never books on its own unless the booking guard passes.
- Warm transfer bridge: When the lead says yes and a rep is available, the system bridges the call and plays a short whisper so your rep knows context.
- Booking guard: If a calendar booking is requested, we apply deterministic checks so a misheard yes cannot create a meeting. More on the pattern below.
- Follow Up Boss write-back: Dispositions, summaries, and links to recordings are written into FUB in a single standardized format to prevent duplicates.
External compliance constraints matter during design:
- 11 US states require two-party consent to record calls. If you record, announce it and disable recording where required or announce and proceed only after consent (reference overview: https://www.dmlp.org/legal-guide/recording-phone-calls-and-conversations). Consult counsel for your states.
- Quiet hours and opt-out handling are part of the Telemarketing Sales Rule. Provide a simple opt-out and honor it promptly (source: FTC link above).
Step-by-step: how to build it
1) Scope the lead pool and quiet hours
Define exactly which contacts the system may call and when. In production we scoped to one stage and set quiet hours per timezone to avoid after-hours dials.
{
"leadScope": {
"stages": ["WATCH"],
"tags": ["reactivation-2026Q3"],
"exclude": { "hasOpenDeal": true, "doNotContact": true }
},
"quietHours": { "tz": "America/Los_Angeles", "start": "20:00", "end": "08:00" }
}Key point: keep the scope narrow at first. You can widen later.
2) Build the consent and DNC pre-dial gate
Capture consent at intake and verify pre-dial. We use an internal ledger and a DNC service before every call.
// consent-gate.ts
export async function canDial(phone: string, leadId: string) {
const consent = await consentLedger.lookup(leadId);
if (!consent?.granted) return { ok: false, reason: "no_consent" };
if (await dncRegistry.isNationalDnc(phone)) return { ok: false, reason: "national_dnc" };
if (await dncRegistry.isInternalDnc(phone)) return { ok: false, reason: "internal_dnc" };
return { ok: true };
}Gotcha: store proof of consent with timestamp and source. You will want this if a complaint arrives.
3) Add a warm-transfer bridge with call-whisper
Do not drop a qualified caller into a blind handoff. Whisper the context to the rep first.
// transfer.ts
export async function warmTransfer(activeCallId: string, repNumber: string, context: string) {
await telco.playWhisper(activeCallId, `Live transfer: ${context}`);
return telco.bridgeCall(activeCallId, repNumber);
}Tip: keep the whisper under 4 seconds so the prospect does not wait too long.
4) Enforce a deterministic booking guard
This is the piece that prevented false bookings in our real estate deployment. The AI never books unless all checks pass.
// booking-guard.ts
interface BookingIntent { confirmedYes: boolean; slotIso: string; type: "phone"|"in_person"; }
export async function tryBook(leadId: string, intent: BookingIntent) {
if (!intent.confirmedYes) return { ok: false, reason: "soft_yes" };
const slotFree = await calendar.isSlotFree(intent.slotIso, "Discovery Call");
if (!slotFree) return { ok: false, reason: "slot_taken" };
const last48h = await analytics.recentIntents(leadId, 48);
if (last48h.some(x => x.type === "book" && x.confirmedYes === false)) return { ok: false, reason: "ambiguous" };
const event = await calendar.createEvent({ leadId, when: intent.slotIso, title: "Discovery Call" });
return { ok: true, eventId: event.id };
}In production we tightened the LLM prompt and added this server-side guard. After those changes we observed no new false bookings.
5) Write standardized outcomes and recordings back to Follow Up Boss
Keep FUB clean. One write per call leg with a consistent schema avoids duplicates.
// fub-sync.ts
export async function saveOutcome(leadId: string, outcome: {
status: "no_answer"|"callback_set"|"live_transfer"|"booked"|"dnc";
summary: string;
recordingUrl?: string;
}) {
await fub.notes.append(leadId, `AI Call: ${outcome.status}\n${outcome.summary}`);
if (outcome.recordingUrl) await fub.files.attachUrl(leadId, outcome.recordingUrl);
}Note: do not invent new fields in your CRM. Use supported notes, tasks, and files so reporting continues to work.
6) Add vendor quota and overage guards
Text-to-speech and STT vendors often allow paid overages. Guard against silent billing events.
// quota-guard.ts
let cache: { until: number; ok: boolean } | null = null;
export async function checkTtsQuota() {
const now = Date.now();
if (cache && cache.until > now) return cache.ok;
const ok = await tts.vendorQuotaOk();
cache = { until: now + 10*60*1000, ok };
if (!ok) await campaigns.pauseAll("tts_quota");
return ok;
}In our voice-agent deployment we paused campaigns automatically when the provider crossed its plan threshold, then resumed after reset.
Where it gets complicated
- Two-party recording states: If you record, announce it and skip or stop when consent is withheld. There are state-specific rules and exemptions. Coordinate with counsel.
- TCPA vs internal DNC: The national list is not your only obligation. You must also honor your own internal do-not-call list and maintain it for 5 years.
- SMS consent is not call consent: Treat text and call separately. Record explicit consent for each channel and store the proof.
- Calendar collisions: Calendars drift. Always check the slot again server-side immediately before creating the event.
- LLM hallucinations: A confident yes is not always a yes. The booking guard above exists because a model can mishear. Server rules prevent damage.
- Vendor overages: Many TTS providers keep serving while billing overages. Add guards so your dialer pauses before a surprise invoice.
External facts for context:
- The Telemarketing Sales Rule requires honoring internal do-not-call requests for 5 years and maintaining your policies in writing (source: FTC TSR guide above).
What this actually changes
For a real estate brokerage running this system in production, the combination of a tightened classifier prompt plus a deterministic booking guard eliminated the false booking problem that appeared in early runs. Before the fix, 32 of 44 booking-class calls were false. After the fix, we observed no new false bookings. The dialer covered 3,130 of 3,130 callable leads and recorded 5,573 calls, with approximately a dozen real bookings reported during the observed period. We also added an automated pause when the voice provider crossed its text-to-speech plan threshold so overage charges could not silently accrue.
Those outcomes came from three structural choices: scope the lead pool to the right stage, gate every dial behind consent and DNC checks, and make booking a server decision rather than a model decision.
Frequently asked questions
How do you automate Follow Up Boss calling without violating TCPA?
Gate every dial: check consent, national DNC, internal DNC, and quiet-hours before calling. Announce recording where required. Store proof of consent with timestamp and source. We built these checks as a pre-dial step and block any call that fails.
Can the AI book appointments directly in my calendar?
Yes, but only through a booking guard. The agent proposes a time. The server confirms a hard yes, checks the slot and event type, and creates the event. If anything is ambiguous, the system defers to a warm transfer or human follow-up. This prevents false bookings.
How do warm transfers work in this setup?
When a lead qualifies and a rep is available, the system whispers context to the rep, then bridges the calls. If no rep answers in time, we set a callback task in Follow Up Boss and end politely rather than leaving the lead on hold.
How do call notes and recordings get into Follow Up Boss?
We write one standardized note per call leg and attach the recording link where available. Keeping a single, consistent format prevents duplicates and preserves reporting.
Can I run this for recruiting outreach too?
You can apply the same pattern: scoped stages, consent proof, warm transfer, and a booking guard. Recruiting has its own compliance context and opt-out expectations. The orchestration and guards stay the same.
How long does implementation take and what does it cost monthly?
A typical brokerage implementation lands in 2 to 4 weeks depending on calendar and telephony choices. Monthly costs are vendor usage plus light hosting. The expensive part is mistakes, which is why we invest in the consent, DNC, and booking guard rails up front.
If you want this running on your Follow Up Boss account with TCPA and DNC protections, we have already shipped it and supported it in production. See our related breakdown on the dialing stack in Follow Up Boss AI Calling: Stack and Setup. Or review our AI voice agents service and then book a 15-minute call. We will scope your exact guardrails before we quote anything.
Want us to build this for you?
Nine questions, about 90 seconds. You see the hours it is costing you, then pick a time. No pitch.
Get your free assessment