Services
Web Development→Mobile Development→Cloud & DevOps→AI & Automation→UI/UX Design→SEO & GEO→
Company
Case StudiesAboutBlogContact
hello@codevibe.in+91 70677 09224
Client Case Study · Travel CRM · Integrations

Publish an itinerary. It’s on the customer’s WhatsApp.

Codevibe wired a holiday travel company’s CRM to WhatsApp, its phone system, payments, e-signature and Meta. One action triggers the next, and the sales desk stops being the glue between tabs.

CRMone record per customer
WhatsAppvia DoubleTick
Callsvia CallerDesk
Call reviewAI reviewAI · Gemini
E-signvia Documenso
PaymentsPayU · Razorpay
Meta adsleads in · results out
Flights & hotelsFlightslive from the supplier
Emailsame message, same moment
  1. Lead arrivedInstagram ad → CRM, agent assigned
Built inside
A holiday travel company’s CRM
When
Built July to October 2026 · engagement ongoing
Connected
Nine tools: WhatsApp · Phone system · AI call review · E-signature · PayU · Razorpay · Meta ads · Flights & hotels · File storage
Stack
NestJS · PostgreSQL · BullMQ · React · Python
// EXECUTIVE SUMMARY

The work was not a new CRM. It was the plumbing between the CRM and the tools a travel desk already pays for, so that the desk stops being the plumbing.

Five journeys now run without a person in the middle. The page shows one customer’s day both ways, then each journey as it happens, then what it would hand back to a desk like yours.

1.2 h → 4 min
Admin for one customer, by hand → connected · estimate
5
Journeys that run on their own
11
Points every call is scored on
4
Months, first module to last
// SECTION 01 · BEFORE AND AFTER

One customer’s day, done twice.

The same six moments, first the way a sales desk does them by hand, then the way the connected CRM does them. The middle column is the work that used to sit on a person.

  1. 09:10A lead comes in from an Instagram ad

    Open Ads Manager, download the leads sheet, copy the row into Excel, text “Hi” from a personal phone, decide who should take it.

    about 6 min, by hand

    The lead is already in the CRM with the ad and campaign attached, given to the next agent in turn, and a welcome message has gone out on WhatsApp.

    nothing to do
  2. 11:30The itinerary is ready

    Export it, open WhatsApp Web, search the number, type out the trip summary, attach the file, then send the same thing again by email.

    about 5 min, by hand

    Press Publish. The customer gets a WhatsApp message with the trip summary and a “View itinerary” button, plus the email. The agent sees ✓✓ when it is read.

    nothing to do
  3. 12:15Time to call the customer

    Dial from a mobile, talk, then type what was said into a sheet from memory. No recording, no proof the call happened.

    about 3 min, by hand

    Press Call on the lead. The phone rings, the customer is bridged, and the recording and call log attach themselves to the lead.

    about 30 s
  4. 15:00The manager asks how the calls went

    Listen to a handful of recordings at full length. Most calls are never heard by anyone but the agent.

    about 30 min, by hand

    Every call is transcribed, summarised and scored on eleven points overnight. The manager opens a dashboard and reads the flags.

    about 1 min
  5. 16:40The customer pays the first instalment

    Fill in the contract, email a PDF, chase for a signature for days, then file the scanned copy somewhere.

    about 25 min, by hand

    The payment itself triggers the contract: generated, sent for e-signature, chased daily on WhatsApp until signed, stored when done.

    about 2 min
  6. Next weekThe second instalment falls due

    Check the sheet, remember who is due, message each one by hand. Some get forgotten until they are late.

    about 4 min, by hand

    Reminders go out three days before, on the day, and at three and seven days late, each with a payment link. Nothing to remember.

    nothing to do
Admin in one day, for
1.2 hby hand
4 minwith the CRM doing the rest

Minutes are estimates of the by-hand steps described in each row. The manager’s review is counted once a day, the rest once per customer. Put your own numbers in the calculator further down.

// SECTION 02 · THE FIVE JOURNEYS

