Metaviz AI
Travel Tech / Tour Operator SaaS

AI-Powered Travel-Operations SaaS for African Tour Operators

A full-stack, AI-powered travel-operations platform for tour operators, DMCs, hotels, fleets, guides, and agents across Africa. It unifies bookings, inventory, multi-day trip building, branded PDF quotes, in-app flights, partner chat, commissions, and Stripe payments in one workspace, with a built-in OpenAI Butler assistant.

Project Overview

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.

Relevant Keywords
AI Travel Operations Platform
African Tour Operator SaaS
Multi-Day Trip Builder
Branded PDF Quote Generator
Butler OpenAI Co-Pilot
Flutter Travel App
FastAPI Travel Backend
Stripe Multi-Currency Payments
Realtime Trip Chat Socket.IO
PostGIS Geo-Mapping
Multi-Tenant RBAC Travel
DMC Software Africa
Challenges

African Tour Operations Are Still Fragmented Across WhatsApp, Spreadsheets, and Email

high pain
  • No unified operations workspace — African tour operators managed enquiries on WhatsApp, built itineraries in Word docs, priced trips in Excel spreadsheets, and chased payments via email. Every handoff between these tools introduced delay, errors, and lost context — especially when coordinating across multiple suppliers, guides, and DMC partners simultaneously.
  • Itinerary building was slow and manual — assembling a multi-day safari itinerary required cross-referencing availability across hotels, vehicles, guides, parks, and flights in separate systems. A single quote could take days to produce and any change required a full rebuild of the pricing calculation.
  • No live inventory visibility — operators had no real-time view of what was available across their supplier network. Double bookings, last-minute conflicts, and manual phone-and-email availability checks were routine, burning staff time and damaging supplier relationships.
  • Branded quoting was a design bottleneck — creating professional, white-label PDF quotes required a designer or hours in Canva/Word. There was no automated way to produce a branded per-day breakdown with Accept & Book CTAs and send it via email or WhatsApp at the speed clients expected.
  • Flights were a separate process — searching, comparing, and including flights in a trip required switching to a separate GDS or OTA, then manually copying figures into the itinerary and recalculating totals. There was no integrated flight layer that auto-added to the quote.
  • Commission and payment tracking was opaque — sub-agent commissions were calculated manually in spreadsheets. Multi-currency payments, supplier bills, and payout records were scattered across bank portals and email threads with no single ledger or automated reconciliation.
  • Distributed teams had no realtime sync — operators in Nairobi, guides in the Serengeti, and clients in Europe were coordinating over WhatsApp with no shared live context. Job updates, location sharing, and resource holds had no structured channel, leading to miscommunication and missed logistics.
The Solution

How We Built One AI Workspace to Replace the Entire African Tour Operator Stack

We architected an event-driven FastAPI + PostgreSQL backend powering a React SPA, Flutter mobile app, and OpenAI Butler co-pilot — five surfaces sharing one API with zero drift. Every pain point was addressed with a specific, production-grade feature built for the realities of African travel operations.

1Butler AI Co-Pilot — Full Workflow from Prompts: built on GPT-4o and PydanticAI with streaming FastAPI responses, it handles the entire operator workflow from a single natural-language prompt. It creates enquiries, searches live inventory, builds itineraries, generates quotes, and holds bookings — replacing hours of multi-system coordination with seconds of conversational AI.
2Drag-to-Resequence Trip Builder with Auto-Pricing: operators build multi-day itineraries by dragging day cards containing hotels, vehicles, guides, parks, flights, and activities. The pricing engine recalculates live on every change and the trip builder flags availability conflicts automatically, powered by PostgreSQL, Redis, and Flutter.
3Colour-Coded Availability Calendar: a live colour-coded grid shows inventory availability across all properties in real time. Operators see exactly what is available, what is held, and what is booked — eliminating double-booking and manual phone checks before building any itinerary.
4White-Label Branded PDF Quotes in Seconds: operators upload their logo, brand colours, and terms once. Every quote is automatically rendered as a professional branded PDF with a per-day breakdown and Accept & Book CTA, ready to send by email or WhatsApp via WeasyPrint and Cloudinary in seconds, not hours.
5Integrated Flight Search and Insertion: operators search, compare, and insert flights directly into a trip day from inside the platform. Flights are automatically added to the quote total — no switching to a separate GDS or OTA and no manual recalculation.
6Stripe Multi-Currency Payments and Auto-Commissions: Stripe 3DS multi-currency checkout, supplier-bill tracking, and automatically calculated sub-agent commissions are built into the core. A PostgreSQL ledger tracks every transaction, payout, and commission split with Stripe webhook reconciliation.
7Realtime Per-Trip Chat with Voice and Location: every trip has its own Socket.IO + Redis inbox shared by operator, supplier, guide, and client. The Flutter app supports voice messages with waveform display, shared live locations, and inline resource-hold cards — replacing WhatsApp with a structured, context-aware channel.
Before

