What this pack is

3 contests, 226 people, 82 poll response rows, 1,576 result rows and 14,999 money edges, built 2026-09-03.

The cycle phase shown on every contest is computed from the election date and how well that date is known. The corpus carries its own status column; it disagrees with the derived phase on 20 of the 61 contests across all twenty-two countries, so it is carried through but never read.

Money rows and result rows are held off the site at their full grain: the staged corpus is 156 MB. What is published here is the aggregate computed once at build time, and every aggregate states the number of rows it stands for.

Everything known to be wrong or limited

licence · grain · method
  • The AEC publishes BOTH SIDES of some gifts - the donor's 'Donations Made' and the recipient's 'Detailed Receipts'. Summing the file double-counts. 'other_receipt' and 'subscription' are AEC receipt types, not donations.
  • First preferences and two-party-preferred are different measures carried in different office values. Never mix them.
  • No half-Senate window has been published by the AEC. New donation-disclosure rules commence 2027-01-01, so the money shape changes next cycle.
  • vote_share in this pack is a FRACTION of 1 (largest observed 0.8086), not a percentage. India and Nigeria file percentages; the rest file fractions.

The pack's own record

every URL fetched, every inclusion and exclusion
SOURCES.md
# AUS sources

Everything below was fetched from this box (or, where noted, rendered with headless Chrome because
aph.gov.au sits behind an Azure WAF JS challenge) on 2026-09-03. No Wikipedia was used anywhere in
this pack, and no figure in any CSV comes from a search-engine summary — every number was read out of
one of the documents listed here.

## Calendar / elections.csv

| URL | What came from it |
|---|---|
| https://www.aec.gov.au/Elections/federal_elections/index.htm | AEC list of federal elections: "2025 federal election – Saturday 3 May 2025" (confirms `aus-hor-2025` / `aus-senate-2025` date) |
| https://www.aec.gov.au/media/2026/07-23.htm | AEC media release 2026-07-23: House stays at **150 seats**; "the next federal election, which is due to be held **between August 2027 and May 2028**" → `aus-hor-next`, `date_confidence=constitutional_due`, blank date |
| https://www.aec.gov.au/faqs/ | AEC FAQ (updated 11 Aug 2025): elections at least every three years, date set by the Governor-General on the government's request; 76 senators; "When a House of Representatives and half Senate election are held at the same time, **40 Senate vacancies are contested**" |
| https://www.aec.gov.au/Elections/federal_elections/2025/writs.htm | Who issues House and Senate writs (background for the Senate row note) |
| https://www.aec.gov.au/elections/electoral-events/index.htm | AEC electoral events index (context only) |
| https://www.aec.gov.au/footer/copyright.htm | Licence: "the AEC has applied the Creative Commons Attribution 4.0 International Licence to all material on this website" (exceptions: Coat of Arms, AEC logos, AEC maps, third-party content) → `license` column for AEC-derived rows |

## people.csv

| URL | What came from it |
|---|---|
| https://www.aph.gov.au/Senators_and_Members/Parliamentarian_Search_Results?q=&mem=1&par=-1&gen=0&ps=96&st=1 | House of Representatives members, page 1 (rendered DOM) — PHID, name with honorifics, party, "For" (division, state), official photo URL, parliamentarian page URL |
| https://www.aph.gov.au/Senators_and_Members/Parliamentarian_Search_Results?page=2&q=&mem=1&par=-1&gen=0&ps=96&st=1 | House members, page 2 — remainder of the 150 |
| https://www.aph.gov.au/Senators_and_Members/Parliamentarian_Search_Results?q=&sen=1&par=-1&gen=0&ps=96&st=1 | All 76 senators — same fields |
| https://www.aph.gov.au/api/parliamentarian/{PHID}/image | Official photo URL recorded verbatim in `photo_url` (one per row; not re-downloaded) |
| https://www.aph.gov.au/Senators_and_Members/Parliamentarian?MPID={PHID} | Official profile URL recorded in `official_url` |
| https://www.aph.gov.au/-/media/03_Senators_and_Members/Address_Labels_and_CSV_files/allmps.csv | **Attempted and failed** — Azure WAF JS challenge returned an HTML interstitial, not CSV. No data from it. |
| https://www.aph.gov.au/-/media/03_Senators_and_Members/Address_Labels_and_CSV_files/Senators/allsenel.csv | **Attempted and failed** — same WAF interstitial. No data from it. |
| https://results.aec.gov.au/31496/Website/Downloads/GeneralPartyDetailsDownload-31496.csv | AEC 2025 registered-party names ↔ `PartyAb`, used with the result file below to fill `party_code` |

