Documentation technique

La méthodologie Scoutender

Cette page décrit en détail le pipeline technique qui sépare le bruit des opportunités vraiment pertinentes pour votre cabinet. Notre objectif : zéro dépendance à un LLM payant, transparence sur chaque décision du classifier, ouverture sur l'élargissement géographique.

Pourquoi un classifier dédié à l'Afrique ?

Les plateformes globales (DevelopmentAid, Devex…) couvrent largement les bailleurs internationaux, mais leurs filtres géographiques et sectoriels restent grossiers : trop large pour les cabinets spécialisés Afrique, trop anglophones pour les structures francophones, trop chères (200–500 $/utilisateur/mois) pour un usage pilote. Scoutender a été conçu pour combler ce gap : un classifier bilingue FR + EN exhaustif (~700 mots-clés), une taxonomie sectorielle alignée sur les expertises CPCS-core (énergie, transport, PPP, capacity building), un filtrage géographique strict sur les 54 pays membres de l'Union africaine + Haïti.

Les trois étapes du pipeline

Étape 1 — Extraction. Selon la source, on utilise une API officielle (TED Europa eForms, Banque mondiale procurement, OCDS Rwanda Umucyo) ou du scraping HTML/JS-aware (httpx + BeautifulSoup pour les portails server-rendered comme ARMP nationaux, BADEA, KfW, MCC, OPEC Fund, IsDB, LuxDev ; Playwright headless Chromium pour les portails JS-heavy comme GCF Oracle, UNDP, ARMP Burundi). Étape 2 — Classification. Chaque item passe par un classifier déterministe (~700 lignes Python) : détection de keywords procurement, secteur (énergie / transport / PPP / capacity), pays cible vs non-cible, type AO/AMI/RFP. Scoring multi-facteurs avec bonus pour les bailleurs forts et les mentions de pays cible. Étape 3 — Enrichissement. Pour les opportunités gardées, on fetch la page détail (HTML + PDF Termes de Référence) et on extrait via heuristique regex : description, composantes, qualifications, experts recherchés, dates exactes.

Scoring sectoriel : ce qu'on regarde

Le scoring combine 5 dimensions : présence d'un keyword procurement (5 points si dans le titre), match secteur énergie/transport (3 points), match CPCS-core PPP/capacity (3 points), pays cible détecté (3 points), bailleur fort dans STRONG_BAILLEURS (2 points). Seuil de garde : 5 points. Chaque liste de keywords est bilingue stricte FR + EN : "appel d'offres" matche aussi bien que "tender", "ingénieur conseil" autant que "consulting engineer". Les patterns « titre menu » (« tenders in... », « voir tous les appels », « home/accueil ») sont systématiquement rejetés.

Couverture géographique

Périmètre : couverture continentale des 54 pays membres de l'Union africaine + Haïti. Pays groupés en unions économiques (CEDEAO, COMESA, SADC, Afrique du Nord élargie) et zones géographiques (Afrique centrale CEMAC+RDC, Corne de l'Afrique, Océan Indien, Caraïbes) pour pré-remplir simplement les sélecteurs pays. Plus de 100 pays/régions hors zone sont en liste noire (NON_TARGET_COUNTRIES) pour rejeter automatiquement les opportunités hors scope, capitales et sous-régions incluses (e.g. "Issyk-Kul Region" → Kirghizstan → rejet).

Sources techniques

Aujourd'hui : 40+ bailleurs surveillés via 40+ sources techniques. APIs officielles privilégiées (fiabilité x10 vs scraping) : TED Europa eForms v3, Banque mondiale procurement search, OCDS Rwanda Umucyo. Scraping HTML pour les portails directs : BAD procurement notices, BADEA, KfW Development Bank, MCC, OPEC Fund, IsDB project-procurement, LuxDev, BOAD, BDEAC, EBRD, DBSA, NDB, PIDG, ENEO Cameroun, marchés-publics.gouv.fr (AFD/Proparco via PLACE), ARMP nationaux (Burundi, Congo-Brazzaville), Cellule Infrastructures RDC, GIZ Vergabemarktplatz. Playwright pour les portails JS-heavy : GCF Oracle Procurement Cloud, UNDP Procurement Notices, UNGM (UN Global Marketplace via POST API). Chaque source est monitorée avec un indicateur de santé visible dans l'interface admin.

Enrichissement automatique des opportunités

Pour chaque opportunité gardée, un worker secondaire fetch la page détail (HTML + éventuel PDF de Termes de Référence) toutes les 4 minutes par batch de 8. Les sections extraites via heuristique regex (pas de LLM) : Vue d'ensemble, Composantes/Activités, Qualifications requises, Experts recherchés, Code projet, Mode de financement. Validation E2E sur une opportunité ISDB Cameroun (route Batchenga-Ntui) : 6 sections extraites correctement + lien direct vers le PDF Avis Général de Passation.

Transparence opérationnelle

L'administration de la plateforme (interne) expose : santé des sources sur 7 jours (taux de succès, ops captées, top rejets classifier), audit dry-run par source (re-scrape sans toucher la BDD pour identifier les items rejetés et pourquoi), feedback utilisateurs sur la classification (faux positif / faux négatif). Chaque scan_run garde un échantillon des items rejetés (max 30 par catégorie) pour diagnostic rétrospectif. Cette transparence est la pierre angulaire de l'amélioration continue du classifier.