Aller au contenu principal
2025 En production

Dénicheur

Dénicheur

Dénicheur est un système d'extraction de données produits qui combine scraping HTML, sélection par LLM et reverse-engineering d'API GraphQL en un workflow 3 étapes. Le système recherche un produit, utilise DeepSeek v3 via OpenRouter pour sélectionner le résultat le plus pertinent, puis extrait les données complètes (prix, historique, avis, médias) via l'API GraphQL interne de la source. Déployé sur Railway avec Docker.

Backend Engineer
Scroll

Contexte

Dénicheur est un système d'extraction de données produits qui combine scraping HTML, sélection par LLM et reverse-engineering d'API GraphQL en un workflow 3 étapes. Le système recherche un produit, utilise DeepSeek v3 via OpenRouter pour sélectionner le résultat le plus pertinent, puis extrait les données complètes (prix, historique, avis, médias) via l'API GraphQL interne de la source. Déployé sur Railway avec Docker.

3
Étapes du workflow
<2s
Temps de sélection IA
99%
Accuracy sélection
10/min
Rate limit API

Le Parcours

01

Le Défi

Extraire des données produits structurées à grande échelle : les pages web changent, les anti-bots se renforcent, et sélectionner le bon produit parmi les résultats de recherche nécessite un jugement humain.

La Solution

Pipeline 3 étapes hybride humain-machine : scraping HTML pour la recherche, LLM (DeepSeek) pour la sélection intelligente, GraphQL reverse-engineered pour l'extraction exhaustive. Architecture async production-ready avec caching, retry et monitoring.

02
03

L'Impact

Automatisation complète de la veille produit pour Gyroly. Temps d'extraction : 3-5 secondes par produit vs 5-10 minutes manuelles. Fiabilité 99%+ grâce à la sélection IA.

Fonctionnalités Clés

01

Sélection IA (DeepSeek v3)

Prompt engineering avancé avec règles strictes de matching, vérification de marque, anti-accessoire. Le LLM choisit le produit le plus pertinent parmi les résultats.

02

Reverse-engineering GraphQL

Extraction des données complètes via l'API GraphQL interne : produit, prix, historique, avis, médias, breadcrumbs. Une seule requête pour tout.

03

Anti-détection robuste

Headers réalistes, rotation de proxies, délais aléatoires 2-5s, retry logic avec backoff exponentiel. Support proxy résidentiel optionnel.

04

Architecture async

FastAPI full async avec httpx, rate limiting SlowAPI, request tracing UUID, structured logging JSON, health checks.

05

Cloud storage R2

Upload parallèle async des images produits vers Cloudflare R2 (S3-compatible). Organisation par product ID, remplacement d'URL automatique.

06

CI/CD Docker → Railway

Multi-stage Docker build (builder + runner), non-root user, 8 workflows GitHub Actions, déploiement automatique sur Railway.

Processus de Développement

Étape 01

HTML Scraping

Requête GET sur la page de recherche. Parsing CSS selectors + regex. Cache TTL pour éviter les requêtes répétées.

Étape 02

Sélection IA

Envoi des résultats à DeepSeek v3 via OpenRouter. Prompt few-shot avec exemples correct/incorrect. Extraction JSON robuste (gère markdown).

Étape 03

Extraction GraphQL

POST sur l'API GraphQL interne avec le product ID sélectionné. Extraction de toutes les données structurées.

Étape 04

Normalisation

Nettoyage Unicode, mapping des propriétés via mappings.json, génération de slugs SEO, validation Pydantic v2.

Étape 05

Déploiement

Docker multi-stage → Railway PaaS. Sentry monitoring, structured logging, auto-deploy depuis GitHub.

Stack Technique

Python
FastAPI
DeepSeek v3 (OpenRouter)
httpx
Pydantic v2
Docker
Railway
Cloudflare R2
SlowAPI
pytest