## money-edges.csv (AEC Transparency Register)

| URL | What came from it |
|---|---|
| https://transparency.aec.gov.au/ | Transparency Register home (navigation) |
| https://transparency.aec.gov.au/Download | Download index (identified the two bulk archives) |
| https://transparency.aec.gov.au/Download/AllAnnualData | `AllAnnualData.zip` → annual returns. Used: `Donations Made.csv` (donor returns), `Detailed Receipts.csv` (party / associated entity / significant third party receipts), `Donor Donations Received.csv`, `Third Party Donations Received.csv`, `Capital Contributions.csv` — all filtered to financial year **2024-25** |
| https://transparency.aec.gov.au/Download/AllElectionsData | `AllElectionsData.zip` → election returns. Used: `Donor Donations Made.csv`, `Senate Groups and Candidate Donations.csv`, `Donor Donations Received.csv` — all filtered to event **2025 Federal Election** |

Also present in those archives but **not** written to `money-edges.csv` (they are aggregate returns or
expenditure, not donor→recipient flows): `Party Returns.csv`, `Associated Entity Returns.csv`,
`Donor Returns.csv`, `Significant Third Party Returns.csv`, `Third Party Returns.csv`,
`MemberOfParliamentReturns.csv`, `Detailed Debts.csv`, `Detailed Discretionary Benefits.csv`,
`Senate Groups and Candidate Expenses.csv`, `Senate Groups and Candidate Return Summary.csv`,
`Media Returns.csv`, `Media Advertisement Details.csv`.

## results.csv

| URL | What came from it |
|---|---|
| https://results.aec.gov.au/31496/Website/Downloads/HouseFirstPrefsByCandidateByVoteTypeDownload-31496.csv | 2025 House first preferences by candidate by vote type (FinalResults, generated 2025-06-16) → 1,126 candidate rows + 150 informal rows, `Elected` flag → `seats` |
| https://results.aec.gov.au/31496/Website/Downloads/HouseTppByDivisionDownload-31496.csv | 2025 House two-party-preferred by division → 300 rows (ALP and Liberal/National Coalition votes + published percentages) |
| https://results.aec.gov.au/31496/Website/Downloads/HouseMembersElectedDownload-31496.csv | Cross-check of the 150 elected members |
| https://results.aec.gov.au/31496/Website/Downloads/HouseCandidatesDownload-31496.csv | Candidate list (cross-check only) |

## polls.csv

Primary pollster releases used:

| URL | What came from it |
|---|---|
| https://www.roymorgan.com/findings/10328-federal-voting-intention-august-31-2026 | Morgan poll 24–30 Aug 2026, n=1,585: primaries, both 2PP variants, ALP-v-One Nation 2PP, "can't say" |
| https://www.roymorgan.com/findings/10321-federal-voting-intention-august-24-2026 | Morgan poll 17–23 Aug 2026, n=1,508 (same fields) |
| https://www.roymorgan.com/findings/10311-federal-voting-intention-august-17-2026 | Morgan poll 10–16 Aug 2026, n=1,576 (same fields) |
| https://www.roymorgan.com/findings/10307-federal-voting-intention-august-10-2026 | Morgan poll 3–9 Aug 2026, n=1,647 (same fields) |

Secondary but published tables (used for pollsters whose own tables are paywalled — the article text
carries the full topline, fieldwork window and sample size):

| URL | What came from it |
|---|---|
| https://theconversation.com/newspoll-has-combined-right-vote-down-but-albaneses-ratings-slump-289307 | Newspoll 3–7 Aug 2026, n=1,242 primaries; explicit statement that no 2PP was released |
| https://theconversation.com/total-support-for-right-wing-parties-rises-in-newspoll-before-secret-harbour-byelection-290339 | Newspoll 24–28 Aug 2026, n=1,243 primaries; no 2PP published |
| https://theconversation.com/resolve-poll-suggests-more-voters-support-labors-federal-budget-changes-than-oppose-them-289477 | Resolve 9–15 Aug 2026 (n=2,256) primaries; YouGov/News24 4–10 Aug 2026 primaries + both respondent-preference 2PPs |
| https://pyxispolling.com/ , https://pyxispolling.com/public-polling , https://pyxispolling.com/apc | Confirms Pyxis Polling & Insights conducts Newspoll for The Australian and publishes Australian Polling Council methodology statements |
| https://pyxispolling.com/images/document/21147953/NewspollMethodologyStatement24November2025byPyxis-Zyh2Ba8QeSnIzyojqPi5rA.pdf | Newspoll methodology statement (17–20 Nov 2025, n=1,245, effective n=1,000, MoE ±3.1, 2PP from previous-election flows). Methodology only — **no results tables**, so nothing from it is in `polls.csv` |

