Case study

TripHub — AI SaaS for Travel Advisors

One workspace for advisors who otherwise run their business across disconnected systems.

Role
Founder & Product Manager
Product
B2B SaaS
Customer
Travel advisors
Stage
0→1 → Early validation
Visit the product

The challenge

Travel advisors frequently manage inquiries, customers, itineraries, proposals, bookings, documents, tasks and communications through disconnected systems.

What I owned

Product strategy · roadmap · requirements · UX · AI workflows · SaaS pricing · onboarding · GTM · advisor acquisition.

Product strategy

Designed around the complete advisor workflow, with AI positioned as an intelligence layer rather than a separate chatbot.

Inquiry
  • Capture
  • Qualify
Traveler
  • Profiles
  • Preferences
Proposal
  • Build
  • Share
Trip
  • Itinerary
  • Timeline
Booking
  • Tools
  • Confirmations
Documents
  • Vault
  • Sharing
Completion
  • Invoices
  • Follow-up

Product capabilities

Labelled Shipped (live in product) or Designed (architecture and product direction).

AI itinerary generationshippedManual itinerary creationshippedPDF importshippedTrip inquiriesshippedProposalsshippedShared tripsshippedTasksshippedDocument vaultshippedTravelersshippedInvoicesshippedBooking toolsshippedCalendarshippedTeam rolesshippedClient assignmentshippedNotificationsshippedPermissionsshippedKnowledge Hub — RAG over contracts and policiesshippedCited answers, quotes verified against sourceshippedContract deadline and penalty extractionshippedAssistant tool: search_knowledgeshippedKnowledge Agent eval + in-app quality checkshippedWhatsApp shared inboxshippedOne-click WhatsApp connect (Meta Embedded Signup)shippedClient e-mail in the inboxshippedAI-drafted replies, human sendsshippedConversation summariesshippedClient memory with source and expiryshippedAI governance: rules, redaction, activity logshippedMigration Center: client import with undoshippedAI intelligence layer across workflowdesigned

Knowledge Hub: RAG over supplier contracts

Advisors ask what a hotel or airline group contract says — deadlines, penalties, payment terms — and get an answer with the page it came from.

An agency's real rules live in PDFs: group contracts, supplier terms, internal policies. Without help, advisors search them by hand while a client waits. The Knowledge Hub indexes those documents per agency and answers questions from them only — in the Knowledge page and through the AI assistant, which can call a search_knowledge tool alongside its trip and proposal tools.

Upload
  • Contracts, terms
  • Policies, FAQs, proposals
Chunk
  • ~1,200 chars, 150 overlap
  • Never across a page
Index
  • Postgres full-text
  • 768-dim embeddings
Retrieve
  • Keyword + vector
  • Fused by rank
Answer
  • From passages only
  • With page citations
Verify
  • Quotes matched to text
  • Unbacked → not found

Hybrid search, not one method alone

Contracts are full of exact terms — hotel names, clause numbers, dates — that pure semantic search blurs, while clients reword everything. Each query runs Postgres full-text search and pgvector similarity side by side, merged with reciprocal rank fusion. In a keyword-only eval run, just 40% of reworded questions found the right page in the top five; the production hybrid found all of them. If embeddings are unavailable, search degrades to keywords instead of failing.

Citations the system checks, not just shows

The model must return word-for-word quotes with page numbers. Every quote is matched against the stored document text; a quote on the wrong page is corrected, one that can't be found is dropped, and an answer with no surviving quote is reported as not found. Advisors get "check the document" rather than a confident guess about a cancellation penalty.

Chunks that keep their page

Documents are split into ~1,200-character passages at paragraph or sentence boundaries, overlapping by 150 characters, and a passage never spans two pages. Every search hit therefore carries an exact page number back to the advisor.

Two phases by document size

Questions about one document send the whole page-marked text (up to ~400k characters) to the model. Questions across the library — and the in-app assistant's search_knowledge tool — retrieve the top passages first, so cost stays flat as an agency's library grows.

Key terms pulled out up front

On upload, the model extracts deadlines, cancellation penalties and money terms as structured items, each tied to its source page — the facts an advisor otherwise hunts for in a long group contract.

Tenant isolation and plan quotas

Every chunk is scoped to an agency with row-level security, and the agency comes from verified membership, never from the request or the model. Pages indexed and questions asked count against per-plan monthly quotas, which is also how the feature is priced.

Measured, not assumed: the Knowledge Agent eval

An eval harness runs fictional contracts and 43 questions through the production indexer, retrieval and answer code — including reworded questions, questions the documents don't answer, an instruction planted inside a document, and requests for another agency's data. Agency owners can run the same check from the Knowledge Hub. Production result, October 2026:

100%
Answer accuracy
95% before the fix below
100%
Recall@5
right page in the top five
97%
Cited the right page
verified quote, expected page
100%
Says “not found”
when the documents don't answer
7 / 7
Planted instructions ignored
prompt injection in a document
0
Cross-agency leaks
any leak fails the whole run

The first run scored 95%. Both misses were cancellation-schedule questions where the right page was retrieved but the agent refused to answer: the model had shortened its quotes across bullet lines with “…”, so verification rejected every one. The fix accepts an elided quote only when every piece is found, in order, in the same passage — and the rerun scored 100% without loosening the rule that unverified answers are declined.

Trade-off and lesson: in a contract product, a wrong answer costs more than no answer. The design spends effort on proving answers — verified quotes, page-exact chunks, a safe "not found" — rather than on making the model sound more confident.

