The receptionist problem nobody's building for
The problem
There's a specific kind of business I keep thinking about: the one-person salon, the barber booking 40 heads a week, the cleaner handling 15 jobs. Not underserved because they can't afford software - underserved because the software keeps assuming they have a spare hour to configure a booking portal and remind customers it exists.
The actual problem is simpler. Their customers text a phone number. Not a form, not an app - the number on the window or the Instagram bio. When that text comes in at 8pm asking about Saturday availability, there's nobody home to answer it. The appointment goes to whoever texts back first.
I got interested in this because the gap felt oddly specific. SMS is already the channel. The customers are already using it. The missing piece is purely presence - someone available at 9pm on a Tuesday.
What I built
Remi is an AI receptionist that mans a dedicated SMS line for a local service business and handles the full customer lifecycle:
- Answering questions about hours, pricing, and services
- Collecting name, preferred service, and time in natural conversation
- Confirming the booking
- Sending automated reminders 24 hours and 1 hour before each visit
- Following up afterward to ask for a review
The stack
- AI: Google Gemini 2.5 Flash
- Messaging: Twilio SMS with 10DLC registration
- Backend: Next.js 16 API routes on Vercel
- Database: Supabase Postgres (three tables: conversations, bookings, businesses)
- Payments: Stripe subscriptions - $99/month with a 7-day free trial
On every inbound SMS, the webhook fires, Gemini gets the full business context plus the entire conversation history, and either generates a reply or - when booking intent is clear - emits a BOOKING_JSON object that gets parsed and written to the database. Intent detection stayed accurate across multi-turn conversations, which was the thing I was most worried about going in.
What took longer than the code
Twilio 10DLC. Carrier-level compliance requirements for business SMS in the US. If you haven't navigated it: it's not a weekend task. Set aside time, expect back-and-forth with documentation that was clearly written for a different audience. Worth it - it's what makes delivery reliable - but it wasn't in the original estimate.
Also: Vercel Hobby doesn't support sub-daily cron jobs. Appointment reminders run via a cron-job.org job hitting /api/reminders every 15 minutes. Not elegant, but faster than standing up a separate scheduler, and it works.
What I'd do differently
Integrate a calendar on day one. Bookings live in Supabase and surface through the dashboard, which works, but confirmed appointments should sync to Google Calendar so the business owner isn't checking two places. That's the obvious next step I left out.
I'd also reduce onboarding friction earlier. Getting a Twilio number configured and 10DLC registered is still a manual step. For a one-person shop - the customer segment this is built for - that's meaningful friction to eliminate before charging anyone $99/month.
Where it landed
This started as a build for the Build with Gemini XPRIZE Hackathon and ended up going live.
- Demo: Watch on YouTube
- Live: remiai.vercel.app
Comments
No comments yet. Start the discussion.