AI Front Office App Overview
The AI receptionist that answers chat, SMS, and phone calls for service businesses — qualifies the request, books the appointment, and hands the work to your operations system.
What is the AI Front Office App?
AI Front Office is the B2C front desk for a service business — the homeowner calling a plumbing company, the customer booking a salon appointment, the renter chatting in for a service request. The AI receptionist handles inbound on web chat, SMS, voice (phone), and web voice (browser mic), qualifies the request, and books the appointment — then hands the booked work to Field Service Suite (or Bookings, etc.) where operations actually delivers it.
It’s distinct from Mango GTM — that’s the B2B SaaS sales funnel for the tenant business itself; AI Front Office is the front desk for the tenant business’s own customers.
Core Value Proposition:
- 📞 Multi-Channel Receptionist — Chat, SMS, voice, and web voice — one agent, one knowledge base, one set of guardrails.
- ⏱️ Speed-to-Lead SLA — Track time-to-first-contact, warn at 25% remaining, breach-notify dispatchers when the window expires.
- 🛡️ Safety-First Rollout — Shadow mode, after-hours-only mode, and dispatcher-approves-all mode let you pilot without risk.
- 🔁 Closed-Loop Win-Back — TCPA-compliant SMS / email outreach to dormant customers, declined estimates, and missed calls.
At a Glance
| ⏱️ Setup Time | 📡 Channels | 🛡️ Safety Modes | 📱 Mobile Ready |
|---|---|---|---|
| ~30 minutes | Chat, SMS, Voice, Web Voice | 3 (after-hours, shadow, approve-all) | ✅ Yes |
Perfect For:
- 🛠️ Service businesses (plumbing, HVAC, electrical, salons) — Capture and book inbound that would otherwise miss the receptionist.
- 🌙 Teams with after-hours demand — Run AI after-hours, humans during the day, to catch jobs that would have voice-mailed.
- 📊 Operations leaders chasing speed-to-lead — Surface and break the SLA window before a competitor beats you to the call-back.
How It Works
┌─────────────────────────────────────────────────────────────────────────┐
│ INBOUND → BOOKED WORK ORDER │
├─────────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ CUSTOMER │─────▶│ AI RECEPT- │─────▶│ BOOKING │ │
│ │ CALLS / SMS │ │ IONIST │ │ REQUEST │ │
│ │ / CHATS │ │ (qualifies) │ │ (scored) │ │
│ └──────────────┘ └──────────────┘ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ FSS WORK │◀─────│ DISPATCHER │◀─────│ ROUTING + │ │
│ │ ORDER / │ │ REVIEW │ │ CONFIDENCE │ │
│ │ SERVICE- │ │ (or auto) │ │ CHECK │ │
│ │ TITAN JOB │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
Channel & Integration Map
┌─────────────────────────┐
│ AI FRONT OFFICE │
│ (Receptionist Agent) │
└────────────┬────────────┘
│
┌──────────┬──────────┬───────────┼───────────┬──────────┬──────────┐
▼ ▼ ▼ ▼ ▼ ▼ ▼
┌──────┐ ┌──────┐ ┌────────┐ ┌────────┐ ┌──────┐ ┌────────┐ ┌────────┐
│ Web │ │ SMS │ │ Voice │ │ Web │ │ FSS │ │Service-│ │ Win- │
│ Chat │ │(Twi- │ │ (Vapi+ │ │ Voice │ │ Work │ │ Titan │ │ Back │
│Widget│ │ lio) │ │ Twilio)│ │(brwsr) │ │Orders│ │ Sync │ │SMS/Eml │
└──────┘ └──────┘ └────────┘ └────────┘ └──────┘ └────────┘ └────────┘
Key Features
🤖 AI Receptionist (Multi-Channel)
The Agents::AiFrontOfficeReceptionistAgent runs across every inbound channel with the same toolbox and guardrails.
| Channel | Description |
|---|---|
| Web Chat | Public widget on book.{slug}.workforce.mangoapps.com |
| Inbound SMS | Twilio number → AI receptionist |
| Inbound Voice | Vapi + Twilio (phone), with phone-number binding |
| Web Voice | “Talk now” button on the chat widget — browser mic + Vapi |
Built-in safety:
- Pre-LLM topic gate — rejects off-scope and jailbreak attempts before they reach the model
- Per-conversation token + cost guardrails — hard cap (default 50,000 tokens / 200¢ per voice call); when exceeded the agent escalates to a dispatcher
- Hallucination scan on AI responses (range-only quotes, no fabricated commitments)
Use Case: A homeowner calls at 9pm with a burst pipe. The voice agent answers, qualifies “emergency leak,” collects the address, books the slot, and pushes the urgent BookingRequest to the on-call dispatcher’s mobile.
💡 Pro Tip: Enable Shadow Mode for the first week. The AI runs end-to-end and logs every conversation, but BookingRequests are tagged
shadowand hidden from dispatchers. Review the transcripts and confidence scores before flipping it live.
🛡️ Safety-First Rollout Modes
Three independent modes that compose — keep all three on during the pilot, peel them off as confidence builds.
| Mode | Effect |
|---|---|
| After-Hours Only | AI runs only when business hours are closed (per BusinessHoursService); humans handle business hours |
| Shadow Mode | AI runs end-to-end, but BookingRequests are created with status=shadow and hidden from dispatchers |
| Dispatcher Approves All | Every BookingRequest enters pending_review regardless of confidence — no auto-book |
💡 Pro Tip: Don’t disable all three modes at once. Order: drop “approves all” first (now confidence-gated auto-book is allowed), then “shadow,” then “after-hours” last when you trust the agent on live business-hours traffic.
📋 Online Booking & Dispatch
The booking pipeline is the core of the app — every channel feeds into it.
| Feature | Description |
|---|---|
| Online booking widget | Public form on the tenant subdomain (no AI conversation required) |
| BookingRequest | Per-request record with confidence score + auto_book_eligible flag |
| Service-area validation | Geocodes the address and checks against the tenant’s coverage zones |
| Customer match | By phone or address — duplicates collapse onto the existing customer |
| Dispatcher routing rules | DispatcherRoutingRule — service-type, zip, urgency match → route to the right dispatcher |
| Confidence floor | geocode_confidence_min (default 0.85) — below floor, never auto-book |
| One-click WorkOrder | Approved BookingRequest converts to a Field Service WorkOrder |
| ServiceTitan sync | Optional — push approved bookings to ServiceTitan as Jobs instead of creating FSS WorkOrders |
⏱️ Speed-to-Lead SLA
The AiFrontOffice::SpeedToLeadMonitorJob sweeps every open BookingRequest minute-by-minute and notifies dispatchers when the SLA window is at risk.
| Event | When |
|---|---|
| Warning | 25% of the window remains |
| Breach | 100% of the window has elapsed |
| Default window | 5 minutes (configurable) |
One-shot flags (sla_warning_sent, sla_breach_sent) ensure each event fires at most once per booking.
Use Case: A new lead lands at 9:42am with a 5-minute SLA. At 9:45:45 the dispatcher’s mobile pings — “1:15 left.” If unanswered, at 9:47am a breach notification fires and the lead is flagged red on the queue.
🚨 Urgent Booking Push + Sentiment Escalation
| Feature | Description |
|---|---|
| Urgent Booking Push | DispatcherUrgentBookingPushJob — mobile push to dispatchers when an emergency or same-day BookingRequest lands; skips when shadow mode is on |
| Sentiment Escalation | SentimentEscalationEvaluator — when the visitor shows sustained frustration (default: 2 consecutive negative turns), escalate to a dispatcher automatically |
| Voice Frustrated-Lost Tracking | Voice calls also get a post-call frustrated_lost OutcomeEvent for analytics |
🔁 B2C Win-Back Campaigns
Closed-loop outreach to customers who slipped through the funnel — dormant customers, declined estimates, missed calls.
| Feature | Description |
|---|---|
| Audience builders | Dormant customers, declined estimates, missed calls — all WinbackAudienceService-backed |
| AI-drafted copy | WinbackOutreachDrafter writes tenant-voice SMS / email |
| Outbound delivery | WinbackDeliveryService + WinbackOutreachMailer |
| TCPA-compliant consent | Opt-in tracked, STOP keyword honored, per-tenant suppression list |
| Outbound voice follow-up | Optional — OutboundCallScheduler schedules a follow-up call after a customer_declined_estimate decline (gated by outbound_voice_decline_followup_enabled) |
| Abandonment recovery | Optional — when a chat / SMS conversation is marked abandoned and a phone is on file, schedule an outbound recovery call |
| Per-phone rate limit | Default 3 outbound attempts per phone per 7-day window — hard cap across all trigger kinds |
🎙️ Call Coach (AI Scoring)
CallCoachService scores conversations on four rubric dimensions; CsrCallScorecard stores the result.
| Dimension | What it measures |
|---|---|
| Greeting | Did the rep open per the script? |
| Diagnosis | Was the problem qualified before any pricing or scheduling? |
| Booking attempt | Did the rep ask for the appointment? |
| Objection handling | How did the rep respond to pushback? |
Rubrics are tenant-configurable via CallCoachRubric.
📚 Knowledge Base
When the ai_front_office_kb_enabled flag is on, the receptionist gets a lookup_knowledge_base tool that searches the tenant’s authored FAQ articles before escalating (“do you service brand X?”, “what’s the warranty?”).
AiKnowledgeBaseService powers the lookup; tenants author articles per-business.
🛡️ Compliance & Safety
| Feature | Description |
|---|---|
| Two-party recording consent | State-aware disclosure on voice calls |
| TCPA opt-in / STOP / suppression | Full consent lifecycle on win-back outreach |
| PII auto-redaction | Transcripts redacted after 90 days (configurable) |
| Hallucination scan | Range-only quotes; no fabricated commitments |
📊 Analytics
The AnalyticsService powers the analytics dashboard at /apps/ai_front_office/analytics.
Reception Metrics:
- Inbound conversations by channel (chat / SMS / voice / web voice)
- Booking conversion rate per channel
- Auto-book vs manual-review breakdown
- Speed-to-Lead warning + breach counts
Win-Back Metrics:
WinbackAnalyticsService— outreach sent, replies, recovered revenue- Per-message ROI (configurable cost: 0.5¢ SMS / 0.1¢ email default)
Call Coach Metrics:
- Score distribution by rubric dimension
- Trend over time per CSR
⏰ Background Jobs
| Job | What it does |
|---|---|
AiFrontOffice::SpeedToLeadMonitorJob |
Minute-cadence SLA sweep (warning + breach) |
AiFrontOffice::DispatcherUrgentBookingPushJob |
Mobile push for urgent BookingRequests |
AiFrontOffice::OutboundCallJob |
Places scheduled outbound calls (decline / abandonment follow-up) |
AiFrontOffice::EnrollWinbackCampaignJob |
Enrolls eligible customers in a win-back campaign |
AiFrontOffice::SendWinbackEnrollmentJob |
Sends the enrolled outreach (SMS / email) |
🔔 Notifications
| Channel | When |
|---|---|
| Mobile push (dispatcher) | Urgent / same-day BookingRequest lands |
| Mobile push (dispatcher) | Speed-to-Lead warning (25% window remaining) |
| Mobile push (dispatcher) | Speed-to-Lead breach |
| Email (customer) | Win-back outreach via WinbackOutreachMailer |
| SMS (customer) | Win-back outreach + appointment confirmations |
User Roles & Permissions
| Role | Capabilities |
|---|---|
| Member | No access by default (configurable via allowed_roles) |
| Manager | Review conversations, approve / decline BookingRequests, view analytics, view scorecards |
| Admin / Super Admin | Everything Manager can do, plus configure routing rules, win-back campaigns, knowledge base, channel toggles, safety modes, SLA window, cost caps, ServiceTitan sync |
Defaults: allowed_roles = [manager, admin, super_admin], admin_roles = [admin, super_admin].
How We Compare
AI Front Office sits in the AI receptionist for service businesses category, alongside RingDNA-style call answering and AI dispatchers like Goodcall and Numa. Verified differentiators:
| Feature | MangoApps Workforce | Goodcall | Numa | RingDNA |
|---|---|---|---|---|
| Multi-channel (chat + SMS + voice + web voice) | ✅ | ⚡ | ⚡ | ⚡ |
| Native handoff to FSS WorkOrder | ✅ | ❌ | ❌ | ❌ |
| ServiceTitan sync | ✅ | ✅ | ✅ | ❌ |
| Speed-to-Lead SLA tracking | ✅ | ❌ | ⚡ | ✅ |
| Shadow / after-hours / approve-all modes | ✅ | ❌ | ❌ | ❌ |
| Closed-loop B2C win-back | ✅ | ❌ | ⚡ | ❌ |
| Built-in TCPA + STOP-keyword handling | ✅ | ✅ | ✅ | ✅ |
| Legend: ✅ Included | ❌ Not Available | ⚡ Limited / partial |
Why MangoApps Workforce?
- 🔗 Unified Platform — Booked appointments flow straight into Field Service WorkOrders, into Mango Spend reimbursements, into the same analytics surface as the rest of operations.
- 🛡️ Safety-First Rollout — Shadow + after-hours + approves-all modes are first-class settings, not feature requests. You can pilot for a week before any customer talks to the AI live.
- 🤖 AI-Native — Receptionist agent, win-back drafter, call coach, and KB lookup all built on the same
LlmConnectionManagerstack as the rest of MangoApps — not a third-party plug-in.
Getting Started
For Administrators
- Enable the app — In Admin → Apps Marketplace, find AI Front Office and toggle
app_enabledon. - Bind a phone / channel — Add a
TenantPhoneNumber(Twilio) orTenantWebChannelfor the chat widget. Voice channels also need a Vapi assistant binding. - Configure business hours —
BusinessHoursServicereads the tenant’s hours; the AI uses these to enforce after-hours-only mode. - Pilot in shadow mode — Keep
ai_receptionist_shadow_mode = trueandai_receptionist_dispatcher_approves_all = true. Enable one channel (chat is easiest) and let it run for 5–7 days. - Review transcripts — Conversations tab shows every IntakeConversation with its confidence score and outcome. Look for misqualifications and fix the routing rules / KB articles.
- Drop approves-all — Once confident, disable
dispatcher_approves_all. Now high-confidence bookings auto-route; low-confidence still queues for review. - Drop shadow mode — When ready, real BookingRequests start flowing to dispatchers.
- Set the SLA — Tune
speed_to_lead_minutes(default 5). Most service businesses aim for 5–15 minutes. - Turn on win-back — Configure
winback_campaigns_enabled, build an audience (start with declined estimates), and let the drafter generate the first outreach for review.
For Dispatchers / Managers
- Bookmark the queue — AI Front Office → Booking Requests → pending_review is your daily driver.
- Approve or decline — Each request shows the AI’s confidence, the conversation transcript, and the proposed time slot.
- Watch the SLA panel — At-risk bookings surface here automatically.
- Use Call Coach — Review your team’s CSR scorecards weekly; the rubric dimensions point at where to coach.
Best Practices
- ✅ Always pilot in Shadow Mode first — A week in shadow catches misqualifications and routing gaps before any customer experiences them.
- ✅ Tune the geocode confidence floor — Set
geocode_confidence_minhigher in dense urban markets where one street has multiple addresses; lower in rural where geocoding is fuzzy. - ✅ Author the KB before turning on KB tool —
lookup_knowledge_baseis only as good as the FAQs you write. Empty KB → AI escalates anyway. - ✅ Watch per-call cost cap during voice rollout — The default 200¢ is conservative; raise it only after you’ve verified average voice costs in shadow mode.
- ✅ Honor STOP, every time — TCPA-compliant suppression isn’t optional. The platform handles it; don’t bypass it for “just one more reach-out.”
- ✅ Review Call Coach scorecards weekly — The rubric is most valuable when used as coaching feedback, not a leaderboard.
Frequently Asked Questions
Q: Is the voice channel production-ready?
A: Voice (inbound phone) ships behind ai_receptionist_voice_enabled and is a beta capability — the underlying Vapi + Twilio Media Streams integration is in place but is gated for tenants who explicitly opt in. Web voice (browser mic) and chat / SMS are the most stable channels at GA.
Q: How is this different from Mango GTM?
A: Mango GTM is the B2B SaaS sales funnel for the tenant business itself — capturing prospects, qualifying SQLs, scoring deals. AI Front Office is the B2C front desk for the tenant business’s own customers — the homeowner, the salon client, the rental tenant. Different audience, different agent, different outcomes.
Q: What happens if the AI doesn’t know the answer?
A: The agent has a strict allowlist of tools — lookup_knowledge_base (if KB enabled), create_booking_request (which goes through dispatcher review), and escalate_to_dispatcher. When confidence drops, it escalates. There’s no path from the agent to an unsupervised write — every booking creation goes through the dispatcher review queue when in approves-all mode, or is confidence-gated otherwise.
Q: How does TCPA compliance work for win-back?
A: Outbound SMS only goes to phones with a recorded opt-in; replies of STOP (and variants) auto-suppress; suppression is per-tenant and persists. Outbound voice follow-up additionally respects the per-phone outbound cap (default 3 per 7-day window) so a single number can’t be re-dialed indefinitely.
Q: Can I send approved bookings to ServiceTitan instead of FSS?
A: Yes — toggle servicetitan_sync_enabled on (requires a connected ServiceTitan integration). When ON, approved BookingRequests are pushed to ServiceTitan as Jobs instead of creating Field Service WorkOrders. The integration is one-way (push only).
Q: What’s the cost cap actually doing?
A: max_tokens_per_conversation (default 50,000) is a hard ceiling — when exceeded, the agent escalates to a dispatcher mid-conversation. per_call_cost_cap_cents (default 200) is the equivalent for voice. These are guardrails, not budgets — most conversations finish far under both caps.
Related Resources
- Apps Overview — Full marketplace catalog
- Field Service Suite — Where approved BookingRequests become WorkOrders
- Bookings — Appointment-style booking surface
- Mango GTM — The B2B sales-side counterpart (different audience entirely)
Inbound chat, SMS, voice, web voice — qualified, booked, dispatched. The AI receptionist for service businesses.