The Lunenburg Budget Project·The database

Lunenburg Budget Project · 3 September 2026

Starting from the school budget, what can it be matched to?

Three levels of the budget down the side, four things to match them to across the top. Each cell says what is true today, and under the dashed rule, what would open it — because “we do not have it” and “nobody could have it” call for completely different responses.

Actual spendIndividual transactionsState fundingRevolving and other funds
Overall school budgetthe department as one number
have it

Department totals exist on both sides. This is the comparison the review document rests on.

dept 300 · $41,350,320 expended of $52,656,432 revised

no

Transaction detail exists for the athletics revolving fund and nothing else.

fund 1301 only · 277 rows

→ could be fetched

Account Detail for the general fund. MUNIS already runs this report — it produced the athletics file. Nothing new has to exist.

total only

The two totals can sit side by side. Which spending the aid paid for cannot be said.

CH 70 AID $6,870,136 · a ratio, not a trace

— nothing would change this

Aid arrives unrestricted into the general fund. No report attributes it, because no ledger records which dollar paid which bill.

total only

Balances and activity are held, but these funds are absent from the ledger we have.

61 funds · 0 shared fund values with the ledger

→ could be fetched

The year-to-date report run for the school’s own funds — 1300 to 1303 and the rest. The one we hold covers the general and enterprise funds only.

By category code2710 Guidance, 2305 Teachers
have it

The one join between the two sides: the budget prints the code, the spreadsheet carries it in the fourth segment.

41 of 45 codes · FY2026 period 12 only

→ could be fetched

Works today for one period. Earlier years arrived as PDFs, which drop the code — a spreadsheet export of the same reports extends it backwards.

no

The athletics journal has no function, object, org or account column. Every row is the same CASH account, so there is nothing to group by.

0 of 19 columns carry a code

→ could be fetched

Account Detail WITH the object code. The June request asked for object-level detail and what arrived had none — worth asking for by name this time.

no

Not one revenue account carries a function code. Aid is not booked to a category, so there is no category to match it to.

0 of 222 revenue accounts

— nothing would change this

The Town would have to book revenue against spending categories, which is not how fund accounting works anywhere.

no

The fund records carry balances and no function code, so no fund can be attributed to a category.

0 fund records carry a code

→ could be fetched

Expenditure detail for each fund, with object codes. The funds do spend against coded accounts; the summary report we hold simply does not show them.

By line itema row per school, as the budget prints it
no

MUNIS cuts account names to ten characters. MS GUIDANC and HS GUIDANC are both 2710 where the budget has a row per school.

no key · names truncated at 10 characters

→ could be fetched

A crosswalk from the district: which account each budget line is built from. They build the budget in a workbook and may well hold this — nobody has asked.

no

Needs a line-level key and general fund transaction detail. Neither exists today.

two gaps, not one

→ could be fetched

Both of the asks above. This cell opens only when they both land, so it is the last one to fall, not the first.

no

Fails twice: aid carries no category, and no line carries an account.

0 revenue accounts coded

— nothing would change this

Blocked by the same thing as the cell above it. A line-level crosswalk would not help, because there is nothing on the aid side to join to.

no

Out of reach from every source at this level.

no key at this level, from anywhere

→ could be fetched

The district crosswalk plus fund detail with object codes. Two documents, both plausible, neither requested.

The shape of it

Nine of the twelve cells could be opened by a document. That is the headline, and it is a much better position than the bare answers suggest — most of what cannot be done today is not a limit of the accounting, it is a report nobody has requested.

Three cannot be opened by anything, and all three are state funding at some level. Aid arrives unrestricted into the general fund; no ledger anywhere records which dollar paid which bill. Asking the Town for it spends goodwill on a question their own system cannot answer either.

Four documents would do nearly all of it:

  1. Account Detail for the general fund, with object codes. Opens transactions at the overall and category levels. MUNIS already runs it — it produced the athletics file — and the June request asked for object-level detail that did not arrive, so name it explicitly.
  2. The year-to-date report for the school’s own funds. Puts the 61 revolving funds into the ledger instead of beside it.
  3. Spreadsheet exports for earlier years. Extends the category join backwards; today it holds for FY2026 period 12 alone because every earlier year came as a PDF.
  4. A crosswalk from the district — which account each budget line is built from. They build the budget in a workbook and may simply have this. Nobody has asked.

The fourth is the interesting one, because it is the only ask on this page directed at the district rather than the Town, and it is the only thing that opens the line-item row at all.

The same question, asked from the other side

The app already carries a completeness table — the same fourteen document types for every fiscal year since 2009, on the data room page. It answers what do we hold. The matrix above answers what does holding it let us say. Put side by side they agree, and where they disagree the disagreement is the useful part.

09101112131415161718192021222324252627have
Budget documents
Proposed budget, line level······11/19
Approved budget, line level······10/19
Prior-year actuals, restated·····12/19
The town’s ledger
Appropriation as voted··················1/19
Q1 spend report (period 3)···················0/19
Q2 spend report (period 6)···················0/19
Q3 spend report (period 9)··················0/19
Year-end position (period 12)··················1/19
Year-end close (period 13)···················0/19
Account Detail, transaction level ⟵ proposed················0/19
Purchase orders closed after close···················0/19
Funding sources
Revenue ledger··················1/19
Revolving and grant fund activity··················1/19
Grant awards listed··············5/19
Independent check
DESE all-funds per pupil, by function··17/19

obtained, spreadsheet   obtained, PDF   partial   · missing

Two additions on this copy, not yet in the app. A fifteenth row for Account Detail, and a distinction between a document that arrived as a spreadsheet and one that arrived as a PDF. Both came out of comparing the two tables, and both change what the completeness figure means.

Where the two views agree

The category join works for FY2026 period 12 and nothing else, and the completeness table shows exactly why: Year-end position (period 12) is obtained for one year out of nineteen. Two tables built from different data, arriving at the same boundary, is a good sign that the boundary is real rather than an artefact of how either was built.

The same holds for the funds. Revolving and grant fund activity is obtained for FY2026 alone, and its own note says what to ask for: glytdbud for the school grant, revolving and school choice funds. That is the second of the four documents above, already written down, already costed as a records request.

Where they disagree, and this is the finding

The completeness table had no row for transaction-level detail, and the copy above adds one. Its ledger group is six rows and all six are glytdbud variants — quarterly spend, year-end position, year-end close, purchase orders. Account Detail, the report that produced the athletics journal and the one the matrix above says would open the most cells, is not tracked at all.

So the two views measure different things and neither was wrong: completeness tracks report-years; the matrix tracks what can be joined, and found the biggest unlock in a report completeness had no row for. Added above, it reads three partial years and no obtained ones — athletics FY2024 to FY2026, and partial rather than obtained because one revolving fund is not the school department.

And completeness counted a PDF the same as a spreadsheet. The matrix cares enormously which: a PDF drops the account code, and the account code is the only join between the district’s budget and the Town’s books. The table above now separates them — a filled dot is a spreadsheet, a ring is a PDF.

Read that way, the ledger group tells a sharper story. Year-end position is obtained once, from town-general-fund-expenditures-fy26-p12.xlsx, and it is a spreadsheet — which is the entire reason the category row of the matrix works at all. The appropriation and revenue rows for the same year are PDF-derived, and neither can be joined to a budget line. Same year, same department, same completeness score, and one of them can answer a question the others cannot.