AI-Powered Travel-Operations SaaS for African Tour Operators
Bookings, inventory, trip building, branded PDF quotes, flights, chat, commissions, and Stripe payments - one AI-powered workspace for every actor in the African travel industry.
An AI-powered travel management platform that helps operators manage bookings, trips, quotes, payments, partners, and operations through one unified workspace.
Bookings, inventory, trip building, branded PDF quotes, flights, chat, commissions, and Stripe payments - one AI-powered workspace for every actor in the African travel industry.
This platform is purpose-built for African tour operators, DMCs, hotels, fleet managers, guides, and agents. It replaces the fragmented stack of spreadsheets, WhatsApp threads, and disconnected tools with one unified workspace. The Butler AI co-pilot handles the entire workflow - from creating enquiries and building itineraries to searching inventory, generating quotes, and holding bookings - all from natural-language prompts powered by GPT-4o and PydanticAI.
The platform runs across web (React), mobile (Flutter), and AI chat - all connected to a single FastAPI + PostgreSQL backend. Operators can build multi-day itineraries with drag-to-resequence day cards, search and insert live flights, generate white-label branded PDF quotes in seconds, and collect Stripe payments in multiple currencies with 3DS compliance. Sub-agent commissions, partner chat with voice messages and shared locations, and a real-time availability calendar make this a true end-to-end operations platform for the African safari and adventure travel market.
This platform is a comprehensive operations hub for every actor in the African travel supply chain. It connects tour operators, DMC partners, hotels, vehicle fleets, guides, and sub-agents on a single realtime workspace. The system replaces email chains, WhatsApp groups, and spreadsheet-based quoting with an AI-driven workflow that goes from enquiry to confirmed booking in minutes rather than days.
The Butler AI co-pilot, built on GPT-4o and PydanticAI, can create enquiries, search live inventory across properties, build multi-day itineraries, auto-price trips with margin protection, and generate branded PDF quotes - all from a single natural-language prompt. Realtime Socket.IO channels keep every party - operator, supplier, driver, agent - in sync across web, mobile, and timezones.
The platform is multi-tenant by design, with an org → user → role model enforced by RBAC and Keycloak SSO. Sub-agent seats, referral codes, and automatic commission calculations are built into the core billing layer alongside Stripe multi-currency checkout and supplier-bill tracking.
Seven problems, seven pivots
Every challenge on the left became a shipped capability on the right.
The Platform Modules - One AI Workspace, Five Surfaces, One Backend
Streaming GPT-4o co-pilot that creates enquiries, builds itineraries, searches inventory, generates quotes, and holds bookings from natural-language prompts. PydanticAI validates all structured outputs.
Colour-coded real-time grid showing live inventory across all properties. The trip builder reads this calendar and flags conflicts automatically before any booking is made.
Drag-to-resequence day cards with hotels, vehicles, guides, parks, flights, and activities. The pricing engine recalculates live on every change and outputs a white-label PDF in seconds.
Operators upload logo, colours, and terms once. Every quote is auto-rendered as a branded PDF with per-day breakdown and Accept & Book CTA, sent via email or WhatsApp.
Search, compare, and insert flights directly into any trip day. Flights are auto-added to the quote total with no manual recalculation required.
Manage vehicles, rates, and availability. Driver and guide profiles with languages, ratings, and assignments. Maintenance flags and availability rules enforced across the calendar.
Per-trip inbox shared by all parties. Flutter app supports voice messages with waveform display, shared live locations, and inline resource-hold cards.
Multi-currency 3DS checkout, supplier-bill tracking, and auto-calculated sub-agent commissions with referral codes. PostgreSQL ledger with Stripe webhook reconciliation.
Real-time enquiries, holds, bookings, conversion rate, revenue, and margin - plus a clustered geo-map across all operator countries powered by TanStack Query and PostGIS.
One Flutter codebase serves all roles with tailored dashboards. Sub-agent seats, referral codes, and commission plans enforced at API middleware level with Keycloak SSO and role-scoped JWTs.
Two surfaces, one rhythm
Butler Enquiry Flow
- Operator opens Butler chat
- types or speaks trip request
- GPT-4o creates structured enquiry
- inventory searched automatically
- itinerary draft returned
- operator reviews and confirms
Quote-to-Booking Flow
- Enquiry confirmed
- trip builder opened
- day cards arranged with hotels, vehicles, guides, flights
- pricing engine calculates live
- branded PDF generated
- sent to client via email/WhatsApp
- client clicks Accept & Book
- booking confirmed in ledger
Realtime Collaboration Flow
- Booking confirmed
- per-trip Socket.IO channel created
- operator, supplier, guide, and client joined
- voice messages and live locations shared
- resource holds created inline
- all parties synced in real time across web and mobile
Meet the Butler AI
An embedded co-pilot in the React admin SPA and Flutter mobile app. Model: OpenAI GPT-4o (primary) via a PydanticAI routing layer. Streaming: FastAPI Server-Sent Events (SSE) for real-time streaming responses. Structured Outputs: PydanticAI validates all structured outputs before any database write. Vector Search: pgvector RAG over past enquiries, quotes, and bookings - every interaction improves accuracy.
- Create structured travel enquiries from free-form natural-language prompts
- Search live inventory across hotels, vehicles, guides, parks, flights, and activities
- Build complete multi-day itineraries with auto-sequenced day cards
- Run the live pricing engine and output a margin-protected quote
- Generate and send branded white-label PDF quotes via email or WhatsApp
- Place and manage resource holds across the inventory calendar
- Confirm bookings and update the PostgreSQL ledger
- Search past enquiries, quotes, and bookings via semantic vector search
- Streaming responses via FastAPI SSE for real-time co-pilot feel
- PydanticAI validates every structured output before any write operation
How it all fits together
Three layers, read top to bottom — the applications people use, the services that power them, and the infrastructure they run on.
The rulebook under the hood
Everything inside
10 capability groups, laid out as an uneven mosaic — not a wall of identical cards.
The manifest, module by module
- Flutter (iOS · Android · Web) · Dart · flutter_bloc · Material 3 · Mapbox GL · FCM · FIDO2 passkeys · sqflite · mek_stripe_terminal
- React 18 · Vite · TypeScript · TanStack Query · TailwindCSS · Mapbox GL · react-i18next · dnd-kit · Stripe Checkout
- Geo & Mapping: PostGIS (continent-wide geo queries) · Mapbox GL (web + mobile) · Clustered trip maps · Route visualisation
- FastAPI · Pydantic v2 · PydanticAI · async SQLAlchemy · asyncpg · Alembic · Celery + Redis · REST + WebSocket · uvicorn · gunicorn
- AI & Search: OpenAI GPT-4o · PydanticAI (model routing + validation) · pgvector (semantic search RAG) · FastAPI SSE (streaming)
- Auth & Multi-Tenancy: Keycloak SSO · OAuth2 · JWT (role-scoped) · RBAC · FIDO2/WebAuthn passkeys · Argon2 hashing
- PostgreSQL + pgvector (primary + vector search) · Redis 7 (Celery broker + Socket.IO pub/sub) · SQLite via sqflite (mobile offline)
- Docker · GitHub Actions CI/CD · Nginx (reverse proxy) · Linux production servers
- Realtime & Comms: Socket.IO · Redis pub/sub · Firebase Cloud Messaging (push) · SendGrid (transactional email) · WhatsApp API (quote delivery)
- PDF & Assets: WeasyPrint · ReportLab · Cloudinary (media CDN + signed URLs)
- Payments: Stripe Checkout + webhooks · Stripe Connect (supplier payouts) · Multi-currency 3DS · PostgreSQL ledger
- Flights: Duffel / Amadeus-style API · FastAPI integration layer
What actually changed
Engineering outcomes beneath the headline numbers.
See it in action
The platform is live — browse the site, poke the demo, or install the app.





