SpotFinder Geo
SVP Consulting se voyait régulièrement poser la question « où devrais-je ouvrir ? » sans méthode reproductible pour y répondre. J’ai conçu SpotFinder : une carte d’opportunités en données ouvertes qui évalue les ~450 secteurs d’Anvers avec trois formules spécifiques par type, un explicateur de zone IA et un cadrage honnête « signaux, pas de verdicts » — réduisant un scan manuel de 2,5 jours à ~0,5 jour
- Problème — Les clients food de SVP demandaient sans cesse « où devrais-je ouvrir ? » ; chaque scan manuel coûtait ~2,5 jours-analyste répartis sur 5–6 sources
- Insight — un seul score ne convient pas à trois types d’entreprise, et une lecture défendable exige une justification en langage clair
- Solution — J’ai conçu en solo une carte d’opportunités en données ouvertes (OSM + Statbel) évaluant les ~450 secteurs d’Anvers avec 3 formules spécifiques par type + explicateur IA
- Résultat — outil R&D interne, en ligne ; signal précoce (n=2) : ~2,5 jours → ~0,5 jour, 5–6 sources → 1, confiance 2,4 → 4,3, hébergement €0
L’emplacement est la décision à plus fort enjeu pour une petite entreprise food — et nous n’avions aucune méthode reproductible pour la conseiller
SVP Consulting est une agence IA de cinq personnes basée à Anvers. Nous aidons les PME européennes à exploiter leurs données — ce qui explique précisément pourquoi une question client récurrente atterrissait sur notre bureau sans réponse rigoureuse : « Où devrais-je ouvrir ? » À chaque fois, nous déclinions le travail ou improvisions une analyse documentaire manuelle. Un audit interne du temps sur 4 scans passés a chiffré la douleur : ~2,5 jours-analyste par question, mobilisant 5–6 sources (OSM, le portail Statbel, un tableur, des cartes, un cahier de notes), dans des formats différents, aucun ne ressemblant à une réponse.
La douleur ne venait pas d’un manque de données — Anvers est richement cartographié et la Belgique publie d’excellentes statistiques ouvertes. La douleur venait des coutures : assembler des sources incompatibles en une lecture spécifique au type, défendable, à chaque fois, depuis zéro
La couche café sur les ~450 secteurs statistiques d’Anvers. Rouge = surreprésenté / faible demande, vert = opportunité sous-servie
Trois entretiens, quatre scans audités, un constat : le raisonnement était le déclencheur de confiance, pas la carte
La phase de découverte s’est déroulée du 23 au 25 mars 2026, en parallèle de la mise en place du squelette alpha. J’ai audité 4 scans de localisation issus de nos travaux 2025 (médiane : 2,5 jours, concentrés sur la collecte de données), mené des entretiens de 20 minutes avec le CEO, l’ingénieur IA et la chargée de mission junior, et réalisé une reconnaissance des données ouvertes sur OSM/Overpass et trois jeux de données Statbel pour confirmer que les inputs existaient à une granularité utilisable et gratuitement.
Les entretiens d’équipe ont mis en lumière le véritable levier. CEO : « Je peux vendre le ‹ où ›, mais seulement si je peux expliquer le ‹ pourquoi › en une phrase que le client croit. » Ingénieur IA : « Si le scoring est une boîte noire, je n’y mets pas mon nom. » Chargée de mission junior : « Je compterais juste les concurrents et devinerais. » Le statu quo, c’était de l’intuition habillée en analyse. Une carte classée sans justification défendable était déjà résolue — personne ne lui faisait confiance. L’explication était le produit.
Un scan défendable n’est pas seulement un classement — c’est un classement assorti d’une justification en langage clair. Ce seul insight a orienté deux décisions ultérieures : le scoring spécifique par type et l’explicateur de zone IA
Un seul score ne convient pas à trois entreprises — j’ai donc conçu trois formules, un choroplèthe et un LLM qui explique chaque zone en langage clair
Le cœur de l’outil repose sur trois formules de scoring distinctes — pas une somme pondérée unique. Un café est une destination de journée (scoré sur le trafic piéton, les transports, le revenu ; pénalisé par la concurrence). Une boulangerie est un bien de commodité (scorée sur les habitants, la distance à la boulangerie la plus proche, le revenu ; la concurrence est un diviseur). Une confiserie est un achat discrétionnaire (scorée sur le revenu, un mélange trafic/habitants ; pénalisée par la concurrence). Chaque input est d’abord normalisé min–max sur l’ensemble des secteurs ; le score brut devient un percentile intra-type afin qu’un café ne soit jamais comparé à une boulangerie. Deux seuils évitent les conclusions absurdes mais confiantes : un seuil de bruit met à zéro les secteurs comptant trop peu d’établissements, un seuil de viabilité met à zéro les polygones non habitables. Un chiffre vide est plus honnête qu’un chiffre inventé.
Couche boulangerie : re-scorée par la formule d’écart de proximité. Les secteurs éloignés de toute boulangerie existante obtiennent les meilleurs scores
Panneau de détail : percentile d’opportunité, décomposition des inputs adaptée au type, distance au concurrent le plus proche, mini-carte de localisation
L’explicateur de zone IA est un appel Gemini qui prend les inputs réels du secteur et produit une phrase en langage clair : « Fort proxy de trafic piéton (top 15 %), faible densité de cafés (2 dans un rayon de 400 m), revenu supérieur à la médiane — un couloir de destination de journée sous-servi. » Si l’API est indisponible, un modèle déterministe prend le relais. L’explication est étiquetée « IA » ou « gabarit » afin que l’utilisateur sache toujours laquelle il lit. Un panneau rétractable Personnaliser le blend repeint le classement de la carte en temps réel sur quatre leviers avec des préréglages (équilibré, trafic piéton, résidentiel, aisance) — et l’état complet est partageable via URL.
Personnaliser le blend : re-classer les secteurs en temps réel sans inventer de nouvelles données. L’état complet est partageable via URL
Explicateur de zone IA : une phrase générée par Gemini à partir d’inputs réels, étiquetée pour que l’utilisateur en connaisse la source

