import React from "react"; import { Link } from "wouter"; import { ArrowLeft, Bot, Filter, FileText, Database, AlertTriangle, CheckCircle, XCircle, ArrowRight } from "lucide-react"; import { Button } from "@/components/ui/button"; export default function Transparence() { return (

Comment ça fonctionne

Cette page décrit précisément le rôle de l'intelligence artificielle dans cette plateforme, les données collectées et les limites du système.

{/* Flux général */}

Le parcours d'une contribution

Quand vous soumettez une proposition, elle suit quatre étapes automatiques avant d'être visible et intégrée à la synthèse.

    {[ { num: "1", titre: "Réception", desc: "Votre texte est enregistré en base de données avec la date et l'heure. Le pseudonyme est facultatif. Aucune donnée d'identification (adresse IP, compte utilisateur) n'est associée à la contribution.", }, { num: "2", titre: "Filtre de modération (IA)", desc: "Un modèle de langage (GPT) analyse le texte pour vérifier sa conformité avec les droits fondamentaux reconnus par le droit international. Voir la section dédiée ci-dessous.", }, { num: "3", titre: "Mise à jour de la synthèse (IA)", desc: "Si la contribution est acceptée, un second modèle relit l'ensemble des contributions retenues et produit un résumé structuré, destiné à être transmis à des représentants politiques.", }, { num: "4", titre: "Affichage", desc: "La contribution apparaît dans le fil des contributions récentes. La synthèse mise à jour s'affiche immédiatement dans la colonne de droite.", }, ].map((step) => (
  1. {step.num}

    {step.titre}

    {step.desc}

  2. ))}
{/* Filtre IA */}

L'IA de modération

Modèle utilisé

Mistral Small par défaut (configurable via la variable d'environnement FILTER_MODEL). Le modèle est interrogé via l'API Mistral AI — aucun fine-tuning ni entraînement n'est effectué sur les contributions des utilisateurs.

Ce que le filtre vérifie

Le modèle reçoit le texte de la contribution et une liste de critères fondés sur les textes internationaux suivants :

    {[ "DUDH (ONU, 1948) — Art. 1, 2, 7, 19, 20", "PIDCP (ONU, 1966) — Art. 20, 25, 26", "CEDH (Conseil de l'Europe, 1950) — Art. 10, 14, 17", "Charte des droits fondamentaux de l'UE (2000)", "Convention internationale sur l'élimination de la discrimination raciale — CERD (ONU, 1965)", "Statut de Rome (CPI, 1998) — incitation au génocide", "Convention contre la torture (ONU, 1984)", ].map((t) => (
  • {t}
  • ))}

Ce qui est refusé

    {[ "Appels à la haine ou à la discrimination (raciale, religieuse, sexuelle, etc.)", "Incitation à la violence ou à la persécution d'un groupe", "Apologie du génocide, de crimes contre l'humanité ou de crimes de guerre", "Désinformation délibérée visant à nuire à un groupe protégé", "Contenus portant atteinte à la dignité humaine au sens de l'Art. 1 de la DUDH", ].map((r) => (
  • {r}
  • ))}

Ce qui est accepté

Toute proposition qui exprime une opinion politique, sociale, économique ou environnementale — même controversée — dans le respect des droits fondamentaux. Le désaccord, la critique des institutions, la revendication et la protestation sont acceptés et bienvenus.

En cas de refus

Le motif du refus vous est communiqué avec la référence légale précise. La contribution n'est jamais rendue publique. Elle est conservée en base de données avec son statut (refusée) pour des raisons de traçabilité interne.

{/* Synthèse IA */}

L'IA de synthèse

Modèle utilisé

Mistral Large par défaut (configurable via SYNTHESIS_MODEL). Un modèle plus puissant est utilisé ici pour produire un résumé de meilleure qualité.

Ce que l'IA produit

Le modèle reçoit l'intégralité des contributions acceptées et produit un résumé structuré par thèmes. L'objectif est de rendre le texte directement lisible et utilisable par un élu ou un service public : les idées sont regroupées, les priorités dégagées, les contradictions éventuelles mentionnées.

Ce que l'IA ne fait pas

    {[ "Elle n'invente pas d'idées qui ne sont pas dans les contributions", "Elle n'écarte pas une contribution selon ses propres préférences", "Elle ne hiérarchise pas les contributions par leur auteur", "Elle ne produit pas de recommandations politiques de son propre chef", ].map((r) => (
  • {r}
  • ))}
{/* Données */}

Données collectées

{[ { donnee: "Texte de la contribution", oui: true, detail: "Conservé en base de données" }, { donnee: "Pseudonyme", oui: true, detail: "Facultatif, librement choisi par l'utilisateur" }, { donnee: "Date et heure", oui: true, detail: "Horodatage de la soumission" }, { donnee: "Résultat du filtre", oui: true, detail: "Acceptée / refusée + motif" }, { donnee: "Adresse IP", oui: false, detail: "Non conservée" }, { donnee: "Compte utilisateur", oui: false, detail: "Aucune inscription requise" }, { donnee: "Cookie de suivi", oui: false, detail: "Aucun tracker, aucune publicité" }, { donnee: "Données de navigation", oui: false, detail: "Non collectées" }, ].map((row) => ( ))}
Donnée Collectée ? Précisions
{row.donnee} {row.oui ? Oui : Non } {row.detail}
{/* Limites */}

Limites du système

Ce que cette plateforme n'est pas

La synthèse n'est pas un document factuel. Elle reflète fidèlement ce qui a été exprimé — ni plus ni moins. Les propositions ne sont pas vérifiées, expertisées ni validées politiquement. Cette plateforme capture des expressions citoyennes, pas des vérités établies.

L'auteur de la démarche reste personnellement attaché à l'expertise et au dialogue fondé sur les preuves. Ce projet n'a pas vocation à substituer la parole collective au jugement éclairé, mais à rendre cette parole lisible et transmissible.

{[ { titre: "L'IA peut se tromper", desc: "Le filtre automatique n'est pas infaillible. Une contribution légitime peut être refusée par erreur ; une contribution limite peut passer. Aucun système automatique ne remplace un jugement humain. Si vous estimez qu'un refus est injustifié, vous pouvez reformuler votre contribution.", }, { titre: "La synthèse est une interprétation", desc: "Le résumé produit par l'IA reflète les contributions telles qu'elle les a comprises. Des nuances peuvent être perdues dans l'agrégation. Le texte synthétisé ne doit pas être présenté comme une décision collective formelle, mais comme un aperçu des préoccupations exprimées.", }, { titre: "Aucun recours automatique", desc: "Il n'existe pas encore de mécanisme de contestation d'un refus. Si cette plateforme est déployée dans un cadre institutionnel, il est recommandé d'ajouter un contact humain de recours.", }, { titre: "Dépendance à l'API IA", desc: "Le filtrage et la synthèse dépendent de l'API Mistral (ou OpenAI en alternative). En cas d'indisponibilité, les soumissions sont refusées par précaution et le service affiche un message d'erreur.", }, ].map((item) => (

{item.titre}

{item.desc}

))}
{/* Modèles */}

Récapitulatif technique

{[ { label: "Backend", val: "Python / Flask" }, { label: "Base de données", val: "PostgreSQL" }, { label: "Frontend", val: "React + Vite" }, { label: "IA de modération", val: "Mistral small (défaut) — configurable via FILTER_MODEL" }, { label: "IA de synthèse", val: "Mistral large (défaut) — configurable via SYNTHESIS_MODEL" }, { label: "Données personnelles", val: "Aucune (pseudonyme facultatif uniquement)" }, { label: "Trackers / publicité", val: "Aucun" }, { label: "Inscription requise", val: "Non" }, ].map((row) => ( ))}
{row.label} {row.val}
); }