Abbeal
tripadvisor logo

Travel-tech / Restaurant marketplace · Paris + Europe

Tripadvisor (TheFork): from Symfony/SolR to hybrid AI recommendation.

TheFork (Tripadvisor subsidiary since 2014), European restaurant booking platform. Symfony 3 + Node.js + RabbitMQ + SolR backend originally — now augmented with Mistral 7B embeddings, Algolia search, LLM-augmented recommendations and full-stack Datadog observability.

KPI

Hybrid

AI reco engine

Duration

Engagement initial 2017-2018

Team

1 engineers

Hub(s)

Paris + Europe

React NativeAlgoliaMistral 7BpgvectorApache KafkaDatadog

TheFork (Tripadvisor subsidiary since 2014). European restaurant booking platform, tens of millions of users, tens of thousands of partner restaurants. The promise: find the right resto at the right moment, and book it in two clicks. Our work: the pipeline that makes that promise hold.

Starting point (2017-2018)

Racem embedded on the resto-tech backend. Initial stack: Symfony 3 + Node.js + RabbitMQ for async messaging + SolR for search. Mission: hold the load on evening and weekend booking peaks, and evolve the search engine beyond simple name + city matching.

What was delivered

  • SolR index optimized for restaurant search (geo, cuisine, real-time availability, average price)
  • RabbitMQ workers for async booking processing, notifications, POS partner sync
  • Symfony backend refactor: extraction of bounded contexts (booking, catalog, loyalty, reviews)
  • Observability and profiling: p95 reduction on critical endpoints
  • Documentation of code conventions and onboarding for incoming junior devs

The stack we ship today

On the same business (resto search, personalized reco, conversion on available slot), here's what we assemble today:

  • Algolia as the main search engine: geo, faceting, typo tolerance, sub-100ms edge latency
  • Mistral 7B embeddings on restaurant sheets and reviews: semantic search 'Sunday lunch with family on a quiet terrace'
  • pgvector to store embeddings and profile per user (cuisine, price, ambiance preferences)
  • Hybrid reco engine: collaborative filtering + LLM-augmented (Claude Sonnet re-ranking the top 50)
  • Apache Kafka as event bus (booking, no-show, cancellations, POS sync) with replay on incident
  • Full-stack Datadog: APM + RUM + structured logs + on-call alerting weekend / evening

Why it's hard

  • Latency: a user has < 800ms of attention before scrolling. Edge search is non-negotiable
  • Hourly peaks: 7-9pm weekdays, 4x average QPS, and nobody forgives downtime at 7:45pm on a Saturday
  • Noisy resto data: changing menus, unannounced closures, outdated photos
  • User cold start: a newcomer has no history but must get a relevant reco in 2 screens
  • GDPR compliance on embedding profiles: retention, right to erasure, reco opt-out

What this engagement taught Abbeal

TheFork was our first serious engagement on a high-frequency marketplace. We learned to optimize SolR back then, then move to Algolia + embeddings without breaking SLA, and above all: that a mediocre reco engine can silently cost 5 to 10% of GMV. That's the experience we replay today at other resto / leisure / travel marketplaces moving to LLM-augmented ranking.

A similar case at your place?

Talk to an architect