Contexte
Développé lors de mon stage à la Métropole de Lyon, SmartWatch automatise la mise à jour des horaires d’ouverture des établissements publics sur le portail data.grandlyon.com. Jusqu’alors, plusieurs techniciens du service Données Métropolitaines effectuaient cette vérification manuellement pour près de 200 sites (mairies, piscines, médiathèques).
Architecture
Le pipeline combine plusieurs technologies :
- Web scraping avec Playwright pour récupérer le contenu des pages web des établissements
- Conversion en Markdown avec nettoyage des caractères superflus
- Filtrage sémantique par embeddings pour identifier les sections pertinentes
- Extraction structurée via LLM (devstral) avec sortie JSON contrainte
- Comparaison avec les horaires existants dans data.grandlyon.com (format OSM)
- Reporting : rapport HTML autonome envoyé par email
Résultats & Impact
- Réduction de 75% du temps de traitement manuel (de ~4 jours à ~1 jour)
- Utilisation de modèles souverains et open source (devstral, hébergés sur le cluster local)
- Mesure de l’empreinte carbone via CodeCarbon
- Documentation complète (Sphinx) et tests unitaires (Pytest)
- Projet open source sous licence MIT — réplicable pour d’autres cas d’automatisation
Défis relevés
- Fiabilisation des sorties LLM (température à 0, seed fixe, prompt système travaillé)
- Optimisation des prompts pour éviter les hallucinations
- Contournement des limites du cluster local grâce au filtrage sémantique
- Gestion des cas particuliers (pop-ups, horaires contradictoires, tableaux complexes)