Faro — flight deals detection engine
Web platform that automatically detects airfare errors across 6 countries (France, Spain, Italy, Germany, Belgium, Portugal), with localized editorial content, 24/7 monitoring and email alerts. Multi-country architecture, subdomain routing and per-language URL slugs.
01The context
Faro is a web platform that automatically detects airfare errors — those abnormally low prices, usually caused by an airline pricing mistake or a GDS glitch, and corrected in less than 24 hours. The goal of the project: make this information accessible before the airline patches the error, with no signup or newsletter required.
The engine continuously monitors roughly 2,400 air routes originating from 6 countries (France, Spain, Italy, Germany, Belgium, Portugal). Each country has its own subdomain, its own departure cities, its own translated URL slugs and localized editorial content. Five languages are supported from day one: French, Spanish, Italian, German, Portuguese.
The main challenge wasn't technical — it was editorial. With thousands of auto-generated pages, how do you avoid the "thin content" trap that Google's Helpful Content Updates penalize? The answer: 15 rotating variants per paragraph, direct-answer capsules tuned for generative AI, and 10 evergreen pillar pages for the top destinations.
02The product
The technical architecture runs on CodeIgniter 4 (PHP 8.2) and MySQL. Multi-country subdomain routing relies on an HTTP filter that detects the country from the Host header and injects the right configuration into the request context. URL slugs are translated per language ("vols-pas-chers" in French, "vuelos-baratos" in Spanish, "voli-economici" in Italian, etc.) to maximize local SEO relevance.
Data ingestion is handled by HTTP crons that consume the Travelpayouts API every hour, normalize incoming fares and compute a 30-day rolling median for each route. When a price drops below 75% of that median (deviation greater than 25%), it gets flagged as an error fare and published. A companion cron checks expiration periodically and automatically archives fares that are no longer available.
The SEO/GEO stack is fully server-driven: multilingual hreflang in language-region format (fr-FR vs fr-BE to disambiguate France and Belgium), Article + FAQPage + HowTo JSON-LD schemas, dynamic country-segmented sitemap, and 1200×630 Open Graph images generated on demand for each detected flight using PHP's GD library.
03The outcome
The most instructive moment of the project was the recovery after a sudden traffic collapse (from 35,000 monthly impressions down to 260 in 28 days, caused by a silent ingestion bug combined with an algorithmic penalty for overly generic content). The fix combined a technical correction (gzip decoding bug), a content overhaul (15 variants per paragraph, answer capsules, deindexing of mass archive pages) and an E-E-A-T reinforcement (public methodology page, author signatures, visible update timestamps).
Faro is intentionally transparent about its business model: no fare is sponsored, the display order is purely algorithmic, and the only revenue comes from affiliate commissions paid by Skyscanner and Kiwi when a user completes a booking. This transparency is explicit on the methodology page — essential for staying credible with both search engines and readers.
Got a similar project in mind?
15 minutes is enough to know if we can work together. No commitment, no sales pitch.
Book a call →