Skip to content

Bookings

A booking is one element of a trip — a flight, a hotel night, an activity, a restaurant reservation. Moonjar stores each booking in its own typed table with the right fields for that category, so a flight has gates and terminals while a hotel has check-in dates and room types.

Most bookings arrive by email. Forward a confirmation to your Moonjar address and the email-capture pipeline:

  1. Detects travel intent from the subject and body.
  2. Runs a Claude classifier to decide what kind of booking it is.
  3. Extracts the structured fields for that booking type.
  4. Picks the right trip — existing, or creating a new one if none fit.
  5. Writes the booking and links the source email as a document.

You can also create a booking by hand from the trip detail screen, or have the chat assistant add one in conversation.

Each booking type has its own fields. Categories supported:

  • Flight — carrier, flight number, origin and destination airports, departure / arrival, gate and terminal, status.
  • Accommodation — provider, address, check-in / check-out, room.
  • Ground transport — pickup / drop-off, provider, vehicle.
  • Rail — operator, origin and destination stations, departure / arrival.
  • Bus / coach — operator, route, departure / arrival.
  • Ferry — operator, port pairs, departure / arrival.
  • Cruise — line, ship, ports of call, dates.
  • Activity — provider, location, date / time.
  • Show — venue, performance, seating.
  • Restaurant — venue, party size, time.
  • Parking — facility, slot, dates.

Adding a new category requires a backend change. From a user perspective the categories are fixed.

Common fields on every booking, regardless of type:

  • Booking reference — the confirmation code.
  • Provider name — who you booked through.
  • Total cost and currency.
  • Source email — the original confirmation, if it came in by email.
  • AI confidence — how sure the classifier was when it pulled the booking out. Low-confidence bookings are flagged for review rather than silently filed.
  • Notes — free text.

Some booking types refresh themselves. Flight bookings poll a flight status provider near the departure window so the trip detail screen shows current gate, terminal, and any delay — without you opening the airline’s app.

  • Confidence isn’t perfect. A booking that arrives garbled (an old email format, a non-English confirmation, a forwarded three-times-over copy) may end up in the wrong trip or as an orphan booking awaiting your routing decision.
  • Cost extraction is best-effort. If the email doesn’t list a total, Moonjar leaves it blank rather than guess.
  • Live flight status depends on a configured flight-status provider. Without one, the booking shows the static data from the email and nothing more.