Inspiration

Indian clinics lose 20–40% of booked slots to no-shows and late cancellations.

The fix isn't another reminder SMS — it's the evening phone call no receptionist ever makes: confirming tomorrow's patients and, when someone cancels, immediately calling the waitlist so the slot doesn't die.

That's a job for an agent.

What it does

SlotSaver is an agent built on the AWS Strands Agents SDK that runs a clinic's evening front desk.

Each night, "Asha":

  • Calls tomorrow's patients to confirm their appointments.
  • Retries unanswered calls once.
  • The moment someone cancels, re-plans the backfill.
  • Calls the waitlist in order until the freed slot is refilled.
  • Writes the clinic a morning report showing the rupees recovered overnight.

How we built it

The Strands agent owns the loop end-to-end:

  • It reads state through a get_worklist tool.
  • It decides which call to place next.
  • It reacts to cancellations by re-planning a backfill.
  • It composes its own morning report.

All state changes live inside typed tools (confirm_call, offer_slot). The LLM sequences calls but cannot edit the schedule directly, making every run auditable and replayable.

Real telephony is one tool-call away via CALL-E, which returns structured outcomes:

  • confirmed
  • cancelled
  • reschedule
  • no-answer

There is no transcript parsing.

The brain is provider-agnostic: with one .env change, the same agent can run on Groq, Claude, OpenAI, or Amazon Bedrock.

A live browser board renders the schedule flipping in real time as calls land.

The entire system also runs in a zero-cost dry-run mode with identical behavior — same cast, same call order — so what you see in the demo is exactly what the code does.

Who it's for

Small-clinic owners who can't staff evening calls — and any appointment-based business with a waitlist, including:

  • Salons
  • Physio clinics
  • Diagnostic labs
  • Tuition centers
  • Driving schools

On the other end, patients get access to tomorrow's available slots they otherwise would never have heard about.

Challenges we ran into

Real Indian telephony introduced several challenges.

One carrier rejected VoIP-originated calls at the network level with SIP 480 before ringing. We diagnosed the issue using per-attempt failure codes.

Idempotency was another challenge: a reused key returns the cached result instead of placing a second call, so retry keys must be unique for every run — and never assumed to expire on any fixed schedule.

And voice agents live or die on prompt wording. An early instruction saying "never press more than once" taught the bot to press DTMF keys on itself.

Accomplishments we're proud of

The full loop runs on real phone calls:

  1. A real appointment confirmation.
  2. A real cancellation.
  3. A real waitlist backfill.
  4. A live board updating as the calls happen.
  5. ₹800 recovered on camera.

The entire workflow is orchestrated end-to-end by the Strands agent.

What's next for SlotSaver

  • Reading real clinic sheets (Google Sheets / Practo exports)
  • Multilingual calls
  • WhatsApp morning reports
  • Productionizing the agent brain on Amazon Bedrock

Built With

Share this project:

Updates

Submission history