# DATA SOURCE AUDIT — QC Élection Forecast v3 « 127 » Inventaire réel des sources (ADDENDUM §42). Hiérarchie : TIER 1 officiel > TIER 2 maisons de sondage > TIER 3 grands médias > TIER 4 plateformes sociales > TIER 5 agrégateurs. Quand une source de tier supérieur contredit une source de tier inférieur, la source supérieure a raison (ex. DGEQ > Wikipédia). | Source | Tier | Type | URL | Données | Fréquence | Historique | Collecteur | Statut | |---|---|---|---|---|---|---|---|---| | Élections Québec (DGEQ) | 1 | officiel | electionsquebec.qc.ca · donnees.electionsquebec.qc.ca | carte 2026 (GeoJSON 127), candidatures + sortants, partis autorisés + chefs, électeurs/circ. (si publié), résultats soir du vote | chaque cycle (carte/candidatures) · hebdo (partis/chefs) | résultats 2018-2022 | `ingest/dgeq.py`, `ingest/elections_quebec.py` | ✅ actif | | Wikipédia EN (sondages) | 5 | agrégateur | en.wikipedia.org/wiki/2026_Quebec_general_election | sondages 2022→2026 (sections « Opinion polls »/« Campaign period », ventilations exclues), retraits, résultats 2022/2018 par circ. | chaque cycle (3 h campagne / 6 h) | 2022 complet | `ingest/wikipedia.py` | ✅ actif | | Wikimedia pageviews | 5 | attention | wikimedia.org/api/rest_v1 | pageviews quotidiens partis+chef·fe·s (fr.wiki), base 180 j | chaque cycle | 180 j glissants | `ingest/wiki_attention.py` | ✅ actif | | Léger (baromètre) | 2 | sondeur | leger360.com (via veille) | % satisfaits du gouvernement → prior de fondamentaux | mensuel (détection auto) | reconstitution 1998-2022 dans `fundamentals.py` | `ingest/firecrawl_watch.py` | ✅ actif (40 % capté 2026-08-11) | | Presse QC (RSS) | 3 | média | Radio-Canada, Le Devoir, La Presse | manchettes politiques → stance/sentiment | chaque cycle | depuis 2026-08 | `ingest/news_rss.py` | ✅ actif | | Presse élargie (Firecrawl search) | 3 | média | api.firecrawl.dev | articles hors RSS (JdM/JdQ, TVA, régionaux via index), radar de NOUVEAUX sondages | chaque cycle | — | `ingest/firecrawl_watch.py` | ✅ actif | | Polymarket (Gamma) | 5 | marché | gamma-api.polymarket.com | P(plus de sièges) implicite, volume | 15 min (cache) | — | `ingest/markets.py` | ✅ actif (ensemble 88/12) | | Actor Apify qc-social-pulse | 4 | social | api.apify.com (actor aI5AYtFfeDn3KAanf, compte gorgeous_thistle) | IG/FB/TikTok comptes officiels (OWNED, engagement seulement) + YouTube recherche & COMMENTAIRES PUBLICS (discussion) | chaque cycle | journalisé `apify_runs` | `ingest/social_pulse.py` + `apify/qc-social-pulse/` | ✅ actif | | Reddit r/Quebec | 4 | social | via index Google (Serper) | titres + extraits réels (discussion publique) | chaque cycle | — | `ingest/social_pulse.py` | ✅ actif (accès direct/RSS/proxy/BrightData tous murés — testés 2026-08-30) | | Mastodon | 4 | social | mastodon.social, mstdn.ca (tags publics) | posts #quebec/#polqc/#assnat | chaque cycle | — | `ingest/social_pulse.py` | ✅ actif | | Lemmy.ca | 4 | social | lemmy.ca/api/v3 | posts politiques QC | chaque cycle | — | `ingest/social_pulse.py` | ✅ actif | | Bluesky | 4 | social | public.api.bsky.app | recherche de posts | — | — | — | ❌ 403 même en résidentiel (testé 2026-08-30) — candidat actor avec session | | X/Twitter | 4 | social | syndication | — | — | — | actor best-effort | ⚠️ endpoints publics morts; nécessite actor avec session (à évaluer) | | Google Trends | 5 | attention | — | — | — | — | — | ⏳ non branché (pytrends instable; l'attention Wikipédia couvre le besoin) | | Statistique Canada (Recensement 2021) | 1 | population | www12.statcan.gc.ca | âge, langue, revenu, locataires, scolarité, densité par AD | statique + estimations | 2021 | ⏳ Phase D | ⏳ planifié — voir POPULATION_FEATURES.md | | ISQ | 1 | population/éco | statistique.quebec.ca | estimations démographiques récentes, séries QC | — | — | ⏳ Phase D | ⏳ planifié | | Assemblée nationale | 1 | officiel | assnat.qc.ca | ministres, fonctions, biographies | — | — | ⏳ Phase E (candidate features) | ⏳ planifié | ## Registres (config/, versionnés git) - `backend/config/social_seeds.json` — comptes des partis/chef·fe·s avec provenance (`official_site` = vérifié, `search` = pending_review) + date de vérification. Découverte/promotion automatique hebdomadaire (`ingest/social_account_discovery.py`) + alertes `dérive-chef`/`compte-social`. - `backend/config/social_queries.json` — requêtes sociales versionnées (partis, chefs, enjeux, tags). - `SOCIAL_ACCOUNT_REGISTRY.csv` — export plat du registre (généré). ## Règles appliquées 1. Aucun compte inventé — provenance + date pour chaque handle (§ addendum). 2. OWNED (contenu des partis) ≠ EARNED (discussion citoyenne) : les comptes officiels n'alimentent QUE l'indice d'engagement; seuls les contenus citoyens (commentaires YouTube, Reddit, Mastodon, Lemmy) entrent dans le sentiment (`social_posts.content_class`). 3. « 20 000 posts » ≠ « 20 000 personnes » — les libellés publics parlent de publications/comptes observés, jamais d'électeurs. 4. Un échec d'acteur/de source n'empêche jamais la publication du forecast (isolation par étape + `apify_runs` + data-health).