Live — sélectionnez une ville, choisissez un type d’entreprise, cliquez sur un secteur
Les calculs lourds restent hors ligne ; le chemin de requête sur le tier gratuit consiste simplement à « lire des octets mis en cache »
L’architecture comporte trois couches isolées communiquant via un seul fichier et un seul endpoint. Un pipeline Python hors ligne (geopandas/shapely) récupère et reprojette OSM + Statbel, agrège sur les secteurs statistiques, calcule tous les scores et génère un unique antwerpen.geojson. Un backend FastAPI léger sert ce fichier et l’explicateur. Un frontend statique React + MapLibre GL JS affiche le choroplèthe. Les calculs lourds sont délibérément hors ligne afin que le chemin de requête sur le tier gratuit soit en lecture seule — pas de loterie de délai, pas de cold-start sur la requête de données elle-même. Des filtres alimentaires (couverture vegan, végétarien, halal depuis les tags OSM) constituent un quatrième calque, explicitement étiquetés comme sous-comptages.
Filtre alimentaire : couverture vegan issue des tags OSM, explicitement étiquetée comme un sous-comptage
Mobile : leaderboard + légende empilés en bas, sans chevauchement avec la carte
Signal précoce (n = 2) : 2,5 jours-analyste → ~0,5 jour, 5–6 sources → 1, confiance analyste de 2,4 à 4,3
L’outil est entré en usage interne le 18 avril 2026 après une construction solo de ~3,5 semaines (23 mars – 17 avril). Deux premières semaines après la démo, deux questions de cadrage client : temps pour établir une shortlist défendable ~4 h (objectif ≤ 6 h, référence 20 h) ; sources par scan 1 (contre 5–6) ; confiance analyste 4,3/5 (contre 2,4) ; ~74 % des secteurs anversois scorables ; latence cold-start ~40 s (dans l’objectif ≤ 50 s, quoique lent en démo live). Coût d’hébergement €0 sur le tier gratuit de Render, Gemini sur le tier gratuit. Économie de temps annuelle projetée à 6 questions/an : €5 760 — un retour sur coût pur en ~13–14 mois. Mise en garde honnête : ces quatre lectures reposent sur n = 2. C’est une direction, pas une destination.
CEO : « Première fois que je pouvais répondre à ‹ pourquoi là ? › sans agiter les mains. » Ingénieur IA : « La méthode est lisible — je mettrais mon nom dessus devant un client. » Junior : « J’aurais passé deux jours sur ce que cet outil a fait avant que le café refroidisse. »
Ce que je ferais différemment : parler plus tôt à un vrai propriétaire de café (j’ai interviewé l’équipe, pas un client final, jusqu’à tard — la question du loyer serait remontée plus tôt) ; reporter les filtres alimentaires (élégants mais rarement décisifs) ; livrer le lien de partage dès le premier jour plutôt qu’en dernier. H4 — que les utilisateurs voudraient le blend personnalisé — tend à l’infirmation : rarement utilisé lors des deux scans live, il sera déprioritisé. Prochain trimestre : une deuxième ville (Louvain) pour prouver que le pipeline se généralise, un travail de recherche sur un proxy de loyer, des outils de validation au niveau du point, et un passage de calibration pour remplacer les pondérations définies par jugement par des preuves fondées sur des données réelles.