Five things that used to be someone’s job, drawn as they happen.

Each journey plays as you reach it. Every card has the plain version and, underneath, the line an engineer would want.

Journey 01 · WhatsApp
  1. Journey 01 · WhatsApp

    Publish the itinerary. The customer has it on WhatsApp.

    The agent builds the trip in the CRM and presses Publish. That one press sends an approved WhatsApp message with the destination, nights, hotels, activities, travellers and price filled in, plus a button that opens the itinerary. The email goes out at the same moment. The agent sees the ticks turn blue when it is read, in the same chat thread they reply from.

    For your developeritinerary.published → outbox → rule → DoubleTick template send with 7 params and a dynamic-URL button · status webhooks SENT → DELIVERED → READ keyed on the message id we minted · same event also renders the email
  2. Journey 02 · Calling

    Press Call. The phone rings, the customer is bridged, the recording files itself.

    No number to dial, no personal phone. The CRM asks the phone system to ring the agent first, then connect the customer, who sees the business line. When the call ends, its duration, outcome and recording attach themselves to the lead, so “did anyone actually call this lead” is a fact, not a claim.

    For your developerPOST /leads/:id/call → CallerDesk click_to_call, agent matched by email · call webhook stored verbatim, then upserted into lead_calls by CallSid · recordings listed on the lead · WhatsApp voice calls run on a WebRTC softphone in the browser with a licence pool
  3. Journey 03 · AI call review

    Every call is listened to, scored and summarised. Overnight.

    Managers used to sample a few recordings. Now each recording goes to Gemini, which writes the transcript in the language spoken, an English translation, a summary, the customer’s travel requirements, and scores the agent on eleven points from greeting to closing. Red flags and coaching notes are on a dashboard by morning.

    For your developerPython pipeline: pull recordings (telephony + WhatsApp calls) → Gemini File API → one structured call to gemini-2.5-pro → JSON validated against a schema → upsert call_insights → /callsense dashboard · idempotent per call, retries, cost tracked
  4. Journey 04 · E-signature

    The first payment triggers the contract. It chases itself until it is signed.

    When the first instalment is paid, the CRM builds the contract from the itinerary, customer and payment plan and sends it for e-signature: customer first, then the company. The signing link goes out on WhatsApp. Every day it stays unsigned, a reminder goes out on WhatsApp and email. The signed copy lands on the booking the moment both have signed.

    For your developerpayment settled → contract PDF (pdfkit) → Documenso envelope, two sequential signers · contract.sent publishes WhatsApp + email · daily signature-reminder cron, one per contract per day · webhook events captured before state changes · signed PDF mirrored to S3
  5. Journey 05 · Payments

    Instalments remind themselves. The gateway is a setting, not a rebuild.

    A booking can be paid in full or in three instalments, each with its own payment link. Three days before it is due, on the day, and at three and seven days late, the customer gets a reminder with the link. Which gateway makes the link, PayU or Razorpay, is one setting in the admin; old links keep working on the gateway that made them.

    For your developerpayment plans I1 / I2 / I3 · reminder ladder T-3, T0, T+3, T+7 via the notification engine · gateway chosen by one admin setting, each link records its own · webhooks signature-verified, idempotent on status · 72 h lapse and grace handling
Want this on your desk?

Tell us which tools you already pay for. We will show you what connecting them would look like, in a week, with no deck.

// SECTION 03 · WHAT CHANGES, FOR WHOM

Three people feel it differently.

The customer notices speed. The agent notices what they no longer have to do. The owner notices what they can finally see.

For the customer
  • The itinerary lands on WhatsApp the moment it is ready, with one tap to open it.
  • Calls come from the office number, and the person calling already knows their trip.
  • A contract to sign on the phone, and a payment reminder before anything is late.
For the agent
  • No copying numbers between apps. Publish, Call and Send are buttons on the lead.
  • Every message, call and signature sits on the lead’s timeline with ticks and times.
  • The follow-ups they would have forgotten are sent for them.
