The Lunenburg Budget Project·The money →
Lunenburg Budget Project · Data architecture

School Money Flow

How money reaches the schools

FY2026, from every source the town budgets to the 258 accounts the school department spends from — and the one connection in the middle that cannot be drawn, because no record ties a source to a department.

The school budget
$26,287,474
Departments 300 and 301, as Town Meeting voted. Headlines usually quote $26,247,474 — department 300 alone.
Additional revenue
+$1,553,151
Received into the schools’ own funds through 31 March — fees, lunch, gifts, reimbursement. Revenue, whether or not it was spent.
Spent from the budget
$25,613,679
Department 300 through period 12, leaving $673,795 of the appropriation unspent.
Spent from those funds
$1,736,376
Through 31 March. $183,225 more than came in — the funds drew their balances down.
Total spent
$27,350,055
The two spending figures above, and nothing else: $25,613,679 + $1,736,376.
Held, unspent
$1,592,256
Sitting in the schools’ own funds at 31 March, $615,301 of it in the circuit breaker. A balance built up across years, not this year’s leftover.
MONEY IN WHERE IT POOLS MONEY OUT — each dollar once GENERAL FUND 0100$52,187,832 $29,110,331 of it is appropriated to education. The other 63 departments are not drawn on this page. Every source on the left loses its identity here. No record ties a source to a department, so no line crosses this box. Property tax levy$35,111,996into the general fund State aid — Chapter 70 and the rest$11,153,368into the general fund Local receipts$3,335,624into the general fund One-time money$2,209,993into the general fund Transfers in$376,851into the general fund Federal and state grants$495,918spent side only — no FY26 revenue booked Bus fees — chargednot found$180 / $270, policy 3601.01 2200 School Lunch Revolving$572,231spent $739,586 · held $287,771 2640 Special Ed Circuit Breaker$325,970spent $4,005 · held $615,301 1312 Extended Day Revolving Fund$192,943spent $233,350 · held $54,161 1301 Chapter 658 Revolving Fund$160,164spent $100,467 · held $169,945 1305 After School Activities Fund$111,376spent $95,196 · held $148,578 1308 School Choice Revolving$83,116spent $30,558 · held $299,461 2672 Fy26 Family & Community 237$48,558spent $13,372 · held $35,186 1311 School Gift Fund$22,486spent $2,911 · held $109,398 1306 School Facilities Use Revolv$18,670spent $12,354 · held $71,559 2681 Comp School Health Serv$10,775spent $5,120 · held $5,655 1302 Adult Education Revolving$4,000spent $2,880 · held $12,744 1300 Lost Books/Tech Rev Fund$2,860spent $661 · held $16,665 THE SCHOOL BUDGET$26,247,474department 300, as voted Monty Tech assessment$1,334,521a different district School retiree health$1,521,536former school employees Pension — share unknown$2,392,572town AND school staff together School resource stipend$6,800inside the police department Grant funds spent$495,918balances are NEGATIVE — spent ahead of reimbursement Bus fee spendingnot foundno account found School Lunch Revolving spent$739,586in $572,231 · held $287,771 ↓ Special Ed Circuit Breaker spent$4,005in $325,970 · held $615,301 ↑ Extended Day Revolving Fund spent$233,350in $192,943 · held $54,161 ↓ Chapter 658 Revolving Fund spent$100,467in $160,164 · held $169,945 ↑ After School Activities Fund spent$95,196in $111,376 · held $148,578 ↑ School Choice Revolving spent$30,558in $83,116 · held $299,461 ↑ Fy26 Family & Community 237 spent$13,372in $48,558 · held $35,186 ↑ School Gift Fund spent$2,911in $22,486 · held $109,398 ↑ School Facilities Use Revolv spent$12,354in $18,670 · held $71,559 ↑ Comp School Health Serv spent$5,120in $10,775 · held $5,655 ↑ Adult Education Revolving spent$2,880in $4,000 · held $12,744 ↑ Lost Books/Tech Rev Fund spent$661in $2,860 · held $16,665 ↑
tracedthe fund spent it — purpose presumed, never observedcollected, cannot be located

$495,918 of that fund spending came from grant funds that booked NO revenue at all this year. Money that arrived in an earlier year, or arrived without being recorded — the budget documents do not distinguish those, and neither can we. It is not FY26 income and is not in the revenue figure above; it used to be, which made additional revenue look $2,049,069.

Why $26,287,474 plus $1,553,151 is not $27,350,055

The first three cards are three different KINDS of quantity — a permission, an inflow, an outflow — so the difference between them is not an error. It is money not spent, and it is two separate things.

The school budget$26,287,474
+ additional revenue$1,553,151
= everything available$27,840,625
− what was actually spent$27,350,055
= not spent$490,569

Which splits in two:

Appropriation not spent
Voted and not used. $236,784 of it is already committed by purchase order, so it is spoken for rather than spare.
$673,795
Fund money not spent this year
The funds took in $1,553,151 and spent $1,736,376 — so this is NEGATIVE. They spent balances built up in earlier years.
$-183,225

This is NOT the $1,592,256 in the fourth card. That figure is what the funds HOLD — a balance built up across years, most of it put there before FY26. This is one year's flow. A balance and a flow are different quantities and they are not expected to agree.

And the bases are mixed, which cannot be helped. The appropriation side is actual spending through period 12; the fund side is through period 9, because the town publishes no twelve-month fund report. Three more months of fund spending are missing from every figure above, so "not spent" is an upper bound.

And the town spends on schools outside all four figures. $1,528,336 of retiree health and a resource stipend sits in other departments’ appropriations, plus an unknown share of the $2,392,572 pension. Monty Tech is excluded throughout: it is a different district.

