Inspiration

I've worked at hotels in Okinawa and Hokkaido, and I've been on shift on typhoon days when flights were cancelled and guests couldn't go home. In Okinawa, a typhoon can ground every flight for days.

Okinawa has about 3,900 places to stay, and roughly 9 in 10 are small: guesthouses, pensions, rentals and hotels with fewer than 100 guests (Okinawa Prefecture, 2023). Big hotels have night managers. A small inn usually has one tired owner.

That owner has to work out, late at night, who can't fly home, how many extra nights each guest needs, how to explain it in English, Korean or Chinese, how to collect payment and who has paid. Meanwhile, a rumour online is demanding full refunds. I wanted to give that one person a night-shift front desk that does the legwork but never touches the money on its own.

What it does

nankuru BANTŌ runs the typhoon-night workflow end to end, from flight check to paid invoice, and only a human can move money.

  1. The AI investigates. A Gemini agent reads the guest list and checks each guest's flight against official notices. Social-media posts are read only to flag them as unverified.
  2. The AI proposes. Each stranded guest gets an extension offer for only the nights needed to reach the next available flight, written in their own language.
  3. A safety gate in code checks every proposal. Anything that breaks a rule is blocked and routed to staff, for example a guest who booked through an online travel agency.
  4. A manager approves each proposal with one click.
  5. PayPal closes the loop. Approval creates and sends a PayPal invoice. When the guest pays, the extension is confirmed and revenue updates on the dashboard.

Every decision is logged with a timestamp: the AI's proposals, the gate's blocks, and the human's approvals and payments.

The safety gate enforces these rules in code, not in the prompt:

  • Only guests whose flight is officially cancelled
  • Only the nights needed, at most 3
  • The discount is set by the inn's policy, never by the AI
  • Amounts are calculated by code
  • Direct bookings only; online travel agency bookings go to staff
  • Extension rooms can't be overbooked
  • Allowlisted tools only, at most 20 steps

The AI has no tool that charges, sends or refunds money.

How we built it

It's a Python and Flask app with one manager dashboard, deployed on Render.

  • Agent: the Gemini API (gemini-3.8-flash) with function calling over REST. The agent can only look things up, propose, and notify staff.
  • Safety gate: plain Python that runs after the model and before anything is saved. It decides what reaches the manager, so the model can't argue its way past a rule.
  • Payments: the PayPal Invoicing API v2 in the Sandbox. It uses OAuth client credentials, then creates, sends and checks the status of each invoice. PAID is the confirmation.
  • Dashboard: Flask templates with AG Grid Community for the guest and invoice tracker. Every money-moving action is a POST from the manager.
  • Live demo: each visitor gets a private workspace that resets after 24 hours, with per-visitor limits on AI runs. If Gemini is busy, a recorded run replays, clearly labeled, through the same real safety gate.
  • Tests: 85 offline tests, with Gemini and PayPal mocked.

I built it solo with AI tools, and every tool is credited in the README. Claude helped with product design, the safety rules, code review and the demo video. Codex wrote the dashboard and tests from written specs, and every change was reviewed before it shipped. The video narration is Gemini TTS.

Challenges we ran into

  • A demo that can't fail in front of judges. On the free API tier, runs hit rate limits and could take minutes. I added a labeled replay fallback that still runs the real safety gate. If a live run breaks halfway, its partial writes are rolled back first, so the dashboard never shows half a night.
  • Korean written with Chinese characters. Gemini sometimes wrote Korean words in Hanja, which most guests can't read. A code check now rejects a Korean draft unless it's in Hangul and asks the model to rewrite it.
  • Guests the inn can't invoice. A guest who booked through an online travel agency paid the agency, not the inn. Charging them again would be wrong, so the gate blocks those proposals and routes them to staff.
  • Rumours. A post claiming "all flights cancelled, refund everyone" is exactly what an agent might act on. The agent may only use official notices; posts are shown, flagged as unverified and never used.

Accomplishments that we're proud of

  • The whole loop works on a public site. Anyone can open the live demo, run the AI, approve an invoice and pay it in the PayPal Sandbox. It calls the real Gemini API (or a clearly labeled replay when Gemini is busy) and the real PayPal Sandbox.
  • The AI can't move money. That isn't because the prompt says so: it has no tool for it, and the rules live in code it can't change.
  • Paying the invoice is the confirmation. The guest needs no form and doesn't have to queue at the front desk at midnight.
  • Messages in each guest's language, with the amounts appended by code so a price can't be hallucinated.

What we learned

  • Put the rules where the model can't reach them. A rule in a prompt is a suggestion. The same rule in code that runs after the model is a guarantee, and it's easier to test.
  • Agents need a narrow job. Limiting the AI to look up, propose and notify made it more useful, because the manager can trust everything it puts in front of them.
  • Design for the AI being unavailable. Rate limits, timeouts and half-finished runs are normal. An honest fallback that's labeled on screen beats a spinner that never ends.
  • Payment can be the workflow. Using the invoice status as the confirmation removed a whole step for both the guest and the owner.

What's next

  • Ask for the flight when the inn doesn't know it. Many small inns don't collect departure flights yet. The agent will draft a message in the guest's language asking for it, and staff will send it.
  • Help online-travel-agency guests too. Instead of only routing them to staff, the agent will draft a message explaining how to extend through their travel site.
  • Heavy-snow mode for Hokkaido, where blizzards close airports the same way typhoons do in Okinawa.
  • A cancellation and refund flow, with the same human approval.
  • Live official flight-status feeds in place of the demo data.

Demo video made with Remotion. Narration: AI voice (Gemini TTS). Music: "Ambient - Ambient Music" by Tatamusic (Pixabay), used under the Pixabay Content License. All guests, flights and the inn are fictional. Payments run in the PayPal Sandbox only.

Built With

Share this project:

Updates

Submission history