For the owner
  • Proof: which leads were called, when, by whom, and what was said.
  • Every call reviewed, not a sample, with red flags on the screen by morning.
  • Cash chased on a schedule and contracts signed before travel, without anyone remembering.
// SECTION 04 · WHY IT KEEPS WORKING

Automation is only useful if it is boring on a bad day.

A provider goes down, a message arrives twice, a key expires, a template is rejected. Four habits in the code mean none of those reach the customer or the agent. They are also why the WhatsApp provider could be swapped in a month and why a new gateway is a setting.

Every message is written down first

Whatever WhatsApp, the phone system, the e-signature service or a payment gateway sends is saved exactly as it arrived, before the CRM reads it. If a rule is wrong today, yesterday’s events can be run again tomorrow.

Retries that never send twice

If a provider is slow or down, the message waits and tries again, a little later each time. A message a provider rejects is marked failed and left alone. Every send carries an id the CRM made, so a repeated status update cannot count twice.

A switch for every channel

WhatsApp, email, each queue, each scheduled job and the payment gateway can be turned off or swapped from the admin, with no release. The product keeps running on the channels that are on.

Keys that change without a release

API keys, webhook tokens and gateway secrets live in an encrypted table edited from the admin and read at the moment of use. Rotating a key is a paste, and the next request uses it.

// SECTION 05 · YOUR NUMBERS

How much desk time would this hand back to you?

Set your own volumes. The result is worked out from the per-step minutes listed underneath, shown as a range, so you can size the idea for your business before we talk.

Your estimate

Set your volumes on the left, or try the example. Nothing is assumed about your desk until you do.

An estimate from the minutes below, shown as a range of a quarter either way. Not a measurement at the client. Twenty-six working days a month.

The minutes behind the estimate
Per itemBy handConnectedWhat the minutes cover
New leads6 min0 mincopying a lead from the ad platform or a sheet into the CRM, assigning it, sending a first message
Itineraries sent5 min0 minsending one itinerary on WhatsApp and by email, by hand
Customer calls3 min0.5 mindialling, then writing up the call from memory
Contracts signed25 min3 minpreparing, sending, chasing and filing one contract
Instalments due4 min0 minone by-hand reminder per instalment: check the sheet, find the number, message
// SECTION 06 · THE TOOLS

Nine tools, one customer record.

What each one does for the desk. Names and marks belong to their owners; they appear here to say what was connected.

DoubleTick

Business WhatsApp: templates, two-way chat, voice calls

CallerDesk

Phone system: click-to-call, recordings, call logs

Google Gemini

Listens to every recorded call, writes the summary, scores the agent

Documenso

E-signature, customer first then the company, self-hosted

PayU

Payment links and the webhook that confirms them

Razorpay

Payment links, in-page checkout, webhooks

Meta

Lead ads in; “won” and “lost” sent back so the ads learn

TBO

Live flight and hotel prices, booking and cancellation

ImageKit + Amazon S3

Contracts, e-tickets and traveller documents, stored once and served fast

// SECTION 07 · WHAT IT IS FOR

Built so that these become normal.

What the five journeys are designed to make possible for a travel desk. The client has not published measured results, so none are claimed here; the evidence for everything above is the code itself.

Designed to enable
  • A first reply to every new lead within a minute, at any hour
  • Fewer follow-ups forgotten, because the reminder is not a person’s memory
  • Coaching from every call, with evidence, not from the one call a manager overheard
  • Cash collected closer to the due date, with less chasing
  • Contracts signed before travel, every time, with the signed copy on the booking
  • A new channel or provider plugged in without rebuilding the CRM
On the evidence

Every flow, count and month on this page was read from the CRM’s repository and its commit history in October 2026. The client is described by sector, not named. The time figures are estimates, with their assumptions printed beside them.

// SECTION 08 · BEYOND THIS PROJECT

One desk, drawn in detail. The same wiring fits yours.

This page follows one CRM so you can see every joint. None of the parts are special to it. These are the connections already running in products we build and look after, for travel, education, hospitality and HR teams.

