KEY TAKEAWAY

Hostwise is an AI hotel concierge agent — built on Gemini 2.0 Flash with a local Ollama fallback for when the cloud API is unreachable — that handles booking confirmations, guest memory, and threshold alerting for two live 24-room properties without a human in the loop. The part that actually made it trustworthy wasn't the language model. It was forcing every guest-facing claim through a tool call against the real database, so the agent can never answer from a guess.

Two boutique properties, 24 rooms each, in Bareilly and Ramnagar. Before this system existed, that meant a front desk fielding the same three questions on repeat — is a room free tonight, what's the rate, can I get the confirmation resent — while also trying to remember which returning guest wanted the corner room last time and which one asked for an extra pillow. None of that is hard. All of it is relentless, and it doesn't stop at 11pm.

The obvious fix is "put a chatbot on it." The actual work was making sure that chatbot never says something false with total confidence — which, if you've used any LLM for more than five minutes, you know is the default failure mode.

Why tool-calling, not just a chat prompt

The first version was a single system prompt describing the hotel's rooms, rates, and policies, fed straight into Gemini. It worked in demos and broke in production, because a general-purpose language model will always answer a question rather than admit it doesn't know — inventing an available room on a night that was actually fully booked isn't a hallucination bug, it's exactly what the model was trained to do.

The fix was building this as a ReAct-style tool-calling agent instead of a free-text chatbot: the model can reason about what it needs, but it's only allowed to state availability, rates, or booking status by actually calling a function that reads the live Supabase table. If the tool call fails or returns nothing, the agent is instructed to say so — not to fill the gap with something plausible.

every question, every hour. tool calls only live Supabase table agent (checks first, then answers) owner: pinged only on real alerts

Every guest-facing answer is grounded in a live database read — the model reasons, but it doesn't get to guess.

2
live 24-room properties
100+
hours/month of admin work removed
24/7
autonomous, no shift coverage needed

What the agent actually does

The model doesn't need to be smarter to be trustworthy. It needs to be structurally incapable of answering without checking first.

The actual lesson

Most "AI automation" pitches sell the model. The reliability — the thing that actually lets an owner stop checking bookings manually — comes from the boring architecture decisions around the model: what it's allowed to say without a tool call, what happens when a tool call fails, and what triggers a human alert versus what gets handled silently. Gemini 2.0 Flash is fast and cheap enough to run this at scale; the ReAct tool-calling discipline is what makes it safe to actually deploy in a business that depends on it.

That's the same principle behind the schema-drift audit I ran on this same system's database — trust the source of truth, not what the code (or the model) assumes about it.

Building something similar for your own operation?

If you're running guest services, bookings, or any repetitive ops workflow by hand across multiple locations, this is the exact kind of system I build. Let's talk about what's actually worth automating first.

Talk to me about automating this arrow_forward