-
-
Notifications
You must be signed in to change notification settings - Fork 755
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.
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.
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.
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).
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.
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.
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.
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.
- 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.
- 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
- Home
- Quick Start
- Install: Docker
- Install: Docker Compose
- Install: Helm
- Install: Proxmox VE (LXC)
- Install: Unraid
- Install: Portainer
- Reverse Proxy
- Environment Variables
- Updating
- Login and Registration
- OIDC SSO
- Two-Factor Authentication
- Password Reset
- User Settings
- Display Settings
- Map Settings
- Notifications
- Offline Mode and PWA
- Languages
- My Trips Dashboard
- Creating a Trip
- Trip Members and Sharing
- Trip Planner Overview
- Places and Search
- Day Plans and Notes
- Map Features
- Route Optimization
- Weather Forecasts
- Reservations and Bookings
- AI Booking Import
- Transport: Flights, Trains, Cars
- Accommodations
- Budget Tracking
- Packing Lists
- Packing Templates
- Todos and Tasks
- Documents and Files
- Tags and Categories
- Real-Time Collaboration
- Collab Chat
- Collab Notes
- Collab Polls
- What's Next Widget
- Public Share Links
- Invite Links