Messaging

WhatsApp (DoubleTick, AiSensy) · email · push alerts to staff phones

in 4 products
Telephony

CallerDesk click-to-call and inbound · Twilio · calling from the browser

in 3 products
Payments

Razorpay links, checkout, subscriptions, wallets, payouts · PayU

in 6 products
E-signature & documents

Documenso · Leegality · generated PDFs for contracts, quotes and tickets

in 4 products
Ads & analytics

Meta lead ads, Conversions API, ad spend · GA4, Tag Manager, Clarity

in 2 products
Supplier & data feeds

TBO flights and hotels · live exchange rates · news feeds

in 2 products
AI on real work

Call review (Gemini) · lead parsing from email and WhatsApp · résumé parsing (Claude)

in 3 products
Identity & verification

Google and Facebook login · single sign-on · IDfy KYC · bot checks

in 3 products
Files & media

Amazon S3 · Cloudflare R2 · MinIO · ImageKit

in 3 products
Why this matters for a small desk

The big travel sites have an engineering team for this. You don’t need one.

Every call reviewed, a contract that chases itself, an itinerary that reaches the customer the moment it is ready. Not long ago that was in-house software at the large players. It now fits inside the CRM a ten-person desk already uses, on the tools it already pays for, one journey at a time, each in weeks rather than quarters.

Bring your list of tools

Thirty minutes. You leave with a map of what would connect to what on your desk, and what it would take. No deck, no pitch.

// FAQ

Questions about this work.

A CRM where the tools a travel desk already uses, WhatsApp, a phone system, a payment gateway, e-signature and the ad platform, are wired into the customer record so that one action in the CRM, or one event from a tool, triggers the next step on its own. Publishing an itinerary sends it; a payment sends the contract; a recording gets reviewed. Codevibe built these connections inside a holiday travel company’s CRM between July and October 2026.

Nine tools sit on the customer record: WhatsApp through DoubleTick (templates, two-way chat, voice calls), a cloud phone system through CallerDesk (click-to-call, recordings, call logs), Google Gemini for call transcription and scoring, Documenso for e-signature, PayU and Razorpay for payment links and checkout, Meta for lead ads in and results back out, TBO for live flights and hotels, and Amazon S3 with ImageKit for files. Email and push alerts to agents’ phones ride on the same rules.

No, and that is deliberate. The WhatsApp message carries the trip summary and a button that opens the itinerary as a web page, which is always the latest version and renders on any phone. Documents that need to be files, such as flight e-tickets, are generated as PDFs and attached through a document template.

No. Calls are reviewed after they end. Recordings from the phone system and from WhatsApp calls are collected, transcribed, summarised and scored in a batch, and the results appear on a dashboard. Nothing changes the conversation while it is happening.

Messages wait and are retried with growing gaps; a provider outage delays a message, it does not lose it. Payment confirmations are verified and cannot be counted twice, so a repeated or late confirmation cannot credit a payment again. Each channel has an off switch in the admin, and the gateway can be swapped with one setting while old links keep working on the gateway that made them.

Yes. Each provider sits behind its own small adapter with a shared interface, which is how the WhatsApp provider was swapped in September 2026 without touching the chat or the rules. Because features publish events and rules decide what to send, a new channel is configuration, not a rebuild. We have built the same pattern inside two other travel platforms, and the section “Beyond this project” lists the connections already running elsewhere.

No. They are estimates built from the by-hand steps each journey replaces, with the per-step minutes printed next to the calculator so you can disagree with them, and the calculator starts empty so the page never opens on a claim. The client has not published measured figures, so none are claimed. Counts such as eleven scoring points or four reminders per instalment are read from the code; the months are commit dates.

// LET'S TALK

Still copying numbers between tabs?

WhatsApp, calls, payments, contracts and ads can all report to one customer record and trigger each other. Tell us which tools you already pay for; we will show you what connecting them would look like.

hello@codevibe.in · +91 70677 09224 · Gurgaon, India