Case study2025

A complete travel agency CRM — from lead to issued ticket

The central platform the entire company runs on

Requests arrived from the website, telephony lived elsewhere, quotes went out by email, sales were tracked in spreadsheets, and agent performance was tracked nowhere. We built the system that holds all of it: the agent picks up the request, calls, searches Sabre and Amadeus, quotes, collects payment and issues the ticket — without ever leaving the app.

StackLaravelVue.jsMySQLMongoDBGDSVoIPWhatsApp
REQUEST #4821NEGOTIATINGRequestQuoteNegotiationPaymentTicketNew York → Tokyo · Business · 2 paxAGENTM. ReyesATTACHED ACTIVITYVoIP call · 4:12 · recordedWhatsApp · 3 messagesQuote sent · 2 optionsGROSS PROFIT$840Sabre + Amadeus
Client
Business & first class ticket agency
Project type
Custom CRM platform
Our role
Architecture, development, external integrations
Status
In production · ongoing development
The context

A process easy to describe, hard to operate.

The client sells premium airline tickets. Their business flow is easy to describe: a flight request comes in from the website, an agent picks it up, searches the options, sends quotes, negotiates on the phone, takes payment, issues the ticket. Dozens of times a day, with dozens of agents, across several offices.

All of it happened across separate tools: the reservation system in one place, telephony in another, quotes over email, sales tracked in spreadsheets — and agent performance tracked nowhere at all. They needed one system that could hold everything.

The search engine behind itThe Sabre-integrated flight search engineThe approval flow, automated laterApproval Engine — the CRM's quality checks
  • Bookings in one app, telephony in another, quotes over email
  • Sales recorded in spreadsheets, updated by hand
  • Agent performance unmeasured, and therefore invisible
  • “I spoke to the customer, but it isn't written down anywhere”
They wanted one system where an agent spends the entire day — from the request landing on the site to the ticket issued and the commission calculated.
What we built

The company's central system.

A complete CRM where the agency's entire operation takes place. Requests arrive automatically from the company's websites and are distributed to agents through queues and priorities. From there, everything that follows — search, quote, call, negotiation, payment, ticket — happens in the same application.

Request from the site
CRM · the agent works
Ticket issued

One path, one screen. Everything that happens along the way stays attached to the request — calls, messages, quotes, payments.

What the system holds

The main flow: from request to ticket

Flight requests arrive automatically from the company's websites and are distributed to agents by queue and priority. The agent picks one up, builds the quote, sends it, negotiates, then records the sale: passengers, payment method, collection, invoice, ticket issued.

Flight search, straight from the CRM

The system connects to the global distribution systems — Sabre and Amadeus — pulling both public fares and the agency's negotiated private fares, with the real commission shown on every option. The agent never leaves for another app.

Telephony and WhatsApp, inside the CRM

Agents call straight from the app through the VoIP integration. Every call — duration, recording, outcome — attaches automatically to the customer's request. So do WhatsApp conversations, routed automatically to the right agent. No more “I spoke to the customer, but it isn't written down anywhere”.

Team management

The system measures every agent's and every team's performance — sales, profit, conversion rates. It has automatic call queues, targets and leaderboards, plus the administrative side: leave requests, penalties, work schedules, activity logs.

Quality control

An agent can't just close an opportunity: they have to request a manager's approval, and the manager checks whether the work was actually done — calls made, quotes sent, follow-ups attempted. The approval flow lives in the CRM, and we later automated it as a separate project.

Support and after-sales

Support cases, booking changes, credits issued to customers, refunds — everything that happens after the sale stays in the same system.

Why it's hard

Not one complicated feature. The number of things that must work together.

01

One process, six external systems

A request from the website has to reach the right agent, who calls through a telephony provider, searches two different global reservation systems, sends a quote, collects payment through several methods and issues a ticket. Every step touches another system, with its own rules.

Why it's hard

The CRM is the layer that holds them all together and makes them feel like a single process. The agent sees one screen; behind it, the system talks to everything else.

02

External systems behave unpredictably

Every piece is an integration with a system you don't control: a GDS that responds differently from its documentation, a phone exchange, a payment processor. When one misbehaves, the agent must not be left stuck.

Why it's hard

Each integration has its own protective layer — retries, intermediate states, errors handled explicitly — so a problem in an external system never halts the sale in progress.

03

In the end, the numbers have to add up

The sale doesn't end at the issued ticket. Everything must be reflected correctly in the company's profit and in the agent's bonus — otherwise the system loses the trust of exactly the people who use it every day.

Why it's hard

The real commission, the profit per sale and performance per agent and team are computed from the same data that moved through the flow. No parallel ledger, no manual reconciliation at month end.

The outcome

The agency runs entirely on this system.

An agent spends the day in a single application: receiving requests, calling, searching, quoting, selling and issuing.

And management sees in real time what every person and every office produces — from the same data the agents work on, not from a report assembled separately.

2
Global reservation systems connected: Sabre and Amadeus
1
Application where the agent spends the entire day
0
Calls or messages that go unrecorded
Live
Every agent's and office's performance, in real time

Is your company running on five tools that don't talk to each other?

We build the layer that makes them feel like one process — and that finally measures what's actually happening.