The whole town — every dollar in, every dollar out
FY2026. The same model built for the schools, applied to all of Lunenburg: who sets each dollar coming in, who decides how it goes out, and what is sitting still.
Every one of the 67 departments and every one of the 21 active funds has its own box. That is why the diagram is tall — it is the honest shape of a town with that many of each, and a shorter picture would be a shorter picture of something else.
School money is orange, everywhere. That is the point of the town view: once anything is combined you can no longer see what goes to the school and what does not. Scroll the right column and the schools are visible as a colour rather than as a number you have to trust.
Every special revenue fund the town has is a school fund, so the entire lower half of both columns is orange. The general fund half is where the town’s other 64 departments live.
Not quite, and the difference matters. It is classified, not itemised. Each box on the left is a group: the five general-fund classes stand for 79 revenue accounts that carry money, and 113 more that carry none. On the right, ten departments are named and 57 are collapsed into one box. Inside each department are the 635 accounts the ledger actually holds.
So the honest claim is: every dollar the town’s ledger records is on this page somewhere, at the grain a page can hold. What it is not is a list you could audit a cheque against.
And eight things are not on it at all, because the town’s records cannot answer them. They are drawn at the foot of each column, at the same size as everything else, so the picture does not read as complete when it is not. Four are money coming in that cannot be seen; four are spending that cannot be split. Every one of them is a real quantity — none is a rounding difference or a missing file.
The largest single unknown is the school share of the pension. The largest lumped one is debt service: two accounts for all town borrowing, with school buildings inside and no way to separate them.
The single box marked “Special revenue funds — $1,553,151” on the left is not a town-wide category with a school share inside it. It is entirely school money. Twelve funds carry revenue in FY2026 — school lunch, the special education circuit breaker, extended day, Chapter 658 athletics, after school, school choice, family and community engagement, the school gift fund, facilities use, comprehensive school health, adult education, and lost books — and no other town department runs one at all.
Which is why the school page itemises these and this page does not: same money, finer grain, and the school page is where the grain belongs. The one thing this page does not carry that the school page does is the grant funds’ spending — nine funds that spent money in FY2026 while booking no revenue, so a revenue-side box cannot show them. They appear here only in the gaps.
The diagram carries these as one box on each side because there are 21 of them and a box each would swamp the picture. Nothing is excluded from the totals — every fund below is inside the $1,736,376, and each of these is school money.
| fund | in | spent | held 31 Mar | |
|---|---|---|---|---|
2200 | School Lunch Revolving | $572,231 | $739,586 | $287,771 |
1312 | Extended Day Revolving Fund | $192,943 | $233,350 | $54,161 |
2813 | Fy25 #240 | $0 | $229,398 | $-88,503 |
2814 | Fy26 #240 | $0 | $179,637 | $-179,637 |
1301 | Chapter 658 Revolving Fund | $160,164 | $100,467 | $169,945 |
1305 | After School Activities Fund | $111,376 | $95,196 | $148,578 |
2778 | Fy25 117 Soa Evidence Base | $0 | $68,647 | $-91,220 |
1308 | School Choice Revolving | $83,116 | $30,558 | $299,461 |
2672 | Fy26 Family & Community 237 | $48,558 | $13,372 | $35,186 |
1306 | School Facilities Use Revolv | $18,670 | $12,354 | $71,559 |
2832 | Fy25 #274 0205202509302025 | $0 | $5,427 | $0 |
2681 | Comp School Health Serv Grant | $10,775 | $5,120 | $5,655 |
2640 | Special Ed Circuit Breaker | $325,970 | $4,005 | $615,301 |
2690 | Fy26 #309 Title Iv Part A | $0 | $3,240 | $-3,240 |
2728 | Fy24 Title 11 Part A #140 | $0 | $3,217 | $5,108 |
1311 | School Gift Fund | $22,486 | $2,911 | $109,398 |
1302 | Adult Education Revolving Fund | $4,000 | $2,880 | $12,744 |
2622 | Fy25 Family & Community | $0 | $2,477 | $70,800 |
2800 | Fy25 140 080524093026 | $0 | $2,208 | $0 |
2758 | Fy23 240 | $0 | $1,666 | $-8,167 |
1300 | Lost Books/Tech Rev Fund | $2,860 | $661 | $16,665 |
| total | $1,553,151 | $1,736,376 | $1,592,572 |
School choice, for example, took in $83,116, spent $30,558 and holds $299,461 — all three inside the single box on the diagram.
This is the thing the school view cannot show, because the schools live in only two of them.
| system | in | out | can a dollar be followed? |
|---|---|---|---|
| General fund67 departments, one pot | $52,187,832 | $51,189,961 | No. Every source lands in fund 0100 and loses its identity. This is 92% of the money and the only system with this problem |
| Enterprise fundssewer, water, PEG, solid waste | $3,117,265 | $2,117,267 | Yes. Rate-funded and self-contained: the people who pay are the people served, and the accounts are separate end to end |
| Special revenue funds61 of them, and every one that carries money is a school fund | $1,553,151 | $1,736,376 | Half. The source is known exactly, the use is not observed at all — no expense report exists for them |
| Trust fundsscholarships, cemetery, stabilisation | — | — | Not held. The annual-report extract is check failed on ordinal columns and cannot be aggregated |
The asymmetry is the finding. The system nobody argues about — the enterprise funds — is fully traceable, because it is rate-funded and ring-fenced. The system every Town Meeting argues about is the one where no dollar can be followed from where it came from to what it bought. That is not an accident of record-keeping; it is what a general fund IS.
The two columns do not balance, and should not. Money in is $56,858,248 and money out is $55,043,604. A fund is a tank, not a pipe: the special revenue funds alone spent $183,225 more than they took in, drawing down balances built in earlier years. And the bases are mixed — the general fund and enterprise figures are budgets as voted, the special revenue funds are nine months of actual, because the town publishes no twelve-month fund report.
Reproduced from school-money-flow.html unchanged, so the two can be read against each other. The school system is one of the four above and lives in two of them: the general fund appropriation, and the special revenue funds it runs itself.
Every document behind the figures above. This list is recorded while the page is built — SQLite reports each table the render actually reads, and the documents come off doc_id on the rows themselves, so it cannot drift away from what the page does.
All 16 were traced that way.
| document | feeds | how we know | sha256 |
|---|---|---|---|
| data/money-assumptions.csv | read directly by the script | traced | 620c2b74ce21d327… |
| data/money-classification.csv | read directly by the script | traced | 2ece30bf2f0347a9… |
| data/money-edges.csv | read directly by the script | traced | 0b05cefe4369e8d6… |
| data/money-gaps.csv | read directly by the script | traced | 730e24a9b811a365… |
| town-ledgers/expenses/glytdbud-expense-fy2026-p09-ef-peg-access.txt | account, fund, ledger_snapshot | traced | 6e2ada913f7457f2… |
| town-ledgers/expenses/glytdbud-expense-fy2026-p09-ef-sewer.txt | account, fund, ledger_snapshot | traced | f67d785fd5ba15dc… |
| town-ledgers/expenses/glytdbud-expense-fy2026-p09-ef-solid-waste.txt | account, fund, ledger_snapshot | traced | be236a99caa7e8cb… |
| town-ledgers/expenses/glytdbud-expense-fy2026-p09-ef-water.txt | account, fund, ledger_snapshot | traced | 58fa38d6d654d647… |
| town-ledgers/expenses/glytdbud-expense-fy2026-p09-gf-all.txt | account, fund, ledger_snapshot | traced | 449853bc842b2494… |
| town-ledgers/expenses/glytdbud-expense-fy2026-p12-gf-all.xlsx | account, fund, ledger_snapshot | traced | 215dd64f597f1f2d… |
| town-ledgers/fund-balances/special-revenue-fy2026-p09.xlsx | fund_activity | traced | 4b9777d83c747c1c… |
| town-ledgers/revenue/glytdbud-revenue-fy2026-p09-ef-peg-access.txt | account, fund, ledger_snapshot | traced | 668868e19fc24fa6… |
| town-ledgers/revenue/glytdbud-revenue-fy2026-p09-ef-sewer.txt | account, fund, ledger_snapshot | traced | ccaa743215e8fea4… |
| town-ledgers/revenue/glytdbud-revenue-fy2026-p09-ef-solid-waste.txt | account, fund, ledger_snapshot | traced | 78a0f82a9b06f54a… |
| town-ledgers/revenue/glytdbud-revenue-fy2026-p09-ef-water.txt | account, fund, ledger_snapshot | traced | f4647f445bf824ec… |
| town-ledgers/revenue/glytdbud-revenue-fy2026-p09-gf-all.txt | account, fund, ledger_snapshot | traced | 7e0f22acb4934c57… |
Addresses resolve on the published site; the archive is also mirrored on GitHub. A sha256 is here because a file can be replaced at the same URL — see rule 12.
Generated by scripts/build_town_flow.py from
sources/data/lunenburg.db. Every figure is computed; --check
fails if this file stops reproducing.