1) Domain intake layer
Receives domain events (lead, job, quote, invoice, review), validates scope, and maps to the owning agent.
This is an implementation-focused guide for teams designing or reviewing automation behavior in production.
The features page explains product value. This page explains architecture decisions and operational behavior so engineering, ops, and support teams can align.
This is where automation changes outcomes in real service workflows.
| Scenario | Human-only flow | LeadDuo Agent flow | Business impact |
|---|---|---|---|
| Missed call while tech is on a roof | Call is missed and callback is delayed until someone is free. | Instant text-back, quick triage, and quote/booking link sent automatically. | Higher chance of recovering leads that would have been lost. |
| After-hours emergency inquiry | No response until morning; customer contacts competitors. | Immediate acknowledgment and emergency routing based on rules. | Faster response and improved close rate on urgent jobs. |
| Quote sent but customer goes silent | Manual follow-up is inconsistent and often skipped. | Timed, policy-based follow-ups continue until stop conditions are met. | More quote recoveries with less admin effort. |
| Invoice past due | Team manually chases payments across channels. | Automated reminder cadence with payment links and audit trail. | Lower days outstanding and steadier cash collection. |
Examples illustrate typical outcomes and do not guarantee specific revenue.
ServiceHub automation is designed as layered agent orchestration rather than one large monolith function.
Receives domain events (lead, job, quote, invoice, review), validates scope, and maps to the owning agent.
Applies business policy (rules, thresholds, dry-run/auto mode, emergency overrides) and decides next action.
Performs side effects (send message, assign tech, schedule reminder, emit payment chase step) using idempotent keys.
Writes service activity history and execution outcomes for explainability, debugging, and compliance.
Each agent should own one business domain and expose explicit event interfaces.
Customer communication hub for inbound/outbound SMS and email, including triage and response routing.
Collects missing job requirements (forms, photos, confirmations) before dispatch execution.
Handles assignment and dispatch optimization with rule constraints and optional dry-run previews.
Runs quote/invoice/deposit communication and payment chase workflows with explicit step states.
Automates review request and post-service sentiment workflows.
Runs staff summaries, integration token refresh, and internal operational notifications.
| Agent | Primary trigger | Primary output | Control mode |
|---|---|---|---|
| Concierge | inbound message / reminder due | SMS/email action | template + gating rules |
| Intake | job missing required data | intake request event | required field policy |
| Scheduling | new/updated scheduled work | assignment or optimization plan | dry-run / auto / threshold |
| Billing | invoice lifecycle events | payment outreach sequence | cadence + escalation policy |
| Reputation | job completed | review request + analysis | timing + approval workflow |
| Ops/Integrations | scheduled ops checks | staff/internal notifications | store/user scope |
Use a stable envelope for all inter-agent messages so new handlers can be added without breaking existing flow.
Example event envelope
{
"name": "servicehub.dispatch.optimization_requested",
"data": {
"userId": "user_abc123",
"storeId": "store_xyz789",
"idempotencyKey": "opt|store_xyz789|2026-02-06",
"payload": "{"mode": "dry_run", "date": "2026-02-06"}"
}
}We schedule per-entity delayed events where possible and keep cron sweeps lightweight as safety nets.
We use set-based claims and batched emits to reduce per-item step overhead.
We apply idempotency, debounce, and rate-limit controls so noisy upstream events do not multiply invocations.
We load only fields needed for the specific decision path to reduce CPU and query cost.
We started with agent-generated plans/messages and human approval to validate correctness and team trust.
We moved routine low-risk actions to auto-run while keeping high-impact changes behind explicit apply.
For stable paths, we enabled full automation with guardrails, audit logs, and catch-up workers.
Scheduling/Billing determine due events; Concierge executes outbound customer messaging.
Generally no. Use manual store/day triggers with dry-run previews first, then selectively enable auto mode.
Every handler must enforce tenant/store scoped queries and reject ambiguous ownership.
Keep a lightweight catch-up sweep that re-enqueues overdue entities with idempotent keys.
Use these patterns in your own operations: automate routine work, keep approvals for high-impact actions, and maintain clear audit trails.
Need the product walkthrough instead? Jump to the features page.