001 · 2024 — 2025

Surveiller 360 communes depuis un poste verrouillé

Conception et déploiement d'un système de veille environnementale automatisée sur 5 zones protégées de Corse (~43 000 ha), sans cloud, sans budget, sans admin.

Client ONF Corse — Office National des Forêts
Rôle Chargé de veille & automatisation
Durée 7 mois · solo
Stack n8n · Python · Claude API · SQLite · Leaflet
Détecter quotidiennement les infractions environnementales signalées en ligne — circulation 4×4, feux, bivouacs sauvages — sur 5 zones pilotes en Corse, à un coût quasi nul, depuis un poste institutionnel sans droits d’administration.

Le problème résolu

L’ONF Corse (Office National des Forêts) doit surveiller des massifs forestiers et zones protégées de plus en plus exposés à des infractions visibles en ligne : auteurs qui documentent eux-mêmes leurs incursions, circulation motorisée illégale en zones réglementées, bivouacs sauvages en pleine saison de risque incendie. Aucun outil interne ne permet de détecter ces signaux à grande échelle. Aucun budget logiciel, aucune équipe technique dédiée, un réseau verrouillé.

130–260/jr
Signaux bruts collectés
60–150 pertinents après filtrage
43
Sources surveillées
RSS, presse, requêtes ciblées
360
Communes couvertes
5 zones pilotes Corse
~20€/mois
Coût opérationnel
Inoreader + API, pas d'infra

7 mois en autonomie — du cadrage au déploiement, en passant par la documentation. Profil autodidacte technique au démarrage du projet.

Pipeline complet, zéro dépendance externe

Cinq étapes, quatre outils. Conçu pour tourner offline sur un poste sans droits administrateur.

01

Collecte

RSS · Google Alerts · scraping ciblé

Inoreader Pro
02

Ingestion

Déduplication SHA256 · base locale

SQLite + Python
03

Classification

Scoring P0/P1/P2 · filtrage géo

Claude API
04

Visualisation

Carte Leaflet · dashboard Chart.js

HTML/JS statique
05

Notification

Rapport PDF auto · alertes ciblées

Telegram bot

Contraintes institutionnelles contournées

  • Pas de pip ni Docker → Python stdlib uniquement
  • Pas de cloud (réseau verrouillé) → SQLite local + HTML statique
  • Pas de droits admin → tâche planifiée user-space
  • Budget quasi nul → outils gratuits + API au compteur

Architecture en quatre couches

Approche offline-first. Aucune brique propriétaire bloquante. Documentation et tests à chaque étape.

01
Collecte
Inoreader Pro · 43 flux RSS · Google Alerts · scraping ciblé Agrégation multi-sources. Filtrage géographique Corse en amont (60+ toponymes).
130–260 signaux/jour
02
Traitement
Python stdlib · SQLite · hash SHA256 Ingestion idempotente, déduplication sur empreinte de contenu, indexation locale.
97% de doublons éliminés
03
Visualisation
HTML/JS statique · Leaflet · Chart.js · PWA Dashboard consultable sans serveur, sur poste pro ou mobile terrain.
0 dépendance backend
04
Notification
Génération PDF · Telegram bot · scoring P0/P1/P2 Rapport quotidien automatique, alertes ciblées sur seuils configurables.
Rapport quotidien auto

Dashboard opérationnel · captures

Le dashboard est livré sous forme de fichier HTML statique unique. Aucune installation, aucune connexion réseau requise. L’agent terrain ouvre simplement le fichier sur son poste ou son mobile.

Vue d’ensemble — Observatoire numérique

Tableau de bord principal : tous les signaux du jour, filtrables par plateforme, type d’infraction, statut de traitement. Export CSV en un clic pour archivage.

Dashboard principal ONF — Observatoire numérique des alertes environnementales
Fig. 01 — Dashboard principal · vue Observatoire numérique

Vue cartographique

Géolocalisation des signaux à la commune sur fond Leaflet. Marqueurs colorés par densité d’alertes. Popup contextuelle au clic sur chaque zone.

Cartographie des alertes en Corse — vue Leaflet
Fig. 02 — Cartographie · localisation des alertes en Corse

Module rapports

Génération automatique de synthèses périodiques (rapport mensuel, statistiques globales, analyse géographique, top communes concernées). Format PDF prêt pour transmission hiérarchique.

Module de génération de rapports ONF — synthèses et analyses périodiques
Fig. 03 — Module rapports · génération automatisée des synthèses

Démo · Dashboard en 90 secondes

Vidéo de démonstration · 90 secondes

Découpage de la démo

  • 0:00 — 0:15 · Carte Corse · vue cartographie, zones colorées par densité d’alertes
  • 0:15 — 0:35 · Filtres · sélection commune, type d’infraction, niveau de gravité
  • 0:35 — 0:55 · Statistiques · graphiques Chart.js, répartition par type, évolution 30 jours
  • 0:55 — 1:20 · Détail signal · drill-down sur une alerte, source, scoring, contexte géo
  • 1:20 — 1:30 · Module rapport · génération PDF quotidien, export en 1 clic

Ce que ce projet démontre

Pas un PoC. Un système en production, documenté, transférable. Conçu pour tenir sans moi après la fin de mission.

Architecture

Pipeline de A à Z. Choix techniques contraints assumés et documentés.

Pipeline de données

Collecte, déduplication, scoring, persistance. Idempotent. Testé.

UX non-technique

Interface conçue pour des utilisateurs métier, pas pour moi.

Documentation

Référentiel complet. Le système peut être repris sans contact avec moi.

Profil démontré par le projet

Autodidacte technique · approche produit · basé en Corse. Compétences construites en autonomie sur cette mission : Python, automatisation no-code, SQLite, intégration d’APIs LLM, frontend statique, OSINT.

Ouvert à discussions pour rejoindre une équipe — voir la page contact.