Build itineraries in Word and price in Excel spreadsheets. Search availability by phoning and emailing each supplier separately. Create PDF quotes manually in Canva or Word — taking hours. Add flights manually from a separate GDS and recalculate totals by hand. Track commissions in a shared spreadsheet with no automation. Coordinate guides, drivers, and clients over WhatsApp with no shared context.

After

Butler AI builds a full itinerary from a single natural-language prompt in seconds. Live colour-coded availability calendar across all properties in real time. Branded white-label PDF quote generated and sent in seconds via email or WhatsApp. Integrated flight search inserts flights into the trip day and auto-adds to quote total. Sub-agent commissions auto-calculated and tracked in a PostgreSQL ledger with Stripe webhooks. Per-trip Socket.IO inbox with voice messages, shared live locations, and resource-hold cards.

Ecosystem

The Platform Modules — One AI Workspace, Five Surfaces, One Backend

Butler AI Co-Pilot

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.

OpenAI GPT-4oPydanticAIFastAPIStreaming SSE

Availability Calendar

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.

PostgreSQLRedisFlutterFastAPI

Trip Builder + Auto-Pricing

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.

FlutterFastAPIWeasyPrintMapboxPostgreSQL

Branded PDF Quotes

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.

WeasyPrintCloudinarySendGridFastAPI

Flight Search & Insertion

Search, compare, and insert flights directly into any trip day. Flights are auto-added to the quote total with no manual recalculation required.

Duffel / Amadeus-style APIFastAPIFlutter

Fleet, Drivers & Guides

Manage vehicles, rates, and availability. Driver and guide profiles with languages, ratings, and assignments. Maintenance flags and availability rules enforced across the calendar.

PostgreSQLReact MapFastAPIMapbox

Realtime Per-Trip Chat

Per-trip inbox shared by all parties. Flutter app supports voice messages with waveform display, shared live locations, and inline resource-hold cards.

Socket.IORedisFlutterFCMFastAPI

Stripe Payments & Commissions

Multi-currency 3DS checkout, supplier-bill tracking, and auto-calculated sub-agent commissions with referral codes. PostgreSQL ledger with Stripe webhook reconciliation.

Stripe CheckoutStripe WebhooksPostgreSQLFastAPI

Live Ops Dashboard

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.

TanStack QueryMapboxPostGISFastAPIReact

Multi-Tenant RBAC

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.

Keycloak SSORBACJWTFastAPIFlutter
User Experience

Designed for every screen

Web

  • Full ops dashboard: real-time enquiries, holds, bookings, conversion, revenue, and margin KPIs
  • React trip builder with drag-to-resequence day cards, inventory search, and auto-pricing engine
  • Colour-coded availability calendar across all properties and suppliers
  • Branded PDF quote generator — upload logo once, generate quotes in seconds
  • Flight search, comparison, and insertion into itinerary days
  • Fleet, driver, and guide management with availability rules and assignment views
  • Stripe payments management: multi-currency checkout, supplier bills, commissions ledger
  • Sub-agent management: seat allocation, referral codes, commission plan configuration
  • Mapbox PostGIS clustering: continent-wide trip map with country-level drill-down
  • Role-scoped views enforced at UI and API middleware level (Keycloak SSO, RBAC JWT)
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 confirmsQuote-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 ledgerRealtime 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

Mobile