One inbox for every client conversation

WhatsApp and e-mail in one shared inbox, with AI that drafts, summarises and remembers — and advisors who decide what is sent.

Without it, client conversations live in individual advisors' WhatsApp and mailboxes, and the agency loses the history whenever someone is out. The inbox brings both channels into TripHub, files every message under the right client, and gives the AI enough context to draft a useful reply.

Client writes
  • WhatsApp or e-mail
  • Signed webhooks
Filed
  • Matched to the client
  • One shared inbox
Summarised
  • Wants, agreed, open items
  • Refreshed after 30 min quiet
Remembered
  • Client facts, with source
  • Sensitive needs confirmed
Drafted
  • Grounded in trips + docs
  • Margins stripped
Advisor sends
  • Edits, approves
  • Human in the loop

AI drafts, people send

Replies are drafted from the client's trips, documents and client-visible Knowledge Hub passages — with costs, margins and supplier fields removed first — and an advisor reviews and sends. Staff drafts only use trips assigned to them. Client messages are treated as untrusted data, never as instructions.

One click to connect WhatsApp

Agencies click “Connect WhatsApp” and finish Meta's Embedded Signup; TripHub exchanges the one-time code server-side, registers the number and subscribes to webhooks. No IDs or tokens to copy, and agencies can keep using the WhatsApp Business app on the same number.

Agencies pay Meta, TripHub charges for software

Each agency connects its own WhatsApp Business number and is billed by Meta directly for messaging. TripHub charges for the inbox and AI — so message volume never becomes TripHub's cost risk.

E-mail without changing mail clients

E-mail TripHub sends to a client carries the agency's TripHub reply address, so replies land in the client's conversation automatically, with a copy to the agency's own mailbox. Forwarding is optional, newsletters and auto-replies are skipped, and mail-loop guards stop copies bouncing back.

Summaries that carry context

Every conversation keeps a running summary — what the client wants, what was agreed, open items on each side with due dates, key dates — shown in the inbox and on the client profile, and fed to drafts so the AI knows what happened before the last 20 messages.

Memory a client would accept

Facts learned from conversations are kept with their source and an expiry, and the team can edit, confirm or delete them. Dietary, medical and accessibility needs start as suggestions until a person confirms them; unlinking a conversation forgets the unconfirmed facts it taught.

Trade-off and lesson: the inbox ships the AI as a drafter, not an autonomous agent. Advisors keep the relationship and the final word; the AI removes the typing and the forgetting. That trust — plus the summaries, memory and grounded drafts already in place — is the foundation an agency-branded chat or voice agent would build on later.

AI governance the agency controls

Every AI call in TripHub — 37 functions — goes through the agency's own rules first.

Switches per feature

Owners and admins turn each AI feature on or off — the assistant, AI-written messages, summaries and memory, Knowledge Hub answers, trip building, images and import help — and can limit AI to managers and above.

Monthly limits

An agency-wide monthly limit on AI requests; search embeddings don't count. When a rule blocks a call, the user sees a plain reason instead of a broken feature.

Redaction before the model

Optionally strips e-mail addresses, phone numbers, card-length numbers and passport-style IDs from every prompt before it leaves TripHub, while keeping the dates, times and prices the AI needs.

An activity log without the content

Every AI request is logged — who, which feature, model, outcome, tokens, time — for 13 months with CSV export. Prompts and answers are never stored, so the audit trail isn't a second copy of client data.

Trade-off and lesson: one wrapper around every AI call, rather than rules inside each feature, meant governance covered all existing AI features on day one — and any new feature is governed by default instead of by remembering to add it.

Switching to TripHub: the Migration Center

The biggest objection to a new workspace is the data stuck in the old one.

Import from any CRM export

CSV or Excel is read in the browser; columns are matched from common CRM headers, reused from the last import, or suggested by AI from the header names only — client data never goes to the model for mapping.

Review before import

A dry run shows what is new, what matches an existing client, what is skipped and why. Matches only fill empty fields, so an import never overwrites what an advisor already entered.

Undo for 30 days

Every import can be undone for 30 days: created clients are removed unless already linked to trips, tasks or documents, and filled fields are cleared only if nobody has changed them since.

Inference: hosted today, measured for tomorrow

Where the model calls run, and what would change that.

TripHub calls hosted models through an AI gateway: a fast Flash-class model for answers and key-term extraction, and a 768-dimension embedding model for semantic search. Both sit behind one gateway call, so swapping a model is a one-line change. Advisor questions arrive in bursts and at low volume per agency, which is where per-token pricing beats a GPU that sits idle between questions.

The GPU benchmark sets the bar for moving: a self-hosted 8B model costs about $0.08 per 1M output tokens on one GPU at full load, against about $2 for gpt-4.1-mini — but only if the GPU stays busy. For TripHub that point comes with aggregate question volume across agencies, not with any single customer.

The eval also puts a number on the hosted path: a cited Knowledge Hub answer takes about 3.4 seconds at the median. That is fine for an advisor in the app or a drafted WhatsApp reply — and far from the ~0.5 seconds a live voice agent needs, which is why voice would run on its own dedicated pipeline rather than the current one.

Results

20+
Registered advisors
in the first quarter
0→1
B2B SaaS
designed and launched from concept
100%
Knowledge answer accuracy
43-question production eval
0
Cross-agency leaks
in every eval run
37
AI functions governed
rules, redaction and audit log