Matcha gives a business two ways to take bookings and one place to see them. Customers can message the business on WhatsApp — "any reformer pilates thursday evening?" — and the assistant answers the question, finds a free time and asks for confirmation before it books. Or they open the business's own booking page, see the classes and pick a slot. Both paths land on the same calendar for the team, with confirmations and reminders sent automatically.
The AI layer is a LangGraph agent built on a ports and adapters architecture, keeping model, tool and provider concerns isolated as the product evolves. Zod-typed tools handle session discovery, booking management, staff and location info, memberships, credit packs and business operations. Regex-first bilingual routing resolves most turns without an LLM call, and three-tier input guardrails plus preflight validators mean the assistant never invents hours, prices or availability — when something is beyond it, it holds the spot and hands the conversation to a human.
The multi-tenant NestJS backend uses MongoDB atomic operations so bookings are race-condition safe, with waitlists that promote automatically when spots open. Stripe handles payments and credit packs, Google Calendar stays in sync, and the dashboard updates live over SSE. Every tenant's data is fully isolated, with audit logs on every action.