01The problem
Booking a tasting touches several moving parts: a catalogue, real availability, payment, confirmation emails and the operational tools behind them.
Instagram is also where people discover the experience, and stories that mention it deserve an answer without someone watching all day.
02The solution
The React, TypeScript and Vite frontend is hosted on Netlify. It calls a central FastAPI backend on Render, where business rules and availability checks live. Supabase provides PostgreSQL; Stripe handles checkout and payment webhooks, and Resend sends transactional emails.
Slower automation runs outside the booking path, in its own worker and deployment.
Bookings & availability
Payments & confirmations
Instagram automation
The worker has its own deployment on Render, a heartbeat and usage limits. Its processing stays outside the booking request path.
Key decisions
- 01
Keep business rules in the API.
The frontend presents the journey; the backend validates operations and coordinates payments and data access.
- 02
Move slow work off the request path.
A durable inbox and a separate worker let Instagram automation progress without holding up booking requests.
- 03
Check the whole journey.
Python tests, frontend tests and Playwright end-to-end checks, alongside distinct development and production environments.
03Where AI fits
Instagram events enter through a verified webhook into a PostgreSQL inbox. A separate worker uses Pydantic AI for the model-assisted reading of stories; ordinary code makes the decisions and takes the actions.
The model has a bounded job: clear cases can receive a DM, uncertain ones are referred to a person. The worker has retries, a heartbeat and usage limits, and can be paused without touching bookings.
The product itself is also built with AI assistance: Claude Code is part of the day-to-day development workflow.
04Results
- A clear boundary between the customer interface, business operations and external services.
- Conversion and revenue impact will get their own measurement before appearing here.