Mixed bases, and it cannot be helped. Department 300 is actual spending through period 12; the funds are actual through period 9, because the town publishes no twelve-month fund report. So the middle figure is a floor — three more months of fund spending are not in it, and neither is any part of the pension.

Do not add the right-hand column and call it school spending. It comes to $33,276,289 and that figure means nothing: the school budget box is a BUDGET rather than spending, Monty Tech is a different district, and the pension box is the whole town’s. The column adds because each dollar is drawn once — that is a property of the drawing, not a finding about the schools.

The two columns do not balance, and that is the point

Revenue is not spending. A fund is a tank, not a pipe: it can spend less than it receives and accumulate, or more than it receives and draw a balance down. Reading across a row tells you what a fund took in and what it paid out — it does not tell you those are the same money.

Across all the schools’ own funds in FY2026 to 31 March:

money in$1,553,151
money out$1,736,376
net-183,225
opening balance derived from the fund identity; the town’s report does not print it$1,775,481
held at 31 March$1,592,256

The funds collectively spent $183,225 more than they took in. That money is real and it came from balances built in earlier years. A diagram that balanced would be hiding it.

School lunch is the clearest single case — in $572,231, out $739,586, holding $287,771. The program is solvent this year and has a smaller cushion next year, and neither the appropriation nor the “spent” figure shows that.

What a fund box on the right does NOT say

Only that the fund spent the money. Not what it bought. There is no expense report for the special revenue funds, and fund 1301 — the one fund with a transaction journal — records no vendor on any of its 46 FY26 payments. So “Athletics fund spent” means money left that fund. That it went to athletics is the statute talking, not the ledger.

No offset edges are drawn. The district publishes three amounts (Extended Day $71,247, Facilities $25,000, Athletic $20,000) and none for lunch, school choice, the circuit breaker or the grants. Drawing an edge only where an amount happens to be published would imply the others have no offset, which is a stronger claim than we can make.

The program view — a different lens

What each program costs across both sides. These figures overlap the diagram above and must never be added to it — most of each row is already inside the school budget box.

programin the budgetfrom fundstotal
Special education$5,909,548$420,133$6,329,681
Transportation$1,531,234not found$1,531,234
Athletics$518,334$100,467$618,801
Food service$739,586$739,586
Extended day and after school$340,899$340,899

Athletics is the case to read. The town appropriates $518,334 and the district’s own athletics documents record a further $146,911 spent through the revolving fund (it took in $188,944 — two different quantities, never one). And the district’s FY26 budget overview says why the line moves: it was cut “with anticipation that athletic revolving may be enough to offset this reduction in the budget line” — and the next year, “athletic revolving can not support these increased costs”, at a 254% line increase.

Where this page comes from

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 23 were traced that way.

documentfeedshow we knowsha256
Athletics_v10.xlsx (citizen analysis, unpublished)athletics_historytracednot on disk
budget-workbooks/fy27-proposals.xlsxathletics_historytracednot on disk
budget-workbooks/school-funds-fy26.xlsxathletics_historytracednot on disk
district-budget/docs/fy19-proposed-athletics-budget.pdfathletics_historytracednot on disk
fy24-approved-budget.txtathletics_historytracednot on disk
fy27-budget-projections-as-of-2-24-26-with-restorations.txtathletics_historytracednot on disk
fy27-budget-projections-as-of-3-16-26-with-restorations.txtathletics_historytracednot on disk
data/money-assumptions.csvread directly by the scripttraced620c2b74ce21d327…
data/money-classification.csvread directly by the scripttraced2ece30bf2f0347a9…
data/money-edges.csvread directly by the scripttraced0b05cefe4369e8d6…
data/money-gaps.csvread directly by the scripttraced730e24a9b811a365…
town-ledgers/expenses/glytdbud-expense-fy2026-p09-ef-peg-access.txtaccount, fund, ledger_snapshottraced6e2ada913f7457f2…
town-ledgers/expenses/glytdbud-expense-fy2026-p09-ef-sewer.txtaccount, fund, ledger_snapshottracedf67d785fd5ba15dc…
town-ledgers/expenses/glytdbud-expense-fy2026-p09-ef-solid-waste.txtaccount, fund, ledger_snapshottracedbe236a99caa7e8cb…
town-ledgers/expenses/glytdbud-expense-fy2026-p09-ef-water.txtaccount, fund, ledger_snapshottraced58fa38d6d654d647…
town-ledgers/expenses/glytdbud-expense-fy2026-p09-gf-all.txtaccount, fund, ledger_snapshottraced449853bc842b2494…
town-ledgers/expenses/glytdbud-expense-fy2026-p12-gf-all.xlsxaccount, fund, ledger_snapshottraced215dd64f597f1f2d…
town-ledgers/fund-balances/special-revenue-fy2026-p09.xlsxfund_activitytraced4b9777d83c747c1c…
town-ledgers/revenue/glytdbud-revenue-fy2026-p09-ef-peg-access.txtaccount, fund, ledger_snapshottraced668868e19fc24fa6…
town-ledgers/revenue/glytdbud-revenue-fy2026-p09-ef-sewer.txtaccount, fund, ledger_snapshottracedccaa743215e8fea4…
town-ledgers/revenue/glytdbud-revenue-fy2026-p09-ef-solid-waste.txtaccount, fund, ledger_snapshottraced78a0f82a9b06f54a…
town-ledgers/revenue/glytdbud-revenue-fy2026-p09-ef-water.txtaccount, fund, ledger_snapshottracedf4647f445bf824ec…
town-ledgers/revenue/glytdbud-revenue-fy2026-p09-gf-all.txtaccount, fund, ledger_snapshottraced7e0f22acb4934c57…

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_money_flow.py from sources/data/lunenburg.db. Every figure is computed; --check fails if this file stops reproducing. Companion to money-in.html, kept unchanged beside it.