Inspiration

Appointment no-shows create a simple but expensive problem for service businesses. Salons, consultants, repair services, tutors, and other appointment-based businesses often spend staff time manually calling customers just to confirm whether they are still coming. If a customer cancels late or simply does not show up, that appointment slot may be lost entirely.

I wanted to build something beyond a generic AI phone caller. The goal was to create an agent that could complete the full operational loop:

find the appointment → contact the customer → understand the response → turn it into structured data → update the business workflow automatically. That became ConfirmCall.

What it does

ConfirmCall is an AI appointment confirmation agent built around CALL-E and Google Calendar. It reads upcoming appointments from Google Calendar, identifies events enabled for ConfirmCall, prepares a personalized confirmation task, interprets the customer outcome, and writes the result back to the calendar.

ConfirmCall supports:

  • ✅ Confirmed appointments
  • ❌ Cancellations
  • 🟡 Reschedule requests
  • ⚪ No-answer outcomes
  • 🔴 Human-review escalation
  • ⏳ Pending appointments

For reschedule requests, ConfirmCall records the customer's requested time without promising that the replacement slot is available. This keeps a human in control of scheduling decisions while still automating the repetitive confirmation workflow.

How we built it

ConfirmCall was built as a Python application with a modular architecture so each part of the workflow could be tested independently. The main components are:

  • Google Calendar API + OAuth 2.0 for reading and updating appointments
  • CALL-E for appointment-confirmation phone workflows
  • A decision engine for translating customer outcomes into appointment states
  • Streamlit for the operations dashboard
  • Pytest for automated testing

The workflow is: Google Calendar ↓ Appointment Parser ↓ ConfirmCall Orchestrator ↓ CALL-E ↓ Structured Outcome ↓ Decision Engine ↓ Google Calendar Writeback ↓ Streamlit Dashboard

Live CALL-E validation

ConfirmCall was tested with real outbound phone calls through CALL-E using an authorized recipient in a supported US region.

During live runtime testing:

  • CALL-E successfully created outbound call tasks
  • the destination phone rang
  • calls connected successfully
  • the CALL-E voice agent spoke
  • structured runtime results were returned
  • real call IDs were generated
  • no-answer and incomplete-call outcomes were handled safely

The live recipient did not provide a final appointment decision during the test attempts, so ConfirmCall did not fabricate a confirmation. Instead, CALL-E returned an incomplete/no-answer result, which is exactly the type of uncertain outcome that ConfirmCall is designed to handle safely.

The full confirm, cancel, and reschedule decision workflow is demonstrated through ConfirmCall's dry-run mode, where Google Calendar reads and writebacks are real while CALL-E outcomes are simulated for a safe and repeatable demo.

Challenges we ran into

One of the biggest challenges was coordinating state across multiple external systems. Google Calendar, Google OAuth, CALL-E, the internal appointment model, and Streamlit all needed to stay synchronized.

CALL-E integration also presented several real-world challenges.

During development, some phone regions were rejected by the CALL-E planner for the tested language combination. Nigerian and Canadian numbers could not be used for the live test, so I later validated successful planning with an authorized supported US number.

I also encountered a CALL-E API key that appeared enabled in the dashboard but returned HTTP 401 through the API. I investigated the SDK, inspected the installed client methods, tested authentication separately, and eventually used the working CALL-E CLI/OAuth path to continue development.

Another challenge was reliability. Initially, one failed appointment could interrupt an entire processing run. I improved the workflow so failures are routed to needs_human while other appointments continue processing.

I also had to solve practical development issues involving Windows PATH configuration, Node.js, the CALL-E CLI, timezone handling, Google OAuth scopes, and persistence of reschedule details.

Accomplishments that we're proud of

I am most proud that ConfirmCall became more than a simple AI calling demo.

The project now includes:

  • Google Calendar OAuth integration
  • automatic appointment discovery
  • structured appointment metadata parsing
  • CALL-E task generation
  • real CALL-E outbound call execution
  • structured runtime call results
  • confirmation handling
  • cancellation handling
  • reschedule-request handling
  • no-answer handling
  • human-review fallback
  • Google Calendar writeback
  • requested-time persistence
  • call-ID persistence
  • duplicate-processing protection
  • deterministic idempotency keys
  • failure handling
  • a Streamlit operations dashboard
  • business-impact metrics
  • an automation audit trail
  • repeatable demo controls
  • 10 passing automated tests

The complete dry-run workflow works end to end: Calendar → Appointment → Simulated CALL-E Outcome → Decision Engine → Calendar Update → Dashboard

What we learned

The biggest lesson was that useful AI agents need to do more than generate intelligent responses. The real value comes from connecting the AI interaction back into the system where work happens.

For ConfirmCall, that means turning a conversation into a structured decision that can immediately update Google Calendar.

What's next for ConfirmCall

The next step is to turn ConfirmCall from a hackathon prototype into a production-ready AI front desk for appointment-based businesses.

Planned improvements include:

  • automatic Calendar availability checks
  • conflict-aware rescheduling
  • suggested alternative appointment slots
  • configurable retry policies for unanswered calls
  • SMS or email fallback after unsuccessful calls
  • webhook-based asynchronous call processing
  • CRM integrations
  • configurable business call scripts
  • multi-calendar support
  • multi-business accounts
  • appointment-value configuration
  • no-show analytics
  • team dashboards
  • authentication and role-based access control
  • production monitoring and observability

A future version could automatically detect open slots, offer alternatives during the conversation, and update the appointment only after the customer selects an available time.

The long-term vision is for ConfirmCall to become an AI front desk for appointment-based businesses.

Instead of staff repeatedly asking:

"Are you still coming tomorrow?"

ConfirmCall can turn the business calendar into an active workflow that reaches customers, captures their decisions, and keeps scheduling information up to date.

Calendar in. Conversation out. Decision made.

Built With

  • ai-agent
  • apis
  • automation
  • call-e
  • github
  • google-calender-api
  • google-oauth
  • pandas
  • pytest
  • python
  • python-dotenv
  • streamlit
  • voice-ai
  • workflow-automation
Share this project:

Updates

Submission history