Methodology — how we categorize the money

What’s in scope, how every check is sorted, where the numbers come from, and how we check our work. Independent project — not affiliated with the City of Austin.

What this is

An independent, bottom-up ledger built from the City of Austin’s own published checkbook. We start from the checks the city actually cut, sort each one into the city’s own fund types, and show who received the money and whether it traces back to a contract. Every figure links back to a city source so you can verify it yourself.

1 · What’s in scope (the filter)

We deliberately show a slice, and we’re explicit about it:

2 · How we categorize — two independent axes

Every check is tagged on two separate axes, because “where the money came from” and “what it bought” are different questions:

Axis 1 — Fund type & program (“where it came from / where it went”). We map each check’s fund name to the City of Austin’s own governmental fund taxonomy (below), then to a program within that fund (e.g. Live Music Fund, Austin Water). This is normalization — decoding the city’s cryptic fund codes by their stable naming conventions — not a hand-maintained list of projects, so new funds that follow the same naming fall into the right bucket automatically.

Axis 2 — Purpose (“what it bought”). The checkbook’s object/commodity code (e.g. Construction Services, Loan Administration). This is the city’s internal bookkeeping label and is shown as secondary detail — it describes the transaction type, not who benefited.

The fund taxonomy (Axis 1 buckets)

The City’s own governmental fund types. “Approx scale” is a rounded FY2025-26 reference for context ($6.3B all-funds Approved Budget →), not a precise per-fund appropriation.

General Fund · approx ~$1.5B · accountable to City Council (annual budget) · property & sales tax
Day-to-day running of the city, paid from your property & sales taxes.
Enterprise (fee-supported) · approx ~$3.9B · accountable to Ratepayers/users + utility & airport oversight
Self-supporting services paid by user fees — water, energy, airport, trash.
Special Revenue · approx Restricted · accountable to Council, but legally restricted to each fund's purpose
Revenue fenced by law to a purpose — hotel tax, housing trust, PIDs, econ dev.
General Capital (bonds) · approx ~$2.9B · accountable to Voters (bond elections) + Council + bond oversight
Voter-approved bonds & tax-supported construction projects.
Grants (federal/state) · approx Pass-through · accountable to Federal/state grantors + their reporting rules
Federal & state money passed through the city, with strings attached.
Internal Service · approx ~$0.5B · accountable to City departments (billed internally) — traces back to other sources
Central overhead — fleet, IT, supplies — billed to other departments.
Project Connect (transit) · approx ~$7B+ · accountable to Austin Transit Partnership + Council
Dedicated transit tax funding the light-rail program.
Debt Service · approx ~$0.25B+ · accountable to Bondholders/trustees (principal & interest)
Repaying principal & interest on the city's bonds and notes.
To be categorized · approx · accountable to Unknown — needs a human look
A fund name we haven't mapped yet — a check still to review, not hidden money.

Order is load-bearing (first match wins) so real collisions resolve correctly — e.g. a debt fund carries the utility name it repays, so debt is matched before enterprise. The exact rules live in lib/funding.ts (classifyFund and fundSubGroup).

3 · Traceable vs. direct

Within each fund we split the money two ways: traceable (the check names a contract or a delivery order under a master agreement) vs. direct (no source document referenced at all). A large direct payment is the core oversight signal — real money we can’t tie back to a competed contract — so we make that gap visible rather than hiding it.

4 · Recipients

Under each program we roll up the actual recipients (vendors) and how much each received, biggest first. Each links to a per-vendor page showing every check to them in the snapshot, plus deep links to verify at the city’s source.

5 · Coverage & the watch-list

Of the $4,383,235,262 in scope, 100% maps to a named city fund type. Anything we can’t confidently map goes into an explicit “To be categorized” watch-list — it is never hidden or silently dropped. We’d rather show a small unmapped pile than guess.

6 · How we check the numbers (audit process)

Before trusting the numbers we trace real data through the classifier, not just review the code. scripts/audit-categorization.mjs runs every distinct fund name through the same rules and prints fund → bucket → program with dollar totals, flagging anything unmapped. We re-run it whenever the classifier or the data changes. Decision records and the latest audit findings are kept in the project’s docs/ folder.

Sources

Limitations

This is a filtered, dated snapshot of large vendor payments — not the full budget, not real-time, and not an official city product. Fund classification is best-effort normalization of the city’s published fund names; the “traceable” link reflects what each check references in the checkbook, which the city’s own data does not always populate. When in doubt, verify at the sources above.

← Back to the overview