About Orestarlight
Orestarlight republishes what campaigns and committees reported in ORESTAR for Portland and Multnomah County's November 2026 races and ballot measure in one place, with plain-language pages for voters and a downloadable transaction dataset for journalists and researchers.
What it does
For each race, the site shows from the filings alone who gave, how much each campaign raised and spent, whether the money came from Portland, the rest of Oregon, or outside Oregon by the address on the filing, and who spent independently for or against each candidate or measure side. The current exports came from ORESTAR on Oct 19, 2026.
Standards
- As reported. Classification uses only fields the filer reported. The site assigns no group, sector, or ideology, and follows no dollar past the committee that reported receiving it.
- No endorsements. Candidates are listed by last name, and summary sentences name no candidate. Any “largest” states its sort and its period, and applies the same way to both sides.
- Missing exports. A total whose filings are not here yet reads “Not yet available.”
- Reproducible. Totals are direct sums of a public, downloadable, privacy-filtered dataset, and tables link to the ORESTAR records under them.
- Correctable. Dataset changes are logged between builds, and error fixes are listed with dates.
Independence
Orestarlight is an independent citizen project. It is not paid for or authorized by any candidate, campaign, or committee, and it is not a government site. The official records are in ORESTAR, run by the Oregon Secretary of State. When this site and ORESTAR disagree, ORESTAR is right and the difference belongs on the corrections page.
Where the data comes from
Every number on this site is a direct sum of transactions that campaigns and committees reported in ORESTAR, the Oregon Secretary of State's campaign finance system.
ORESTAR has no bulk download or public API, so each committee's contributions and expenditures are exported by hand from ORESTAR's public transaction search. The exports behind the current figures came from ORESTAR on Oct 19, 2026, and each candidate and committee page gives the date of its own exports. The published dataset holds 12,323 transactions. For independent expenditures, the export does not say which candidate or measure a committee spent for or against, so the site also reads each transaction's public detail page, which does.
Oregon requires committees to report transactions within 7 days during the 42 days before a general election (ORS 260.057), so ORESTAR can show newer transactions than this site until the next update.
Donors' street addresses are never published here. The public dataset keeps names, cities, states, and ZIP codes only, and every total on this site can be reproduced from the downloads.
Which races, measure, and committees
The site covers every City of Portland and Multnomah County candidate contest on the November 3, 2026 ballot: Portland City Council Districts 3 and 4, Portland Auditor, County Chair, County Commissioner District 2, County Auditor, and County Sheriff. It also covers Portland Measure 26-267. Candidate names and the measure's caption and question come from Multnomah County's official ballot content reports of September 22, 2026. Contests from other jurisdictions on the same ballot are out of scope.
A committee other than a candidate's own has a page here only when at least one of these is true:
- it is registered for or against the measure;
- it gave money to, or received money from, a candidate or measure committee on this ballot; or
- its independent spending names a candidate or measure on this ballot.
A committee that appears only in the statewide independent-expenditure export, or only in a list of committees, has no page, because its presence could suggest a link to these races that the filings do not show. The committees index lists every committee with a page.
What the site counts
- Raised: contributions reported on or after Jan 1, 2025, except loans received, which are shown separately. Raised includes in-kind contributions (goods and services valued by the filer) and city matching funds, because ORESTAR reports both as contributions. Candidate and committee pages state how much of each total is in-kind and how much is matching funds.
- Spent: cash expenditures only. Accounts payable and personal expenditures awaiting reimbursement are shown on committee and candidate pages but are not added to spent, because a later cash payment can settle the same bill. Loan payments are shown separately.
- Period net: raised plus loans received, minus spent and loan payments, in the stated period. The filings used here carry no opening balance, so this number is never cash on hand, and this site prints no cash-on-hand or debt figure it cannot prove from the records.
- Not yet available: when the site does not have a committee's complete export of a kind, the matching total says “Not yet available.” A $0 on this site means that ORESTAR reported $0: either the export had no rows of that kind, or the search returned no records on the date given.
- No committee: when ORESTAR's list of committees for a contest shows none for a candidate, the candidate's page says so and gives the date of the search. Under ORS 260.043, a candidate who is their own treasurer and expects neither contributions nor expenditures to exceed $1,500 in a calendar year need not form a committee or file statements.
- Independent spending: expenditures reported as independent on or after Jan 1, 2026, assigned only to the candidate or measure named on the transaction's detail page. When a cash payment settles an earlier bill that names the same target, the site counts it once.
- Ballot measure sides: each committee counts for the position it recorded in ORESTAR. Transfers between committees on the same side count once in the side total.
- Other kinds of rows: records whose reported kind is neither a contribution nor an expenditure stay in the dataset and in transaction search, and are excluded from raised and spent. Refunds and other negative rows are summed as reported.
Choices this site made, and why
Presenting the filings takes some choices that the law does not make. Each one is listed here with its basis, and each applies the same way to every candidate, committee, and side.
| Choice | Value | Basis |
|---|---|---|
| When candidate money starts to count | Jan 1, 2025 | This site's choice. It is the start of the calendar year before the election, so totals cover whole calendar years, the unit Oregon uses for its itemization threshold (ORS 260.083), and leave out the 2024 election. |
| When independent spending starts to count | Jan 1, 2026 | This site's choice. Independent payments in 2025 can settle bills from the 2024 election. For example, ORESTAR transaction 5213817 (February 10, 2025) supports Steve Novick, whose previous race ended in November 2024. |
| When measure money starts to count | Measure 26-267: Jan 1, 2023 | This site's choice, early enough to include the petition drive by the committee that qualified the measure. |
| Gifts of $100 or less | Shown as a separate, unnamed row | ORS 260.083(1) requires a named entry only for a contributor who gives more than $100 in a calendar year, and lets the rest be reported as a single item. Because a lump sum hides how many gifts it holds, the size table gives it no count. |
| Contribution size bands | $100 or less, $101–$250, $251–$1,000, $1,001–$5,000, over $5,000 | The $100 line follows ORS 260.083. The other edges are round numbers that this site chose. |
| City matching funds | Included in raised; separate in the size and geography tables | ORESTAR reports matching funds as contributions, so raised includes them. In the size table they have their own row, because a payment from the city is not a gift of a particular size. They are left out of geography and ZIP code figures, because they carry the city's address rather than a donor's. |
| Kinds of contributors compared across a race | Matching funds; individuals and candidate family; gifts of $100 or less; political committees and parties; businesses, labor organizations, and other | Groups of ORESTAR's Book Type field. Businesses and labor organizations share a segment, so that neither kind of organization is singled out. Candidate and committee pages list every Book Type separately. |
| Geography | Portland, rest of Oregon, outside Oregon, not reported | The city and state on the filing, for itemized contributions; lump sums of gifts of $100 or less carry no address and are left out. “Portland” means the filing's city is Portland, which is a mailing address and not always inside city limits. Out-of-state money given to an Oregon committee that then gives to a campaign shows as a gift from that Oregon committee, because the site follows each transfer one step only. |
| Characters lost in exports | Three “¿” between two letters become an apostrophe; any other run stays as exported | ORESTAR's export writes “¿” for each byte of a character it cannot encode. In these exports, a three-byte character between two letters is a curly apostrophe, as in O¿¿¿Neill. A shorter run, as in Roc¿¿o, could be any accented letter, so it stays as exported. |
| Contributor pages | Contributors who gave $1,000 or more in all to committees on this site | This site's choice, to keep the list to the largest contributors. Every contributor is in transaction search. |
| Lists and charts with a limit | Largest 25 or 40 contributors or payees; 10 Portland ZIP codes | This site's choice, for legibility. Every row is in transaction search and the downloads. |
| Order of candidates | By last name | This site's choice. Any candidate table can be sorted by any column. |
| Race summaries | Counts and totals | Summary sentences name no candidate, so that no candidate is singled out. The tables give every figure. |
| Scales in charts | One scale per comparison, starting at zero | Charts that compare amounts share one scale and start at zero. A race's small cumulative charts share one scale for every candidate. |
| Marks for support and opposition | A solid bar for support and a hatched, outlined bar for opposition, on every page | The marks use no color, so they carry no U.S. party meaning and stay distinct for color-blind readers and in print. Opposition always sits left of the center line and support right of it, and text labels every mark. On line charts, support is a solid line and opposition a dashed one. |
How the site classifies: as reported only
Breakdowns use only fields the filer reported. Contributor breakdowns use ORESTAR's Book Type. Spending breakdowns use the filer's purpose text exactly as written, with “No purpose code reported” when it is blank. City matching funds are identified only by their reported form: Book Type “Other” with a contributor name that starts with “City of Portland.”
This site assigns no group, sector, ideology, employer industry, or original-source attribution. When committee A gives to committee B, the site shows that direct, reported transfer and stops there. The filings do not say which of A's dollars moved, so the site does not split A's gift among A's donors.
Independent spending is assigned only when the filing names a candidate or measure on this ballot. Spending by committees on this site whose filings name no candidate or measure on this ballot is listed on the spender's committee page and counts for and against no one. Right now that is $0 across 0 transactions.
Rules that differ by race
Local rules apply on top of Oregon's reporting law. Multnomah County publishes its own contribution limits and disclosure rules for county candidates, and the City of Portland publishes its own campaign finance and Small Donor Elections rules for city candidates. Each race page names the rules that apply to it and links to the official summary. Read a county figure and a city figure under their own rules: the same amount can have a different legal meaning in each.
What the filings cannot show
- Contributors who give $100 or less in a calendar year can be reported in a lump sum, without names or addresses.
- Groups that are not political committees do not report their own donors in ORESTAR, so their money stops at their name.
- Staff, canvassing, and consulting costs are not tied to a candidate unless the filer reports them as in-kind gifts or independent expenditures.
- Federal committees report to the Federal Election Commission. ORESTAR shows only what they gave or spent in Oregon as the recipient reported it.
- Names, cities, employers, and purpose text are self-reported. Misspellings and duplicates in the filings stay in the data, as reported.
What is not here yet
ORESTAR listed no campaign committee for 9 candidates when the site checked: Ali Beaudoin (Oct 19, 2026), Bruce Broussard (Oct 19, 2026), Kenneth (Kent) R Landgraver III (Oct 19, 2026), Darren McCormick (Oct 19, 2026), John McDonald (Oct 19, 2026), Terry Parker (Oct 19, 2026), Heart Free Pham (Oct 19, 2026), John Sweeney (Oct 19, 2026), Kimberly Tucker (Oct 19, 2026).
Every candidate on the ballot has either a matched ORESTAR committee or a dated search that found none.
Every candidate and measure committee on the ballot has its contributions and expenditures loaded.
New transactions appear on the transactions page and in its feeds and downloads, and the data changelog lists what changed between builds. Error fixes are listed on the corrections page.
Fields in the dataset
transactions.csv and transactions.jsonl have the same columns, listed below, and committees.json lists committees and which of their exports are loaded.
| Field | What it holds | Example |
|---|---|---|
id | The ORESTAR transaction ID. It opens the full public record in ORESTAR, including fields not in these files. | 5824535 |
date | The date the filer reported for the transaction, as YYYY-MM-DD. It is not the date the record became public. | 2026-09-14 |
filerId | The ORESTAR ID of the committee that reported the transaction. | 23365 |
filerName | That committee's name as reported, without the ID that ORESTAR adds in parentheses. | Friends of Mitch Green |
partyName | The contributor on a receipt or the payee on an expenditure, as reported. | Miscellaneous Cash Contributions $100 and under |
partyCommitteeId | The ORESTAR committee ID of the contributor or payee when it is a registered Oregon committee, and empty otherwise. | 25329 |
subType | The type of transaction as the filer reported it. | Cash Contribution |
kind | The broad kind of that type: contribution, expenditure, or other. | contribution |
amount | The amount in dollars, as reported. A negative amount, such as a refund, stays negative. | 250 |
bookType | The ORESTAR Book Type for the contributor or payee, as reported. It can be empty. | Individual |
purposeCodes | The purpose or purposes the filer chose, separated by semicolons. It is empty on most contributions. | Online and Social Media Advertising |
description | The filer's own description of the purpose. It is often empty. | Door hangers |
occupation | The contributor's occupation, as reported. It is often empty. | Teacher |
employer | The contributor's employer, as reported. It is often empty. | Portland Public Schools |
city | The city on the filing. | Portland |
state | The state on the filing, as a two-letter code. | OR |
zip | The first five digits of the ZIP code on the filing. | 97217 |
independent | True when the transaction appears in an export of independent expenditures, and false otherwise. | false |
How totals are built from these rows
- Partial contributor-name searches are not in the files, because they hold only some of each committee's receipts.
- Rows start on Jan 1, 2025 for candidate races and on each measure's start date for measure committees, the same windows the pages use. Earlier rows are not in the files, so a total over these files matches the site.
- Raised excludes the sub type “Loan Received (Non-Exempt).” Spent is “Cash Expenditure” only. Accounts payable, personal expenditures for reimbursement, and loan payments are separate sub types in the file.
- Before you call a filer total complete, check committees.json: a filer whose records of that kind are not in the dataset will look like $0 in a naive sum. On this site that case reads “Not yet available.”
- Independent-expenditure targets are not a column in the export. They come from each transaction's public detail page. The site shows the target text as filed.
Reuse
The underlying filings are public records from ORESTAR. Orestarlight's compiled public dataset (the cleaned, deduplicated, privacy-filtered files on the transactions and data page) is available under the Creative Commons Attribution 4.0 license (CC BY 4.0). A citation that fits most uses is: “Orestarlight public dataset, built from Oregon ORESTAR filings exported on Oct 19, 2026.” Link back to the transactions and data page and note any changes you make.
Updates arrive in batches as new filings are added. There is no live API. Watch the data changelog for what changed between builds, and the coverage list for what is still missing.