Attempted and unusable (documented so the next run does not repeat them):

| URL | Outcome |
|---|---|
| https://essentialreport.com.au/ , /reports/federal-political-insights , /reports/01-september-2026 , /questions/primary , /questions/2pp-2 | Essential's numbers are rendered through `visualisation/<id>` iframes; the WP REST API (`/wp-json/wp/v2/{reports,questions,time-series}`) returns empty content/ACF and the iframe paths 404 for a plain fetch. Headless Chrome produced an empty DOM. **No Essential rows.** |
| https://www.freshwaterstrategy.com/insights , https://freshwaterstrategy.com/2026/08/04/herald-sun-freshwater-strategy-august-polling-data/ , https://freshwaterstrategy.com/2026/05/07/news-australia-freshwater-strategy-april-polling-data/ | Posts publish the toplines only inside images; the "full results" link is not in the served HTML. **No Freshwater rows.** |
| https://www.resolvestrategic.com.au/ , /insights | No HTTP response (curl exit 000). Resolve numbers therefore come from The Conversation. |
| https://au.yougov.com/ , /politics , /news , /topics/politics | Redirects to the global YouGov site; no Australian voting-intention article or tracker table. YouGov numbers therefore come from The Conversation. |
| https://www.roymorgan.com/morgan-poll/primary-voting-intention/ | Roy Morgan's long-run primary-vote table stops at the 5–31 May 2025 poll, so weekly 2026 releases were used instead. |
| https://www.roymorgan.com/findings | Findings index (link discovery only). |
HANDOFF.md
# AUS elections pack handoff

Written 2026-09-03 to `/workspace/elections-ingest/aus/`.

## Files / counts

| File | Rows (excl. header) | Path |
|---|---|---|
| elections.csv | 3 | /workspace/elections-ingest/aus/elections.csv |
| people.csv | 226 | /workspace/elections-ingest/aus/people.csv |
| money-edges.csv | 14999 | /workspace/elections-ingest/aus/money-edges.csv |
| polls.csv | 82 | /workspace/elections-ingest/aus/polls.csv |
| results.csv | 1576 | /workspace/elections-ingest/aus/results.csv |
| SOURCES.md | — | /workspace/elections-ingest/aus/SOURCES.md |
| STATS.json | — | /workspace/elections-ingest/aus/STATS.json |
| HANDOFF.md | — | /workspace/elections-ingest/aus/HANDOFF.md |

## Cycle status (verified against the AEC)

