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.
- alertes
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
- Aucun compte inventé — provenance + date pour chaque handle (§ addendum).
- 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). - « 20 000 posts » ≠ « 20 000 personnes » — les libellés publics parlent de publications/comptes observés, jamais d'électeurs.
- Un échec d'acteur/de source n'empêche jamais la publication du forecast
(isolation par étape +
apify_runs+ data-health).