Plateforme de transparence politique pour la jeune génération française.
CLAIR agrège, croise et présente de manière accessible les données publiques sur l'activité des parlementaires (députés et sénateurs), le lobbying et les votes au Parlement français.
Le projet est open source, apartisan et factuel : zéro opinion, uniquement des données brutes et des sources vérifiables.
Le service d'ingestion agrège les données parlementaires françaises depuis plusieurs sources gouvernementales officielles. Il interroge quatre sources principales :
- l'Assemblée Nationale via data.assemblee-nationale.fr et data.gouv.fr (députés, scrutins, dossiers, amendements)
- le Sénat via data.senat.fr (sénateurs, scrutins, interventions)
- la HATVP pour les données de lobbying (lobbyistes et déclarations)
- la DILA pour les débats (comptes rendus intégraux)
En production, un CRON Railway déclenche un smart-sync complet tous les jours à 5h du matin. Un enrichissement IA utilise Mistral Small pour générer des résumés accessibles des scrutins et dossiers. Un générateur de sujets croise les données Assemblée-Sénat pour regrouper les dossiers législatifs apparentés. L'ensemble des opérations est tracé dans des tables SourceState et SyncLog pour la traçabilité et le monitoring.
Prérequis : Node.js >= 20.0.0, pnpm >= 8.0.0, Docker & Docker Compose
pnpm install
cp apps/api/.env.example apps/api/.env
pnpm docker:up
pnpm db:generate
pnpm db:push # initialise le schéma localement (voir note migrations ci-dessous)
pnpm devMigrations :
pnpm db:pushsynchronise le schéma Prisma avec la base locale sans créer de fichier de migration — c'est la méthode recommandée pour le développement local. Les fichiers de migration présents dans le repo servent uniquement à faire évoluer la base de production. Si tu modifies le schéma Prisma et que le changement doit partir en prod, génère un fichier de migration avecpnpm db:migrate --create-only, vérifie-le, et inclus-le dans ta PR.
# Ingestion (après un premier `pnpm --filter @clair/ingestion build`)
pnpm ingestion:sync -- -p # parlementaires (députés + sénateurs)
pnpm ingestion:sync -- -s # scrutins
pnpm ingestion:sync -- --lo # lobbying
pnpm ingestion:smart-sync -- -a # tout (détection intelligente des changements)
pnpm ingestion:calculate-stats # recalcul des stats (présence, loyauté…)L'API REST est documentée via Swagger à http://localhost:3001/docs/static/index.html une fois le serveur lancé.
Pour contribuer ou auditer la solution, consulte notre wiki ou contacte-nous par mail.
- Site : clair.vote
- Email : contact@clair.vote
- GitHub : github.com/accelaire/CLAIR
- Issues : github.com/accelaire/CLAIR/issues
- Wiki : github.com/accelaire/CLAIR/wiki