Platforms: iOS 15+ · Android 11+ · Web (React, all modern browsers)

  • Butler AI co-pilot accessible from the main screen — create enquiries, build trips, and generate quotes by voice or text
  • Full offline capability via SQLite local store — works in remote safari locations without connectivity
  • Multi-day itinerary view with drag-to-resequence day cards and live pricing
  • Realtime per-trip chat with voice messages, waveform display, and shared live location
  • Push notifications via FCM for enquiry updates, booking confirmations, and payment events
  • Stripe multi-currency checkout and payment confirmation in-app
  • Sub-agent commission tracking and referral code management
  • Role-scoped dashboards for operators, DMC partners, guides, and drivers
  • Biometric login with Face ID / Touch ID and FIDO2 passkey support
  • Mapbox-powered clustered geo-map of all active trips across the continent
AI Assistant

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.

Embedded widget
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
Example queries
Build a 7-day Tanzania safari for 4 pax in October — two nights Serengeti, two Ngorongoro, three Zanzibar, budget $4,500 pp
What vehicles do we have available in Nairobi between 12–18 March for a group of 8?
Generate a quote for the Okavango Delta itinerary we built yesterday and send it to the client as a PDF
Show me all enquiries from European agents this quarter with a value over $10,000
Hold the Sanctuary Lodge for 3 nights starting 5 April and add it to the Mombasa itinerary
Architecture

System design

Frontend
React 18 · Vite · TypeScript · TanStack Query · TailwindCSS · Mapbox GL · react-i18next · Flutter (iOS · Android · Web) · Dart · flutter_bloc · Material 3
Backend
FastAPI · Pydantic v2 · async SQLAlchemy · Celery + Redis · REST + WebSocket
Infrastructure
Docker · GitHub Actions CI/CD · Nginx · PostgreSQL + pgvector · Redis 7 · Linux
Flutter Mobile App (iOS + Android) — flutter_bloc + GetIt for state/DI; SQLite via sqflite for offline store with prioritised sync queue; Firebase Cloud Messaging for push notifications; Mapbox GL for geo-mapping; biometric login and FIDO2 passkeys; mek_stripe_terminal for Tap-to-PayReact + Vite Web SPA — React 18 + TypeScript + TanStack Query; TailwindCSS + Mapbox GL; react-i18next for multi-language; dnd-kit for drag-to-resequence trip builder; Stripe Checkout + webhooks for paymentsFastAPI Backend (Python) — Async FastAPI with uvicorn/gunicorn multi-worker; SQLAlchemy async + asyncpg; Alembic migrations; Pydantic v2 + PydanticAI; Celery + Redis (task queue + pub/sub); FastAPI WebSocket for realtime per-trip channelsAI Layer — OpenAI GPT-4o (vision + reasoning) via PydanticAI routing; pgvector for semantic search RAG over past quotes and bookings; Streaming SSE responses to web and mobile clientsPDF & Assets Engine — WeasyPrint for branded PDF rendering; ReportLab for complex layouts; Cloudinary for operator media CDN (logos, trip images); SendGrid for transactional email deliveryGeo & Mapping Layer — PostGIS extension on PostgreSQL for continent-wide geo queries; Mapbox GL on web and mobile; clustered trip maps with country-level drill-down; trip route visualisationAuth & Multi-Tenancy — Keycloak SSO with OAuth2 + JWT; RBAC enforced at FastAPI middleware and UI level; role-scoped JWTs for operator, DMC, guide, driver, agent, and admin; signed Cloudinary URLs for media access controlInfrastructure — Docker + GitHub Actions CI/CD; Nginx reverse proxy; PostgreSQL + pgvector (primary + vector store); Redis 7 (Celery broker + Socket.IO pub/sub); Linux production servers
Business Logic

The rules that run the product

Rules
  • All entities follow the lifecycle: Enquiry → Itinerary → Quote → Hold → Booking → Invoice → Payment → Completion
  • The pricing engine is margin-protected: operator margin is locked per trip; supplier rates and commissions are calculated separately
  • Availability holds are time-bound and auto-release if not converted to a booking within the configured window
  • Butler AI outputs are always validated by PydanticAI before any write to the database
  • Sub-agent commissions are calculated per-booking based on the assigned commission plan and auto-reconciled with Stripe webhooks
  • RBAC is enforced at FastAPI middleware and UI level — role-scoped JWTs restrict data access and write permissions per actor
  • Stripe Connect requires supplier onboarding before any payout can be initiated
  • All PDF quotes use the operator's uploaded branding assets stored in Cloudinary with signed URL access control
