Inspiration
I host villas in Phuket. Every week the same chain eats hours: read a guest email, decode vague dates ("around Christmas", "de diciembre al 5 de enero"), check the calendar, do seasonal math with discounts, write a warm reply, remember to hold the dates. Every step is trivial; the chain is not — and one missed email is a lost $3,000+ booking. This is exactly the "messy, multi-step chore" the Taskmaster track describes, so I built the agent I needed myself.
What it does
HostPilot is an autonomous booking inbox. A raw guest inquiry goes in — email or chat text, any language — and the agent handles it end-to-end without the host touching anything:
- Extracts dates (including cross-year stays like Dec 29 → Jan 5), party size and guest name; resolves missing years against today's date.
- Checks real availability against the bookings store.
- Builds a quote with business rules: high/low season rates, 10% long-stay discount, cleaning fee, min-stay and capacity validation.
- If the guest clearly wants to book — places a 48-hour hold in Firestore: a real state change, not just text.
- Replies in the guest's own language (demo shows English, Spanish and Chinese) with a full price breakdown, and asks exactly one clarifying question when dates are genuinely missing.
The killer demo moment: when requested dates conflict with an existing booking, the agent doesn't just say "unavailable" — it inspects the calendar, finds the nearest free windows on both sides, verifies each one, prices them and offers the guest two concrete alternatives.
How we built it
- Google ADK 2.6 defines the agent: one
Agentwith five plain-Python tools (get_property_info,check_availability,quote_price,create_booking,list_bookings). The model decides when to act; the tools are deterministic, testable code. - Gemini 3.5 Flash (via Vertex AI) does the reasoning, multilingual parsing and reply generation through function calling.
- Cloud Run hosts the whole app (FastAPI + inbox UI), deployed straight from source.
- Firestore (asia-southeast1) persists bookings across instances and restarts.
Challenges we ran into
- The model has no clock: "December 20" was parsed as 2024. Injecting today's date into the system instruction fixed year resolution, including cross-year stays.
- Gemini API free tier (20 requests/day) died mid-testing — an agent turn is 5–6 generations. Switched to Vertex AI with ADC on Cloud Run: no keys in the container at all, billing through the project.
- Making autonomy trustworthy: every tool returns explicit
ok/reasondicts,create_bookingre-validates availability server-side, so the model physically cannot double-book.
Accomplishments we're proud of
A guest writing in Chinese gets a correct, warm, fully-priced booking hold in Chinese — while the host sleeps. The whole action log is visible in the UI, so trust doesn't require faith.
What we learned
Agents become reliable when the LLM plans and the tools decide. Everything that must be true (availability, price, capacity) is enforced in code; everything that must be human (tone, language, judgment about intent) is left to Gemini.
What's next
Real inbox connectors (Gmail/WhatsApp webhook → agent), payment links on hold confirmation, multi-property support, and iCal sync with OTA calendars — turning HostPilot from a demo into the tool I run my own villas on.
Log in or sign up for Devpost to join the conversation.