Skip to main content
Case study · Travel and tourism

VibeCRM: one system for a tour operator’s sales, payments and trips

A CRM for Story Travel that covers the whole journey from first call to last excursion: customer history, per-person payments, a browser call center and trip operations.

  • Story Travel
  • 2025-present
  • In acceptance testing
customers recovered from the old system
30,000+
passengers a season
~10,000
lines of code
126k
months to 90% of the system, with AI coding agents
~6

A client who came back

In 2014 we built bus ticketing for the Črnja family’s travel company, and it ran without a hiccup for years. A decade later, Igor Črnja of Story Travel, from the same family, needed a better CRM. He remembered how well that first system had run, and he called us.

The problem

Story Travel runs multi-day bus tours across Europe, from Italy, Spain and France to New Year’s Eve trips, with about 10,000 passengers a season. Its old system was losing customers: the call center couldn’t even find, let alone call, people who had already travelled.

Day trips lived in a separate database from multi-day tours, so returning travellers gave their details again every time. A group booking only showed that “this booking for 5 is missing €230”, so the reminder went to the lead traveller, who may already have paid their own share.

Guide lists were made by hand. Rooming lists never checked whether the assigned single, double or triple rooms matched what travellers had asked for.

What we built

VibeCRM, one platform for the whole journey from first call to last excursion.

  1. Recovered the customer history. The old system couldn’t show past trips, so we read back every traveller and booking page it could still serve. We stored them, rebuilt trips, itineraries and bookings, and merged duplicate travellers. Over 30,000 customers are back within the call center’s reach.
  2. One profile per traveller across day trips and multi-day tours.
  3. Who owes what, per person. Every traveller in a group booking has their own package, balance and payment request.
  4. Payments that reconcile themselves. Card payments, deposits and installments online. Bank statements are parsed and matched to bookings automatically, and reminders go only to the people who still owe.
  5. A call center in the browser. Agents call from the CRM on their phones over Twilio, with call planning, a recommended next action for each customer, a sales funnel and revenue forecasts.
  6. Trip operations. Bus, driver and guide planning; a colour-coded seating plan; rooming lists that flag room-type mismatches; and a daily list for each guide of who paid for which excursion.
  7. FinanceCosts per kilometre and VAT across countries, plus dashboards for revenue, collection rate and trips that need more bookings.

Screenshots

Printable seating plan for one bus, each booking in its own colour
Seating plan: every booking gets its own colour, so groups sit together. (Printable plan, shown in Croatian.)
Group booking with payment requests, payments and a per-traveller breakdown
Group booking: what each traveller paid and still owes, line by line.
Bank statement import with a calendar of imported statements from two banks
Bank statement import: daily statements from two banks, matched to bookings automatically.
Rooming list with warnings where the assigned room does not match the preference
Rooming list: mismatches between requested and assigned rooms are flagged before the trip.
Customer page in the call center with call history, recommended action and bookings
Call center: call history, a recommended next action and the customer’s full booking record.
Admin dashboard with revenue, collection rate, capacity alerts and outstanding balances
Admin dashboard: revenue, collection rate, low-capacity trips and outstanding balances.

All screenshots show demo data.

Built with AI

VibeCRM was designed and built by one engineer working with AI coding agents (Claude Code). It came to about 126,000 lines of code, with 90% of the system done in roughly six months, including the data recovery.

Results

  • Over 30,000 customers are back within the call center’s reach.
  • Reminders go only to the travellers who still owe, not to the lead traveller of a group.
  • Bank payments are matched to bookings without manual reconciliation.
  • In acceptance testing with about 15 people across the call center and office.

“My father still remembered how flawlessly the ticketing system Candesco built for our family company ran, so when our old CRM started losing customers, there was only one call to make. VibeCRM brought our whole history back and finally shows every traveller, payment and room at a glance.”

Katja Črnja, COO, Story Travel
The first system for the same family: bus ticketing online, at agencies and on board, 2014-2018.See the tix.hr case study

Ready to build something?

Tell us what you’re working on. We’ll give you an honest assessment, a realistic scope, and a path forward - no obligation.

Free 30-minute consultation · No commitment required · Typically respond within 24 hours