SMS outreach, AI conversation, appointment booking
Text a lead list. Each reply gets answered until a consult is on a rep's calendar.
Import, campaign, delivery tracking, an assistant that qualifies by text and books real openings, and role-based dashboards. Focused on that one job. Not a CRM.
Try this: open the console, then the phone in a second window. Text back as the lead and watch the appointment appear.
- Drop a CSV, map the columns, and every row is checked: number format, duplicates, consent source, opt-out and DNC lists. Rejected rows say why.
- Write the campaign text with merge fields, see the segment count, set the send window and the questions the assistant should ask.
- Launch, and each message moves queued, sent, delivered or failed as the carrier reports back. STOP and HELP are handled in code before anything else sees the text.
- Replies land in one inbox. The assistant answers each thread; a person can take any thread over with one click.
- The assistant asks the qualifying questions one at a time, then offers two real openings pulled from the reps' calendars.
- When the lead picks one, the appointment is created, assigned round-robin, and pushed to that rep's Google Calendar.
- Appointments with reschedule, cancel and sync status. Week calendars per rep. A dashboard with delivery, reply, quality and booking numbers.
- Admins see everything. Reps see their own threads, bookings and calendar, nothing else.
What runs for real in this demo, and what is simulated
Real
- The assistant's replies in the phone simulator (Claude, structured output, rate-limited).
- Import validation: E.164 normalisation, duplicates, consent, suppression list.
- SMS segment math (GSM-7 160/153, UCS-2 70/67), quiet hours by lead time zone.
- Availability from working hours, busy blocks and existing bookings; round-robin assignment.
- STOP, HELP, START and AGENT keyword handling in code, before any model call.
Simulated
- Carrier delivery receipts and lead replies after a launch (scripted, deterministic).
- Google Calendar writes and the busy blocks read from it.
- The national DNC scrub (two fixed numbers stand in for registry hits).
- A2P 10DLC brand and campaign status (the panel shows what registration records).
- Data lives in this browser and resets each day. Production schema: /stack.
Sunfield Solar, its people and every phone number here are fictional. A LeverKit demo build.