Faro — moteur de détection de vols pas chers
Plateforme web qui détecte automatiquement les erreurs tarifaires aériennes pour 6 pays (France, Espagne, Italie, Allemagne, Belgique, Portugal), avec contenu éditorial localisé, surveillance 24h/24 et alertes par email. Architecture multi-pays, routing par sous-domaine et slugs traduits par langue.
01Le contexte
Faro est une plateforme web qui détecte automatiquement les erreurs tarifaires aériennes — ces prix anormalement bas, généralement causés par une faute de saisie ou un bug de système chez une compagnie, et corrigés en moins de 24 heures. L'objectif du projet : rendre cette information accessible avant que les compagnies ne réparent l'erreur, sans inscription ni newsletter obligatoire.
Le moteur surveille en continu environ 2 400 liaisons aériennes au départ de 6 pays (France, Espagne, Italie, Allemagne, Belgique, Portugal). Chaque pays dispose de son propre sous-domaine, de ses villes de départ, de ses slugs d'URL traduits et d'un contenu éditorial localisé. Cinq langues sont supportées dès la première version : français, espagnol, italien, allemand, portugais.
L'enjeu principal n'était pas technique mais éditorial : à des milliers de pages générées automatiquement, comment éviter le syndrome "thin content" sanctionné par les Helpful Content Updates de Google ? Réponse : 15 variantes rotatives par paragraphe, capsules de réponse directes pour les IA génératives, et 10 pages piliers évergreen sur les destinations principales.
02Le produit
L'architecture technique repose sur CodeIgniter 4 (PHP 8.2) et MySQL. Le routing multi-pays par sous-domaine s'appuie sur un filtre HTTP qui détecte le pays via le Host header et injecte la configuration appropriée dans le contexte de requête. Les slugs d'URL sont traduits par langue ("vols-pas-chers" en français, "vuelos-baratos" en espagnol, "voli-economici" en italien, etc.) pour maximiser la pertinence SEO locale.
L'ingestion des données est gérée par des crons HTTP qui consomment l'API Travelpayouts toutes les heures, normalisent les tarifs reçus et calculent la médiane glissante des 30 derniers jours pour chaque liaison. Lorsqu'un prix descend sous 75 % de cette médiane (écart supérieur à 25 %), il est marqué comme erreur tarifaire et publié. Un cron complémentaire vérifie périodiquement l'expiration et archive automatiquement les tarifs qui ne sont plus disponibles.
La pile SEO/GEO est entièrement pilotée côté serveur : hreflang multilingue avec format language-region (fr-FR vs fr-BE pour distinguer France et Belgique), schémas JSON-LD Article + FAQPage + HowTo, sitemap dynamique segmenté par pays, et images Open Graph 1200×630 générées à la volée pour chaque vol détecté avec rendu en GD library.
03L'impact
Le défi le plus instructif a été la récupération après une chute de trafic brutale (de 35 000 impressions/mois à 260 en 28 jours, suite à un mélange de bug d'ingestion silencieux et de pénalité algorithmique liée à du contenu trop générique). La sortie de crise a combiné un fix technique (correction du décodage gzip), une refonte de contenu (15 variantes par texte, capsules de réponse, désindexation des pages d'archive massives) et un renforcement E-E-A-T (page méthodologie publique, signatures auteur, dates de mise à jour visibles).
Faro est volontairement transparent sur son modèle économique : aucun tarif n'est sponsorisé, l'ordre d'affichage est purement algorithmique, et les seuls revenus proviennent de commissions d'affiliation versées par Skyscanner et Kiwi quand un utilisateur finalise une réservation. Cette transparence est explicite sur la page méthodologie, indispensable pour rester crédible auprès des moteurs et des lecteurs.
Un projet similaire en tête ?
15 minutes suffisent pour savoir si on peut travailler ensemble. Sans engagement, sans commercial.
Prendre rendez-vous →