Files
politics-tracking/docs/investigative-data.md
simonandClaude Opus 5.5 583ccba31c Politrack: track Austrian politicians from public sources
Initial import of Politrack, a self-hosted service that tracks Austrian
politicians from federal to municipal level - roles, votes, money flows,
statements, meetings, social media and legal proceedings - with every claim
linked to its sources.

- backend: FastAPI + Postgres/pgvector; adapter framework (fetch -> parse ->
  load -> enrich) with robots.txt/TDM-aware fetching, a raw-response archive
  for reparsing, and a claim/evidence model with corroboration
- sources: Parliament, Wikidata, EU Parliament/Commission, Council of
  Ministers, Rechnungshof party reports and donations, procurement, RTR media
  transparency, political ad libraries, WKStA, news feeds, Wikipedia edits,
  Bluesky, Mastodon, public Telegram channels, YouTube and X (official API)
- web: Next.js frontend in German and English with typed API client
- mcp: MCP server for AI agents and RAG
- docs: architecture, data model, sources, legal notes, Unraid deployment and
  contributor guides; Docker Compose setup for Unraid

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 20:02:01 +01:00

6.8 KiB
Raw Permalink Blame History

More data points for investigative work

A shortlist of additional legally accessible sources and the correlations they enable, ranked by value per effort. "Status" refers to this project: ✅ done · 🟡 next · ⛔ not accessible · 🔍 manual research only (no bulk access).

1. Money that follows power

Data Source & access Why it matters Status
Public contracts ≥ €50k (core data, Kerndaten) Contracting authorities must publish award metadata as open data on data.gv.at within 30 days (§62 BVergG 2018; amended from 1 Oct 2026, check the new version) Correlate donors ↔ contract winners ↔ awarding ministry/party. This is the classic pay-to-play pattern ✅ vergabe.awards
Government advertising per ministry → outlet RTR Medientransparenz open data Which ministries fund which media, and does coverage change? Inserate affairs ✅ rtr.medientransparenz (ads and media subsidies)
Party annual reports (Rechenschaftsberichte) and audit results Rechnungshof (PDF) Income, related organisations (Vorfeldorganisationen), sponsoring, loans; discrepancies the Rechnungshof finds ✅ rechnungshof.party_reports (XLSX totals, loans, holdings, affiliated organisations; audit findings 🟡)
Public party funding (Parteienförderung, Klubförderung, Akademieförderung) Federal/state budgets, Rechnungshof Context for donations; how much taxpayers pay each party ✅ from the annual reports (federal budgets 🟡)
EU agricultural subsidies per recipient EU-mandated transparency database (AMA) Farmer-politicians and their associations 🟡
COVID aid (COFAG) large recipients Published lists Companies close to parties that received aid 🟡
Political ad spending online Meta Ad Library API (verified developer account), Google Political Ads Transparency (public BigQuery dataset) Spend per party/politician, targeting, timing before elections ✅ ads.google (public bundle), ads.meta (token)
Company roles (management, supervisory boards, shareholdings) Firmenbuch (fee per query; the status of free EU "high-value dataset" access in Austria is unclear) Revolving door, conflicts of interest, donor networks 🔍 (until free bulk access is confirmed)
Land register (Grundbuch) Fee per query Property deals involving politicians 🔍

2. Influence & access

Data Source Why Status
Lobbying register BMJ (public part) Who lobbies, for which clients ⛔ Lotus Notes application without stable URLs – not reliably accessible
EU Transparency Register and Commission meetings Open data (also via LobbyFacts.eu) Meetings of the Austrian commissioner/cabinet and of MEPs (MEPs must publish meetings when they are rapporteurs) ✅ Commission meetings eu.commission_meetings; MEP meetings 🟡
MEP declarations of financial interests European Parliament website Side income of Austrian MEPs (an EU-level counterpart to the Unv-Transparenz lists) ✅ europarl.meps
Cabinet staff (Kabinettsmitarbeiter), appointments to state-owned companies (ÖBAG holdings, ORF bodies, Nationalbank) Answers to parliamentary questions (already ingested as claims), annual reports, Wikidata Patronage (Postenschacher) 🟡 (extract from answers)
Council of Ministers minutes (Ministerratsprotokolle) Bundeskanzleramt What the government decided, and when ✅ bundesregierung.ministerrat
EU Council participant lists Council website (PDF) Ministers' travel and attendance 🟡
Data Source Why Status
Immunity waiver requests Parliament Investigations against MPs: authority, alleged offence, outcome ✅
Prosecutor and court press releases (WKStA, Landesgerichte' media offices), media dates of prominent trials justiz.gv.at Official statements on stages of high-profile cases. Feed them into legal_proceeding with official evidence (no headline guessing) ✅ WKStA justiz.wksta (documents; claims after review), courts 🟡
Court decisions RIS (anonymised) Link only when a case number is cited in an official source 🟡
Investigative committees (Untersuchungsausschüsse): witness lists, protocols, final reports Parliament open data Who testified, what they said, contradictions with later statements ✅ hearings (who, when); protocols 🟡
Audit reports on ministries and agencies Rechnungshof Mismanagement in departments led by a given minister 🟡
Insolvency notices (Ediktsdatei) Justiz Companies tied to politicians. Check the terms before automating 🔍

4. Words vs. deeds

Idea Data Status
Say vs. vote: compare statements (speeches, posts, interviews) with roll-call and faction votes on the same topic statements + votes + embeddings ✅ basic: votes show whether the person spoke on the item; topic-level comparison 🟡
Election programmes and the government programme vs. what was passed Party programmes (Manifesto Project: check its licence), government programme PDF, parliament items 🟡
Dissent tracker Roll-call votes (✅): who breaks with their faction, and on which topics ✅ basic
Wikipedia edits from parliament/government IP ranges Wikipedia API (open) + public IP allocations ✅ wikipedia.institution_edits

5. Coverage & reach

Data Source Status
Candidate lists of all elections (federal, state, municipal) BMI / state election authorities, official gazettes 🟡. This is the most reliable way to find local politicians and party affiliations
Election results per municipality BMI open data 🟡
TV appearances (Pressestunde, ZIB 2, Im Zentrum guest lists) ORF programme metadata / headlines ✅ headline detection, 🟡 programme metadata
Bluesky, Mastodon, public Telegram channels, YouTube; X via the official API open APIs / public web preview / paid API ✅ (Threads 🟡)

Correlations the data model already supports

  • Person timeline (all claims over time, filter by period): ✅
  • Calendar: sessions, committees, trips, meetings, per-day activity: ✅
  • Former politicians: latest coverage plus career entries (revolving door): ✅
  • Corroboration: the same fact from independent sources is merged and shown as confirmed: ✅
  • Follow the money: per person, the organisations they are connected to (side jobs, careers, party, meetings) and those organisations' donations, contracts, ads and funding: ✅ (/personen/<slug>?tab=money, /api/v1/persons/<slug>/network)
  • Organisation pages: money paid/received by kind, top counterparties, connected people: ✅
  • Next: a visual network graph and company roles (Firmenbuch – no free bulk access yet).