Fill the gaps left after the 3.2.0 feature work: - add an AI Booking Import page for the AI Parsing addon (providers, admin/per-user config, model pull, the review-before-save flow) and link it from Reservations & Bookings and the sidebar - document guest members on Trip Members and Sharing (owner-only, what they can be assigned to, and the sign-in/notification/visibility limits) - document the three packing sharing tiers and co-bringing on Packing Lists - add TRANSIT_API_URL and the plugin variables to Environment Variables, and correct the language list to 22 (add Swedish and Vietnamese) - list the airtrail and llm_parsing addons in the Addons overview
7.2 KiB
AI Booking Import
The AI Parsing addon adds a large-language-model fallback to TREK's booking import. When KDE Itinerary can't read a confirmation — a plain-text email, an unusual PDF layout, a vendor whose format it doesn't recognise — TREK can hand the document to an AI model and turn it into a reservation you review before saving.
It is an opt-in addon, disabled by default, and it works with a self-hosted local model, so no booking data has to leave your server.
Admin: Enable AI Parsing in Admin-Addons (it sits in the Integration group). Booking import itself still requires the
kitinerary-extractorbinary — see Reservations-and-Bookings.
How it fits with normal import
AI parsing does not replace KDE Itinerary — it backs it up:
- Every uploaded file is parsed by KDE Itinerary first.
- Only files that Itinerary returns nothing for are sent to the AI model.
- Every reservation the AI produces is flagged Review so you can confirm it before (or after) saving.
So structured tickets keep being parsed the fast, deterministic way; the AI only steps in for the documents that would otherwise fail. If the addon is disabled, import behaves exactly as before.
Choosing a provider
The addon supports three providers:
| Provider | Runs where | Notes |
|---|---|---|
| Local (Ollama) | Your own hardware | No booking data leaves your network. Recommended for privacy; works on CPU. |
| OpenAI | OpenAI's API, or any OpenAI-compatible endpoint via a custom base URL | Needs an API key. |
| Anthropic | Anthropic's API | Needs an API key. Reads PDFs — including scans — natively. |
Scanned PDFs: Local and OpenAI-compatible models receive the document's extracted text. A scanned or image-only PDF has no text layer, so those providers return nothing for it. Only Anthropic ingests the raw PDF and can read scans.
Admin: instance-wide configuration
When you enable the addon, a configuration panel appears directly under it in Admin-Addons:
Set instance-wide config (applies to all users). Leave blank to let each user configure their own provider.
- Provider — Local · OpenAI-compatible, OpenAI, or Anthropic.
- Base URL — shown for every provider except Anthropic. Defaults to
http://localhost:11434/v1for a local Ollama server, orhttps://api.openai.com/v1for OpenAI. Point it at any OpenAI-compatible endpoint here. - API key — optional for a local server (
(often not required)), required for the cloud providers. Stored encrypted; it is shown masked (••••••••) once saved, and leaving it unchanged keeps the stored key. - Model — the model id (e.g.
qwen3:8b,gpt-4o,claude-opus-4-8).
If you set a provider and model here, it applies to all users and overrides their personal settings. Leave the panel blank to let each user bring their own model (see below).
Pulling a local model
With the Local provider selected, the panel manages your Ollama server directly:
- Installed on the server lists the models Ollama already has, with a Refresh button. Click a model to select it.
- Pull a recommended model downloads a model with a live progress bar. The one recommended model is Qwen3 — 8B (
qwen3:8b) — best extraction quality & speed on CPU (thinking auto-disabled) · Apache-2.0. Once the pull finishes it is selected automatically.
You can also select any other model already installed on the server, or type a model id by hand.
Per-user configuration
If an admin leaves the instance config blank, each user can configure their own model under Settings → Integrations → AI parsing (the section only appears when the addon is enabled):
Use your own AI model to extract bookings from uploaded files. This applies only when your administrator has not configured a model for the whole instance.
The fields mirror the admin panel — provider, model, base URL (for local / OpenAI), and an API key that is stored encrypted (leave blank to keep the current key). There is also a Send documents as images toggle for vision-capable models.
Precedence: an admin instance model always wins. Personal settings only take effect when no instance-wide model is configured.
Importing a booking with AI
The upload flow is the normal booking import — the AI simply runs behind it:
- In the trip planner, open the Reservations tab and click Import from file.
- Drop your files (EML, PDF, PKPass, HTML, TXT — up to 5 files, 10 MB each) onto the upload area.
- The upload dialog closes right away and a background widget (bottom-right) shows Parsing files… with a running count. You can keep navigating TREK while it works; the widget survives a page reload and even follows you to other pages.
- When parsing finishes, click the widget's Import button to start the review.
- Each parsed booking opens pre-filled in the normal reservation (or transport) editor, one at a time. Nothing is saved until you confirm each one.
What gets filled in and created
The model is asked to capture the full booking — including every leg of a multi-segment flight — and, on save, TREK wires each item into the trip:
- Fields — booking/confirmation code, dates and times, and per type: seat, class, platform, total price and currency; hotels bring their address, rental cars their company, restaurants and events their venue with phone and website.
- Places — hotel, restaurant and event venues (and un-geocoded transport stops) are geocoded and added as trip places, so the map pin appears.
- Accommodations — a hotel booking creates the accommodation on the matching check-in/check-out days.
- Linked cost — if the Costs/Budget addon is enabled and the booking has a price, a linked expense is created. Without that addon, the price stays on the reservation only.
- Source document — the uploaded file is attached to the reservation's files.
Good to know
- No new environment variables and no manual migration — the addon is configured entirely in the UI.
- Local inference can be slow. On a CPU-only host a single booking can take tens of seconds to a couple of minutes; TREK allows local models up to 5 minutes per document. Uploads are parsed one at a time per user, so several files queue rather than run in parallel.
- Parse jobs are kept for about 10 minutes after they finish. Start the review within that window.
- Privacy — with the Local provider nothing leaves your network. With OpenAI or Anthropic, the document's text (or, for Anthropic, the PDF itself) is sent to that provider for extraction.
- API keys are never returned in plaintext — they are encrypted at rest and only ever shown masked.
Related pages
- Reservations-and-Bookings — the booking import flow this extends
- Admin-Addons — enabling the addon
- Budget-Tracking — linked costs from imported bookings
- Transport: Flights, Trains, Cars