- `aus-hor-2025` **sitting** — 2025-05-03, `confirmed_official`. AEC's federal-elections index states "2025 federal election – Saturday 3 May 2025". 48th Parliament sitting.
- `aus-senate-2025` **sitting** — 2025-05-03, `confirmed_official`. Half-Senate election held the same day; AEC FAQ: 40 of the 76 Senate places are contested at a House + half-Senate election.
- `aus-hor-next` **sitting**, `date_confidence=constitutional_due`, **`election_date` deliberately blank**. AEC media release 2026-07-23 says the next federal election "is due to be held between August 2027 and May 2028" and that the House stays at 150 seats. No polling day has been announced (the Governor-General sets it on the government's request), so no date was invented. The window is in the row's `notes`.
- No officially announced date contradicts the brief.

## Join keys

- `people.csv.person_id` = **Parliament of Australia PHID** (the `MPID` in `aph.gov.au/Senators_and_Members/Parliamentarian?MPID=…`). Alphanumeric, not numeric-only: e.g. `316915`, `R36` (Albanese), `00AOU` (Wong). Store it as a **string**.
- `people.csv.election_id` → `elections.csv.election_id`: the 150 House members attach to `aus-hor-2025`, the 76 senators to `aus-senate-2025`.
- `money-edges.csv.election_id` → `aus-hor-2025` for every row (join anchor only — see money caveats).
- `results.csv.constituency_id` = **AEC DivisionID**; first-preference and two-party-preferred rows for the same division share it.
- `polls.csv.election_id` → `aus-hor-next`.

## Licences

- AEC material (elections.csv sources, money-edges.csv, results.csv): **CC BY 4.0 International** per https://www.aec.gov.au/footer/copyright.htm (excluding the Coat of Arms, AEC logos, AEC maps and third-party content).
- people.csv: Parliament of Australia (aph.gov.au), © Commonwealth of Australia. The exact CC variant on the aph.gov.au copyright page could **not** be machine-verified from this box (Azure WAF blocks plain fetches of aph.gov.au), so the `license` column says only "© Commonwealth of Australia" — confirm before commercial redistribution.
- polls.csv: each row carries the pollster's own copyright string; Newspoll / Resolve / YouGov toplines are transcribed from The Conversation (CC BY-ND) because the primary tables are paywalled.

## Bars

- Sitting members: **150 House + 76 Senate = 226**, i.e. the full chamber floors, no vacancies implied (150 divisions, 12 senators × 6 states + 2 × 2 territories).
- Polls: **82 option-rows** from **8 surveys** across Roy Morgan, Newspoll, Resolve Political Monitor, YouGov (bar was ≥40).
- Money: **14,999** AEC Transparency Register rows, AUD as filed, non-empty.
- Results: official AEC 2025 returns (no CLEA fallback needed).

## People

Incumbents only (`role=incumbent`, `incumbent=true`); no next-election candidate list exists because
the election is not called. `bio_text` is **empty for all 226 rows** — aph.gov.au parliamentarian
pages publish roles, committees and contact details, not a biography paragraph, and nothing was
authored. `photo_url` and `official_url` are the official APH URLs recorded verbatim.

`party_code` is the AEC `PartyAb` matched to the APH party string using official AEC 2025 party
strings (exact match, then a case-folded match after dropping parenthetical/branch suffixes).
It is blank for the one **United Australia Party** member, where no unique AEC abbreviation matched —
not guessed.

Party mix (APH strings): ALP 124, Liberal Party of Australia 38, Liberal National Party of Queensland 18,
Independent 12, The Nationals 11, Australian Greens 11, One Nation 6, and one each of Katter's Australian
Party, Centre Alliance, Jacqui Lambie Network, Country Liberal Party, Australia's Voice, United Australia Party.

## Money

AEC Transparency Register bulk downloads, **AUD exactly as filed** (no conversion, no rounding).
Two cycles are present in the `cycle` column:

- `2024-25` — 13,007 rows, the latest published **annual** returns (donor returns' "Donations Made",
  party / associated-entity / significant-third-party "Detailed Receipts", donor and third-party
  "Donations Received", "Capital Contributions"). Sum of `amount`: **A$1,368,599,887**.
- `2025 Federal Election` — 1,992 rows, the **election** returns for the 2025 federal election
  (donor "Donations Made", candidate and Senate-group donations, donor "Donations Received").
  Sum of `amount`: **A$47,103,053**.

`edge_type` uses what the regulator actually published: `donation` 7,935 · `other_receipt` 6,670 ·
`donation_received` 331 · `subscription` 60 · `capital_contribution` 3. "Other receipt",
"subscription" and "public funding" are the AEC's own **Receipt Type** values in `Detailed Receipts`;
they are *not* donations and must not be displayed as such. Nothing is labelled PAC — Australia has no
US-style PACs.

**Every money row has a blank `person_id`.** AEC returns identify people and organisations by name (and
an AEC donor code), never by APH PHID, so there is no id-level join to `people.csv`.
**Do not name-match money to the roster** — "SMITH, John" in a candidate return is not evidence about
any particular member, and candidate returns include the ~1,000 candidates who lost.

Two more money warnings:

1. **The register publishes both sides of some gifts.** A single donation can appear once in a donor's
   "Donations Made" row and again in the recipient's "Detailed Receipts" row. Both are kept because both
   are what the AEC published; `as_filed_note` names the return each row came from. Do **not** sum across
   the whole file and call it total donations.
2. Aggregate returns (party/associated-entity/donor totals, MP returns, third-party totals) and all
   expenditure files (candidate/Senate-group expenses, media returns) were **excluded** — they are not
   donor→recipient edges. In particular `MemberOfParliamentReturns.csv` (12 rows for 2024-25) reports an
   MP-level donation total by name with no donor detail and no PHID; it was left out rather than
   name-matched into the roster.

## Polls

`polls.csv` is long format, one row per response option, attached to `aus-hor-next`.

- **Roy Morgan** (4 weekly surveys, 3–30 Aug 2026, from Roy Morgan's own releases): primaries
  (ALP, One Nation, L-NP Coalition total, Liberal, National, Greens, Independents/Other), plus
  **first preferences and two-party-preferred kept strictly separate** in `question_text`:
  respondent-allocated ALP-v-Coalition 2PP, 2025-election-preference-flow ALP-v-Coalition 2PP, and
  ALP-v-One Nation 2PP. The published "can't say" share is its own row. Roy Morgan prints no MoE →
  `moe` blank.
- **Newspoll** (3–7 Aug, n=1,242; 24–28 Aug, n=1,243): primaries only. The source states explicitly
  that **no two-party estimate was released**, so none is recorded.
- **Resolve Political Monitor** (9–15 Aug, n=2,256): primaries only. The only 2PP hint published was
  "by 2025 election preference flows, Labor would lead the Coalition by under 52–48" — not a printed
  number, so no 2PP row.
- **YouGov / News24** (4–10 Aug): primaries plus both respondent-preference 2PPs. `sample_n` is **blank**
  because the source gives the sample only as "about 1,500".
- No MoE was printed for any of the eight surveys, so `moe` is blank throughout. Nothing was estimated.
- **Essential Report, Freshwater Strategy, and the Resolve and YouGov own-site tables produced no usable
  published numbers** (JS-only chart embeds, numbers only inside images, dead host, redirects). See
  SOURCES.md for the exact URLs and failure modes. No Wikipedia anywhere.

## Last-cycle returns

`results.csv` — **1,576** rows, all from the AEC's official 2025 federal election downloads
(event 31496, FinalResults phase), `election_id=aus-hor-2025`:

- `office=lower_chamber_first_preference` — **1,126** candidate rows (150 divisions). `votes` = AEC
  `TotalVotes` (ordinary + absent + provisional + pre-poll + postal). `seats` = 1 where AEC `Elected=Y`,
  else 0 (150 winners). `vote_share` is **derived** — candidate votes ÷ that division's formal
  first-preference total — because this AEC download publishes no per-candidate percentage; the `source`
  column says so on every row.
- `office=lower_chamber_two_party_preferred` — **300** rows (2 per division: Australian Labor Party and
  Liberal/National Coalition). `votes` and `vote_share` are the AEC's **published** TPP votes and
  percentage (percentage ÷ 100). These are a different measure from first preferences: never mix them
  into one "vote share".
- `office=lower_chamber_informal` — **150** rows, one per division, the AEC's published informal ballot
  count. `party`, `vote_share` and `seats` are blank; informal ballots are not part of the formal vote
  base.
- `person_id` is blank on every results row: the AEC's `CandidateID` is a different registry from the APH
  PHID in `people.csv`, so joining them would be a guess. The AEC CandidateID is preserved inside
  `result_id` (`aus-aec-2025-fp-{DivisionID}-{CandidateID}`).

## Known holes

- **Senate results are not in this pack** (the brief asked for House first preferences and TPP). Senate
  first preferences by group/state remain available from the same AEC event-31496 download directory.
- `aus-senate-2025` carries all 76 senators for joinability, but only ~40 of those places were actually
  contested in 2025; the continuing state senators were elected at the 2022 half-Senate election. Do not
  read "senator attached to `aus-senate-2025`" as "elected on 2025-05-03".
- Money rows for financial year 2024-25 are attached to `aus-hor-2025` purely as a join anchor. The
  annual-return money is *not* election-period money; use the `cycle` column, not `election_id`, when
  describing it.
- New federal donation-disclosure rules commence 1 January 2027 (AEC media release 2026-07-23), so the
  shape of this file will change for the next cycle.
- `elections.csv` has no `aus-senate-next` row: half-Senate timing differs from the House and no date or
  window specific to it was published by the AEC.

Licences on the rows

  • AEC material: CC BY 4.0 International (https://www.aec.gov.au/footer/copyright.htm)16,575
  • Parliament of Australia (aph.gov.au): (c) Commonwealth of Australia226
  • (c) Roy Morgan Research; topline as published in the cited release56
  • (c) Newspoll (Pyxis Polling & Insights) for The Australian; topline as reported by The Conversation (CC BY-ND 4.0 article)10
  • (c) YouGov for News24; topline as reported by The Conversation10
  • (c) Resolve Strategic (Resolve Political Monitor) for Nine newspapers; topline as reported by The Conversation6