Agent sheet · 12 agents · last sync 2m ago
Every column is a real agent property. Edit inline — changes auto-save & deploy. Graph view: open in builder →
Spreadsheet mode — no flow chart required. Click any cell to edit. Type
=ask("question") for LLM variables · =tool(name, args) for tool calls · =if(signal, then, else) for branching.
| A · Agent name ▾ | B · Voice ▾ | C · First line ▾ | D · Asks (ordered) ▾ | E · Tools ▾ | F · Transfer to ▾ | G · Max turns ▾ | H · Guardrails ▾ | I · Eval score ▾ | J · Calls / day ▾ | K · Cost / call ▾ | L · Status ▾ | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Booking · inbound | Nova · warm | "Hi, you've reached Acme Dental. How can I help?" | name · phone · preferred_date · provider | cal.book · sheets.lookup_patient | front_desk_human | 12 | no_medical_advice | 94 | 284 | $0.082 | ● LIVE |
| 2 | Follow-up outbound | Atlas · crisp | "Hi {name}, this is Atlas from Acme…" | confirm_appt · reschedule? · opt-out? | sheets.mark_confirmed · sms.send | voicemail_drop | 6 | DNC_check · quiet_hours | 88 | 142 | $0.061 | ● LIVE |
| 3 | Reactivation | Riya · empathic | "Hi {name}, it's been a while — hope you're well…" | still_interested · last_visit · objection_handler | cal.slots · crm.log_touch | ops@acme | 10 | no_pressure_sales | 76 | 48 | $0.104 | TESTING |
| 4 | Dental emergency triage ● editing | Sofia · urgent | "I'm here. Tell me what's going on…" | pain_level · duration · trauma? · bleeding? | triage.score · escalate_911 · cal.emergency_slot | on_call_dentist | 5 | triage_protocol · HIPAA | 79 | 21 | $0.094 | DRAFT |
| 5 | Insurance verification | Jordan · neutral | "This is Jordan calling from Acme Dental to verify coverage for…" | plan_id · group_num · eligibility_date · coverage_pct | availity.check · sheets.update_row | billing_team | 20 | IVR_navigation | 91 | 38 | $0.214 | ● LIVE |
| 6 | After-hours intake | Nova · warm | "Thanks for calling Acme, we're closed but I can take a message." | name · callback · concern · urgency | sheets.log · sms.confirm | — none — | 4 | none | 92 | 62 | $0.038 | ● LIVE |
| 7 | Payment reminder | Atlas · crisp | "Calling about your balance of {amount} for {service}…" | acknowledge · payment_method · payment_date | stripe.link · crm.log | billing_team | 8 | FDCPA · no_threats | 83 | 94 | $0.072 | ● LIVE |
| 8 | New patient welcome | Nova · warm | "Welcome to Acme Dental! Let's get you set up…" | name · dob · insurance? · preferred_provider | crm.create_patient · forms.email_intake | receptionist | 14 | HIPAA · age_gate | 89 | 27 | $0.118 | ● LIVE |
| 9 | Spanish booking | Sofia · bilingüe | "Hola, gracias por llamar a Acme Dental…" | nombre · teléfono · fecha · proveedor | cal.book · translate.en | spanish_human | 12 | no_medical_advice | 86 | 41 | $0.092 | ● LIVE |
| 10 | Collection · overdue 60d | Atlas · crisp | "This is Atlas calling regarding an overdue balance…" | acknowledge · dispute? · payment_plan | stripe.plan · legal.escalate_flag | collections_lead | 6 | FDCPA · mini_miranda | 62 | 18 | $0.081 | PAUSED |
| 11 | Review request | Riya · empathic | "Hope the visit went well! Quick favor…" | satisfied? · willing_to_review? | sms.send_review_link | — none — | 4 | gentle_tone | 87 | 52 | $0.028 | ● LIVE |
| 12 | Cancellation saver | Jordan · neutral | "I see you'd like to cancel — can I ask what changed?" | reason · alt_time? · offer_reschedule | cal.find_slot · crm.tag_risk | front_desk_human | 8 | no_pressure | 77 | 22 | $0.068 | TESTING |
Good ≥ 85
Review 70–84
Below 70 — blocked from production
12 rows · 12 columns · 3 formulas live
Why a sheet? Every other builder forces a flowchart. Flowcharts break when you have 12+ agents. A sheet gives you bulk edit, sort by eval score, filter by cost, and find-replace across guardrails. Switch to Graph view when you need it, Spec view to copy the YAML.