Inspiration
The restaurant industry loses over $50 billion annually in missed reservations due to slow response times. We discovered that 47% of customers abandon booking forms when they don't receive immediate confirmation. Traditional solutions like chatbots have abysmal 5% conversion rates, while phone calls have 60%+ conversion but require expensive staff. We asked: What if we could combine the scalability of digital forms with the effectiveness of personal phone calls?
What it does
Reserva automatically calls customers within 5 seconds of form submission and conducts natural conversations to book their reservations. Our AI agent collects names, party sizes, preferred times and confirms details, all while updating our database in real-time. The system handles the entire reservation process from lead capture to confirmed booking without any human intervention.
Key Features:
- ⚡ 5-second response time from form submission to AI call
- 🎙️ Natural voice conversations that feel human
- 📊 Real-time database updates during active calls
- 📱 Automated SMS confirmations
- 📈 Dual database architecture for leads vs confirmed reservations
How we built it
Architecture:
Frontend (HTML/Jinja2) → FastAPI Backend → Telnyx Voice API → AI Agent ↓ ↓ ↓ ↓ Lead Form Webhook Handlers Call Control Conversation ↓ ↓ ↓ ↓ Leads Database → Reservations Database ← Insights ← Speech
Technical Stack:
-Backend: FastAPI with asynchronous webhook processing
- Telephony: Telnyx Voice API with custom AI assistant
- Database: SQLite with dual-database architecture (leads + reservations)
- Frontend: Jinja2 templates with responsive design
- Real-time Processing: Webhook-driven state management
- Background Tasks: Async SMS notifications and call triggers
Key Technical Decisions:
- Dual Database Design - Separate concerns between lead management and reservation tracking
- Webhook-First Architecture - Event-driven processing for real-time updates
- Structured Data Extraction - JSON schema validation for conversation insights
- Background Task Queue - Non-blocking operations for better performance
Challenges we ran into
1. Voice AI Configuration Hell
- Initial AI calls were silent - discovered we needed explicit TexML configuration
- Structured data extraction required precise JSON schema definitions
- Webhook endpoints had to handle multiple event types simultaneously
2. Real-time Data Consistency
- Managing database state across asynchronous webhook events
- Ensuring reservation data persisted even if webhooks arrived out of order
- Handling call failures and retries without data loss
3. Telephony Integration Complexity
- Debugging 405 errors from misconfigured webhook endpoints
- Understanding the difference between Voice API and SIP trunking approaches
- Mapping conversation insights to database schema in real-time
4. Python Environment Issues
- Missing dependencies (jinja2, python-multipart) causing silent failures
- Virtual environment configuration problems
- SQLite integration challenges with concurrent access
Accomplishments that we're proud of
🏆 Technical Achievements:
- Built a complete telephony platform in 48 hours that typically costs enterprises thousands
- Real-time voice AI pipeline that processes conversations and updates databases simultaneously
- Dual database system that maintains data consistency across distributed events
- Webhook-driven architecture that handles multiple concurrent call events flawlessly
🎯 Business Impact:
- 90% faster response time than industry standard (seconds vs hours)
- 3x higher conversion than email/chatbot solutions
- 100% automated reservation taking with zero staff overhead
- 24/7 availability without additional costs
💡 Innovation:
- First system to combine web forms with instant AI calling for restaurants
- Novel approach to structured data extraction from voice conversations
- Real-time database updates while customer is still on the call
Technical Insights:
- Voice AI is harder than chat AI - latency, audio quality, and conversation flow matter
- Webhook reliability is crucial - idempotent operations and proper error handling are essential
- Database design impacts scalability - separating concerns early prevents refactoring later
- Python's async/await is powerful for I/O-bound applications like telephony
Business Lessons:
- Speed matters more than features - 5-second response time was our killer feature
- Voice converts better than text - people prefer talking to typing
- Automation doesn't mean impersonal - well-designed AI can feel surprisingly human
Personal Growth:
- Debugging distributed systems requires systematic approach and good logging
- API documentation reading is a skill - we became Telnyx Voice API experts
- Project scope management - focusing on MVP first, then adding complexity
What's next for Reserva
Short-term (Next 3 months):
- Multi-restaurant support with tenant isolation
- Advanced AI training for handling special requests and dietary restrictions
- Integration with popular booking platforms like OpenTable and Resy
- Analytics dashboard for restaurant owners to track conversion metrics
Medium-term (6-12 months):
- Multi-language support for diverse restaurant markets
- Predictive calling based on historical conversion data
- CRM integration for customer relationship management
- Voice biometrics for returning customer recognition
Long-term Vision:
- Industry expansion beyond restaurants to hotels, salons, and service businesses
- AI-powered upselling during reservation conversations
- Franchise management platform for multi-location businesses
- Marketplace platform connecting restaurants with AI reservation services
Technical Roadmap:
- Migration to PostgreSQL for better concurrent access
- Redis integration for real-time analytics and caching
- Docker containerization for easier deployment
- CI/CD pipeline for automated testing and deployment
We're just getting started. Yhis is the future of customer engagement for service businesses.
Log in or sign up for Devpost to join the conversation.