Workflows
  • Butler Enquiry Workflow: Operator sends prompt → Butler creates structured enquiry → inventory searched → availability calendar checked → itinerary draft built → pricing engine runs → branded PDF generated → quote sent to client
  • Trip Builder Workflow: Operator opens builder → day cards created → hotels, vehicles, guides, flights inserted → conflicts flagged by calendar → pricing recalculated live → quote PDF rendered → sent via email or WhatsApp
  • Booking Confirmation Workflow: Client accepts quote → booking record created → supplier holds converted to confirmed reservations → Stripe invoice generated → payment link sent → commission splits calculated → all parties notified via Socket.IO and FCM
  • Realtime Collaboration Workflow: Booking confirmed → per-trip Socket.IO channel opened → operator, supplier, guide, client joined → voice messages, live locations, and resource-hold cards shared inline → all changes synced across web and mobile in real time
Automations
  • Celery Beat sends follow-up reminders to clients with open quotes at configurable intervals
  • FCM push notifications fire on every enquiry update, hold confirmation, booking event, and payment receipt
  • pgvector embeddings are computed asynchronously by Celery on every new quote and booking save, improving Butler AI search accuracy over time
  • Stripe webhook handler auto-reconciles payments and updates invoice status and commission ledger within seconds
  • Alembic migrations run automatically on deployment startup via container hooks
  • Availability conflicts are detected and flagged automatically when any inventory item is added to a trip day
Features

Everything inside

Butler AI Co-Pilot

  • Create enquiries, build itineraries, search inventory, and generate quotes from natural-language prompts
  • Streaming GPT-4o responses via FastAPI SSE for a real-time co-pilot feel on web and mobile
  • PydanticAI validates every structured output before any write operation
  • pgvector semantic search RAG over all past enquiries, quotes, and bookings
  • Multi-turn conversation with full session history maintained across interactions

Enquiry & CRM

  • Structured enquiry pipeline with source tracking and status management
  • Full client profile with enquiry, quote, and booking history
  • Sub-agent seat management with referral codes and commission plan assignment
  • One-tap conversion from enquiry to itinerary build

Trip Builder & Quoting

  • Drag-to-resequence day cards with hotels, vehicles, guides, parks, flights, and activities
  • Live pricing engine recalculates on every change with margin protection
  • Availability calendar integration flags conflicts before booking
  • White-label PDF quote generation with branded per-day breakdown and Accept & Book CTA
  • Automated follow-up reminders via Celery Beat after quote delivery

Inventory & Availability

  • Colour-coded real-time availability calendar across all properties and supplier types
  • Time-bound resource holds that auto-release if not converted
  • Fleet management: vehicle rates, availability rules, maintenance flags
  • Driver and guide profiles: languages, ratings, assignments, and availability

Flights

  • Search, compare, and insert flights directly into any itinerary day
  • Flights auto-added to quote total with no manual recalculation
  • Duffel / Amadeus-style API integration for live availability and pricing

Payments & Commissions

  • Stripe multi-currency 3DS checkout with automatic reconciliation via webhooks
  • Supplier-bill tracking and payout management via Stripe Connect
  • Sub-agent commission auto-calculation and PostgreSQL ledger
  • Referral code tracking and commission plan configuration per agent

Realtime Chat & Collaboration

  • Per-trip Socket.IO + Redis inbox shared by operator, supplier, guide, and client
  • Voice messages with waveform display on Flutter mobile
  • Shared live location updates within trip channel
  • Inline resource-hold cards for in-chat booking actions

Live Ops Dashboard

  • Real-time KPIs: enquiries, holds, bookings, conversion rate, revenue, and margin
  • Clustered Mapbox + PostGIS geo-map of all active trips across the continent
  • Country-level drill-down and per-operator performance views
  • TanStack Query for live data refresh without page reload

Multi-Tenant & RBAC

  • Org → user → role model with Keycloak SSO and RBAC-enforced at API middleware
  • Role-scoped JWT restricts data access per actor: operator, DMC, guide, driver, agent
  • Sub-agent seats, referral codes, and commission plan configuration per org
  • One Flutter codebase serving all roles with tailored dashboard views

