`bourse-college`, `bourse-lycee`, `dse-bourse-superieur` et `cheque-energie-guichet` citaient leur plafond dans leur copie et s'affichaient à tout le monde. Un foyer à 80 000 € de revenu fiscal recevait chaque septembre un rappel de bourse de collège ; le chèque énergie, dont le plafond exclut la majorité des ménages, partait à tous. Le quiz demande désormais une tranche de revenus en net mensuel, facultative, dont les bornes sont calculées sur les plafonds réels de la composition du foyer — 3 pastilles pour une personne seule, 4 pour un couple avec enfants. Ce que ça autorise est étroit, et c'est la décision (D-051) : on filtre des échéances, on ne simule pas des droits. Il n'existe aucun verdict « éligible » dans le moteur, seulement `estExclu`. Aucun montant, aucun total, aucun « tu as droit à ». Trois points qui ne se devinent pas : - Cinq aides, cinq dénominateurs — RFR ou revenu net catégoriel, N−1 ou N−2, divisé par les unités de consommation, par les parts fiscales, ou par rien. Une seule question suffit parce que les diviseurs se déduisent de la composition, et c'est aussi ce qui rend les bornes nécessairement dynamiques. - Le doute affiche toujours. Barème périmé, composition hors table, foyer muet, conversion approximative : `estExclu` répond faux. La conversion net → annuel est le maillon faible, et la parade est le sens de l'arrondi. - Le verdict n'est jamais stocké, seulement la tranche déclarée — un enfant ajouté relève le plafond sans rejeu du quiz. Deux fiches nouvelles : la déclaration de scolarité des 16-18 ans, sans laquelle la Caf ne verse pas l'ARS (466,02 €), et le leasing social. Le Pass'Sport n'est pas écrit : la saison 2026-2027 n'est pas annoncée, et affirmer une fenêtre non publiée serait la faute qu'on se reproche ailleurs. 747 tests, 78 fiches. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
18 KiB
Le quiz — les questions exactes, telles qu'elles sont
Budget : ≤ 2 minutes, 10 écrans. Chaque question est factuelle (on sait sans chercher), « je ne sais pas » est toujours une réponse valide, aucune question mémoire, aucune saisie obligatoire. Chaque réponse déclenche des inférences documentées — le quiz est la matérialisation du DSL d'applicabilité (§ 20.1).
Révision du 28 juillet 2026. Ce document décrivait encore le parcours de juillet 2026 : saisie de plaque, API SIV payante, « 1 plaque offerte », prix mensuel, export .ics gratuit. Tout cela a été annulé — la plaque par D-004 (le champ K de la carte grise la remplace), le prix par la réécriture du § 10 (19,99 €/an), le mur e-mail par D-005, l'entretien courant par D-017. Le document a été réaligné sur le code (
src/app/quiz/quiz-client.tsx,src/engine/quiz-to-assets.ts) à l'occasion de l'audit complet. Les écarts restants sont signalés ⚠️.
L'ordre réel des écrans (TOTAL_SCREENS = 9) : adresse → logement → chauffage → équipements → véhicules → composition du foyer → papiers & CESU → contrats → animaux.
Écran 0 — L'adresse (optionnel, avant tout)
« On commence par ton adresse ? » Champ autocomplété (API Adresse/BAN) · « Passer » toujours visible.
Si elle est fournie, elle est de très loin la réponse la plus rentable du quiz — elle alimente quatre chaînes distinctes :
- Département → Loi Montagne (
loi_montagne, calculé dans l'adapter adresse) et zone de déclaration des revenus (01-19 / 20-54 / 55 et au-delà, stratégiedeclaration_revenus— l'échéance ne change pas, sa date si). - Coordonnées (
lat/lon/citycode/banId, tous conservés jusqu'à l'asset) → relevé Géorisques, croisement ZFE, veille CatNat et VigiEau, pendant l'écran de fabrication. - DPE de l'ADEME (jointure par
banId) → pré-remplissage du type de logement et du chauffage, soumis à confirmation ; et datation du logement, reportée sans confirmation — c'est la seule caractéristique du diagnostic qu'aucun chantier ne peut démentir (D-010). - Aucune règle ZFE n'est écrite chez nous : tout vient de la Base Nationale des ZFE (D-011).
Ce qui n'est pas personnalisable, et pourquoi : le règlement sanitaire départemental (ramonage). Le décret de 2023 pose un plancher de 12 mois que les arrêtés préfectoraux peuvent relever, mais ces arrêtés n'existent dans aucun jeu national — la fiche ramonage énonce le plancher et renvoie à la préfecture, comme pour le PPRT.
Volet Logement
Écran 1 — Le logement
« Ton logement, c'est plutôt : » [Maison] [Appartement] · [Propriétaire] [Locataire]
Inférences : propriétaire → taxe foncière, déclaration des biens, AG de copro (si appartement) ; locataire → révision IRL, décence énergétique ; maison → gouttières, haies ; appartement + propriétaire → AG de copropriété.
Question conditionnelle — l'époque de construction (D-010) : [Avant 1949] [Entre 1949 et 1997] [Après 1997] [Je ne sais pas]. Elle n'apparaît que si le DPE n'a pas daté le logement (pas d'adresse, aucun diagnostic, ou tranche ADEME à cheval sur un pivot). Trois réponses et pas dix : ce sont les deux seuls pivots réglementaires, le 1er janvier 1949 (constat plomb) et le 1er juillet 1997 (état d'amiante). Inférences, propriétaire uniquement : plomb-crep, amiante-etat.
Écran de confirmation DPE : quand un diagnostic est trouvé, l'étiquette et sa date de fin de validité ne sont jamais adoptées sans un tap explicite (src/knowledge/dpe-confirmation.ts), avec un bouton Annuler. Un DPE peut décrire un logement qui n'existe plus.
Écran 2 — Le chauffage
« Tu te chauffes comment ? » (plusieurs réponses possibles) [Gaz] [Fioul] [Électrique] [Pompe à chaleur / clim] [Bois / poêle / cheminée] [Je ne sais pas]
Inférences : gaz/fioul → entretien annuel obligatoire ; PAC/clim → entretien bisannuel ; bois/cheminée → ramonage ; électrique seul → rien, et c'est très bien. « Je ne sais pas » est filtré à la construction de l'asset — il ne déclenche rien plutôt que de déclencher tout.
La pré-sélection issue du DPE s'appuie sur src/knowledge/dpe-chauffage.ts : une correspondance exacte des 155 valeurs de générateur et 15 valeurs d'énergie principale publiées par l'ADEME, et non une détection par sous-chaîne. C'est elle qui distingue une PAC d'un radiateur électrique — les deux affichent « Électricité » côté énergie principale.
Écran 3 — Les équipements (multi-sélection, tout est optionnel)
« Coche ce que tu as : » [Jardin / haies] [Piscine] [Fosse septique] [Adoucisseur d'eau] [Chauffe-eau électrique]
Inférences : jardin → taille des haies ; piscine → sécurité, hivernage, remise en route ; fosse → vidange et contrôle SPANC ; adoucisseur → entretien ; chauffe-eau → détartrage. Les détecteurs de fumée et la VMC ne sont pas demandés : inférés pour tout logement (obligation universelle).
Volet Véhicules (D-004 puis D-017 — plus aucune API payante)
Écran 4 — La carte grise, pas la plaque
« Une voiture au foyer ? » Un seul champ de ta carte grise suffit : on remplit le reste. Pas de carte grise sous la main ? La recherche par modèle marche aussi.
Voie 1 — le champ K (numéro de réception communautaire, ex. e2*2001/116*0362*00). Recopié, il identifie exactement le véhicule dans le référentiel RDW (2,9 M de configurations, domaine public, zéro coût variable) : marque, modèle, année de type, énergies homologuées, norme Euro. Le numéro est persisté tel que le référentiel l'écrit, pas tel qu'il a été tapé.
Le champ P.2 (puissance nette maximale en kW) est ensuite proposé — jamais saisi librement : le référentiel connaît les puissances réellement homologuées pour cette réception, on les présente en liste fermée. Une saisie libre laissait passer la confusion kW / chevaux, qui produit un nombre plausible n'existant sur aucune version et fait taire le produit sans cause visible.
Trois cas, et dans deux d'entre eux on ne demande rien : une seule puissance homologuée (déduite), un seul moteur en lice (déduit), plusieurs moteurs (question posée). Mesuré à D-017 : le couple champ K + énergie désigne déjà un moteur unique 39 % du temps ; le P.2 fait passer l'identification du moteur de 38 % à 86 %.
Voie 2 — marque/modèle, ouverte à la demande ou d'office si le champ K est inconnu. Autocomplétion sur le catalogue agrégé, jamais de saisie libre. L'énergie proposée est restreinte à celles réellement commercialisées pour le modèle. L'année de mise en circulation est alors demandée (elle ne l'est pas sur la voie 1, où le référentiel la fournit).
⚠️ Écart connu, documenté à l'audit § 3 : le champ P.2 n'est proposé que sur la voie 1. Un foyer passé par marque/modèle laisse donc tous les moteurs du modèle en lice, la règle d'unanimité ne tranche jamais, et rien n'est affirmé sur la distribution. Ce n'est pas une limite de conception —
codesEnLicesait filtrer sur la puissance sans réception — c'est un trou de câblage. Correctif proposé et mesure préalable dans l'audit.
La vignette Crit'Air est la seule question du sujet : le classement, lui, se déduit de la motorisation et de l'année (src/knowledge/critair.ts). Non renseignée = on ne sait pas, et la fiche s'affiche quand même — commander une vignette qu'on a déjà coûte moins cher que rater une amende.
⚠️ Cette réponse est appliquée à tous les véhicules du foyer, pas véhicule par véhicule (audit § 3.4).
Ce qui a été retiré, et ne reviendra pas : la saisie de plaque, l'API agrégateur SIV, le quota « 1 plaque offerte », le cache par plaque et la limite IP associée. Aucun de ces mécanismes n'existe plus. La date réelle du contrôle technique n'est de toute façon pas disponible en self-service — la fenêtre est calculée depuis la première immatriculation (stratégie ct_vehicule).
⚠️ Non implémenté : l'option [Moto/scooter] [Remorque] annoncée au § 5.3 du cadrage.
Volet Foyer
Écran 5 — Qui vit ici ?
« Le foyer, c'est : » Adultes : [1] [2] [3 ou plus] · Enfants : année de naissance, choisie dans une liste, un enfant à la fois Pas de prénoms, pas de dates exactes — l'année suffit, et c'est tout ce qu'on garde.
L'année de naissance a remplacé la tranche d'âge le 28/07/2026 (D-019). Ce n'est pas une question de plus, c'est la même en plus utile : la scolarité française se règle sur l'année civile de naissance (art. L113-1), si bien que « 6-11 ans » ne dit pas si l'enfant est en CM2 ou en 6e — donc ne dit pas s'il a droit à une bourse de collège. Chacune des quatre tranches enjambait un pivot scolaire, exactement comme la tranche ADEME « 1989-2000 » enjambait le pivot plomb de D-010. La tranche d'âge n'a pas disparu : elle est désormais déduite, ce qui fait une réponse de moins pour une précision de plus.
L'écran réaffiche la classe et non l'année (« 2014 · 6e ») : c'est ce qui se vérifie d'un coup d'œil, et c'est ce que le produit va utiliser.
Inférences : par adulte → CNI, passeport, permis (si papiers_anciens le permet), tous calés sur les vacances d'été de l'académie ; par enfant → passeport enfant, 5 ans seulement ; tranche 16-17 → recensement citoyen et JDC ; niveau et cycle scolaires → bourses de collège ou de lycée, Parcoursup, inscriptions, assurance scolaire (pilier Enfance & scolarité, D-019).
Les valeurs scolaires ne sont pas figées à la création du foyer : elles se périment d'une rentrée à l'autre et sont recalculées à chaque passage hebdomadaire (src/jobs/enrichissement-scolarite.ts).
Écran 6 — Les revenus, en tranches (D-051, 05/08/2026)
« Les revenus du foyer, en gros ? » Des pastilles calculées pour CE foyer — par exemple, pour un couple avec deux enfants : [Moins de 2 050 €] [2 050 à 3 200 €] [3 200 à 7 500 €] [Plus de 7 500 €] [Je préfère ne pas dire] Ce qui tombe sur le compte chaque mois, tous adultes confondus.
Après les enfants, et pas avant : les bornes sont calculées à partir de la composition qui vient d'être déclarée. Les plafonds des bourses, du chèque énergie et de l'ARS ne veulent pas dire la même chose à une personne seule et à une famille de cinq — trois pastilles pour la première, quatre pour la seconde, et des bornes qui montent avec la famille.
En net mensuel, jamais en revenu fiscal de référence : personne ne connaît son RFR par cœur, et le demander enverrait chercher un avis d'imposition — la question mémoire que le § 4.2 interdit. Ce sont les seuils qui sont convertis, pas les réponses (src/knowledge/ressources.ts), et l'arrondi va toujours dans le sens qui affiche la fiche.
Ce que la réponse fait, et rien d'autre : retirer une fiche dont le plafond exclut le foyer. Aucun montant estimé, aucune liste de « tu as droit à » — on filtre des échéances, on ne simule pas des droits. Ne pas répondre est le cas par défaut, servi à l'identique : le foyer voit tout, y compris ce qu'on n'a pas pu tester.
Inférences : bourse-college, bourse-lycee, cheque-energie-guichet, ars-declaration-scolarite, leasing-social-electrique.
Écran 7 — Les papiers (la seule question « floue » assumée)
« Tes papiers d'identité ont plus de 10 ans ? » [Oui, certains] [Non, refaits récemment] [Aucune idée] bonus, un tap : « Tu emploies quelqu'un à domicile ? » [Oui] [Non] → sous-module CESU
« Aucune idée » est traité comme « oui » : le seul biais acceptable ici, parce que vérifier une date qu'on connaît coûte dix secondes, et découvrir une CNI périmée à l'aéroport coûte le voyage.
Écran 8 — Les contrats (§ 5.6, révisé par D-006 puis D-007)
« Des contrats à associer, tant qu'on y est ? »
Une carte par type de contrat pertinent pour ce foyer (filtrage sur ce que le quiz sait déjà à cet écran) : assurance habitation, auto (si véhicule), animale (si animal), emprunteur (si propriétaire), mutuelle, box, mobile, salle de sport. Sélectionner une carte révèle un seul champ optionnel : « Échéance approximative ? » (un mois, « je ne sais pas » par défaut).
L'assureur n'est jamais demandé — il ne sert aucune inférence, seule l'échéance en déclenche une.
C'est le seul moment de déclaration (D-007) : l'opt-in post-quiz du hub a été retiré. Un contrat ignoré ici, ou une assurance devenue pertinente après coup, n'est plus déclarable du tout.
⚠️ Contradiction de copy à corriger : le texte d'aide de l'écran dit encore « Les autres, on te les proposera au bon moment ». C'est faux depuis D-007 — rien ne sera proposé. Voir pilier-contrats.md § 3.1 pour la sortie envisagée (rouvrir la déclaration dans le récap annuel).
Écran 9 — Les animaux (dernier écran)
« Des animaux ? » [+ Un chien] [+ Un chat] [+ Autre animal] · puis âge du dernier ajouté : [jeune] [adulte] [senior] [Je ne sais pas] [Voir les échéances de mon foyer] — « Aucune adresse mail demandée. Le résultat s'affiche directement. »
Inférences : vaccins annuels, antiparasitaires (avril-octobre), vermifuge trimestriel, bilan si senior, garde avant les vacances. Voir pilier-animaux.md.
Écran de fabrication — où le travail a lieu (D-009)
« On monte ta veille… » Une étape par traitement réellement effectué, cochée quand il aboutit, avec ce qu'il a trouvé.
Le plan des étapes est calculé par le serveur, à partir des réponses, et envoyé en première ligne d'un flux NDJSON (planFabrication, src/engine/fabrication.ts) : pas d'adresse, pas de relevé de risques et pas d'attente ; pas de véhicule, pas d'identification. Aucun délai n'est simulé ; seule la cadence d'affichage est bornée, pour que ce qui est acquis reste lisible.
Les traitements réels : création des assets · réconciliation (croisement avec les 72 fiches) · identification des véhicules dans le référentiel RDW, de leurs moteurs et de leurs campagnes de rappel · année scolaire des enfants et vacances de l'académie (D-019, annoncée seulement si un enfant a une année de naissance) · relevé Géorisques · veille événementielle (arrêtés CatNat, restrictions d'eau) · croisement ZFE. Les trois derniers partagent le même passage, le seul qui fasse réellement attendre — plafond 10 s, au-delà duquel une file pg-boss prend le relais et le foyer se complète au rechargement suivant.
Chaque étape annonce un constat, jamais un geste ni une date : « zone de débroussaillement obligatoire », « PEUGEOT 308 — 20 campagnes de rappel recensées », « courroie de distribution qui tourne dans l'huile », « aucun arrêté en cours à ton adresse ». Le mode d'emploi reste derrière l'abonnement (D-005 : révéler l'inventaire, jamais le mode d'emploi).
Écran final — la révélation graduée (D-005, § 10.2)
Aucune adresse mail n'est demandée, ni avant ni pendant. Le hub s'affiche directement.
Ce qui est montré à tous : le total (« 34 échéances sous contrôle »), la répartition par pilier, la timeline 12 mois en pastilles anonymes, et 2-3 échéances entièrement révélées — la seule brèche volontaire dans « révéler l'inventaire, jamais le mode d'emploi », parce que sans elle tout ce que voit le visiteur reste abstrait.
Ce qui est verrouillé : le reste du calendrier, réduit à un compte par pilier. Pas les titres — un titre est déjà le savoir.
Le geste de paiement : 19,99 €/an, avec la case de renonciation au droit de rétractation obligatoire (§ 10.7, art. L221-28 du Code de la consommation), refusée côté serveur si elle n'est pas cochée. Plus d'export .ics gratuit : le flux vivant est un avantage payant.
L'adresse mail est proposée après, une fois le calendrier parcouru, et refusable — pour retrouver un foyer dont l'URL est un UUID que personne ne mémorisera.
⚠️ Cette promesse n'est pas tenue aujourd'hui :
POST /api/interetenregistre l'adresse et n'envoie aucun mail (audit F1).
Ce qui n'est jamais dans le quiz : les dates de dernier entretien (questions mémoire interdites), le prénom du conjoint, l'adresse mail, la plaque d'immatriculation.
Comptage et instrumentation
10 écrans, une seule saisie clavier réellement utile (le champ K ; l'adresse et le modèle sont autocomplétés, la puissance est choisie en pastilles). Budget 2 minutes tenu pour un foyer qui ignore l'écran contrats.
Un brouillon en sessionStorage protège le parcours d'un rafraîchissement accidentel.
Instrumentation (l'étoile polaire se mesure ici, § 13.1) : quiz_start, quiz_screen par écran, cta_activate. Taux de complétion par écran, taux d'adresses fournies, taux de champs K fournis vs repli déclaratif (la mesure qui décidera de l'arbitrage de l'audit § 3), distribution du nombre d'échéances générées.
⚠️ Ces événements sont insérés par
POST /api/event, dont lecatchest muet : si les insertions échouent, la mesure vaut zéro sans que rien ne le dise (audit F8).