Auth & Security

  • Keycloak SSO with OAuth2, JWT, and RBAC
  • FIDO2 passkeys and biometric login on Flutter mobile
  • Signed Cloudinary URLs for all media access control
  • Full audit logging on sensitive operations
Tech Stack

Built on a modern stack

Frontend
Flutter (iOS · Android · Web) · Dart · flutter_bloc · Material 3 · Mapbox GL · FCM · FIDO2 passkeys · sqflite · mek_stripe_terminalReact 18 · Vite · TypeScript · TanStack Query · TailwindCSS · Mapbox GL · react-i18next · dnd-kit · Stripe CheckoutGeo & Mapping: PostGIS (continent-wide geo queries) · Mapbox GL (web + mobile) · Clustered trip maps · Route visualisation
Backend
FastAPI · Pydantic v2 · PydanticAI · async SQLAlchemy · asyncpg · Alembic · Celery + Redis · REST + WebSocket · uvicorn · gunicornAI & 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
Database
PostgreSQL + pgvector (primary + vector search) · Redis 7 (Celery broker + Socket.IO pub/sub) · SQLite via sqflite (mobile offline)
DevOps
Docker · GitHub Actions CI/CD · Nginx (reverse proxy) · Linux production servers
Tools
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 ledgerFlights: Duffel / Amadeus-style API · FastAPI integration layer
Results

Outcomes that move the business

🤖
AI as a First-Class Tool
~40% Faster Feature Development
📄
Days of Quote Work Replaced by Seconds
🌍
Continent-Wide Geo Scale
🏢
True Multi-Tenancy from Day One
💬
Realtime for Distributed Teams
💳
Automated Commission & Payment Tracking
  • Delivered a full-stack AI travel-ops platform (React SPA, Flutter mobile, Butler AI, PDF engine, Stripe billing) from a single FastAPI + PostgreSQL backend — ~40% faster feature development, zero API drift
  • Butler AI co-pilot built on GPT-4o + PydanticAI executes the full enquiry-to-booking workflow from natural-language prompts, replacing a multi-system manual process with seconds of conversational AI
  • Margin-protected pricing engine + WeasyPrint white-label PDF generator replaces days of spreadsheet quoting with a sub-second automated workflow
  • Realtime Socket.IO + Redis per-trip channels with voice messages, shared live locations, and inline resource holds replace WhatsApp coordination across distributed teams
  • PostGIS + Mapbox GL continent-wide geo-clustering scales from single operator to DMC-network deployments with country-level drill-down on the live ops dashboard
  • Multi-tenant RBAC with Keycloak SSO, sub-agent seats, referral codes, and commission plans provides enterprise-grade access control from day one
  • Stripe multi-currency 3DS checkout + Connect + webhook auto-reconciliation eliminates manual commission tracking and supplier payout management

See it in action

My Role & Deliverables

Role: Full-Stack Engineer (Travel SaaS) — Python · FastAPI · React · Flutter · OpenAI · Multi-Tenant

Project Description: Built a full-stack, AI-powered travel-operations platform for African tour operators, unifying bookings, inventory, multi-day trip building, branded PDF quotes, flights, chat, and Stripe payments in one workspace. I architected an event-driven FastAPI + PostgreSQL backend serving a React web app, a Flutter mobile app, and an OpenAI Butler co-pilot that runs the full workflow from prompts. I built the margin-protected pricing engine, white-label PDF quoting, realtime Socket.IO sync, PostGIS geo-mapping, and a multi-tenant RBAC model with sub-agent commissions.

Skills & Deliverables:

  • Full-Stack Development (Python FastAPI, React, Flutter)
  • AI App Development (OpenAI GPT-4o, PydanticAI, pgvector RAG)
  • iPad & Mobile App Development (Flutter iOS/Android)
  • Multi-Tenant SaaS Architecture (RBAC, Keycloak SSO, org model)
  • PDF Generation Engine (WeasyPrint, white-label branding)
  • Realtime Systems (Socket.IO, Redis pub/sub, FCM)
  • Payments & Commissions (Stripe multi-currency, Connect, webhooks)
  • Geo-Mapping (PostGIS, Mapbox GL, continent-wide clustering)