The money

Fewer children, the same teachers, and +178% paraprofessionals.

Between FY11 and FY25 the state recorded Lunenburg’s in-district enrolment falling −5.7% and its teacher FTE moving +2.7%. Over the same years its paraprofessional FTE went from 24.1 to 67.0. That is one line moving and the rest holding — and nothing in these documents says why.

4.27
paraprofessional FTE per 100 in-district pupils in FY25 — the highest of the 6 districts on DESE’s own comparison sheet
7 years
Lunenburg has had the fewest teachers per pupil of those 6 districts — FY19 to FY25, without a break
+108%
special education paraprofessional spending, FY17–FY25, against +20% for special education teachers over the same years

Three different quantities are on this page, and none of them is “how many people work for the schools”.

  • Names the town printed. 3815 of them, across 15 annual town reports, FY11–FY25. A roster carries no FTE, so a 0.4 music teacher and a full-timer are one name each; no funding source; and no date within the year.
  • FTE the state published. 17 years of it, FY09–FY25, from DESE rather than from the town. This is the only full-time-equivalent count in the archive.
  • Dollars. Net general-fund budget lines. A line is what the town has to raise after state aid, grants, fees and reimbursement have paid theirs — so a line can rise because a grant ended and nothing else changed.

Nothing on this page divides one of them by another. Dollars over FTE looks like a cost per employee and is not one: the numerator leaves out every fund but the general fund, and the denominator counts the staff those funds pay for.

Lunenburg went from the fewest paraprofessionals per pupil to the most

DESE publishes paraprofessional FTE for Lunenburg and for every district on its own comparison sheet. In FY13 Lunenburg reported 0.94 per 100 in-district pupils — the lowest of the 6, and below every one of them. It was last of 6 for 5 straight years, FY11 to FY15. In FY25 it reported 4.27, the highest of the group.

The V is Lunenburg’s alone. No comparison district falls below 1.86 in any year of the series. That rules out a change in how the state counts paraprofessionals, which would have moved every district at once. It does not rule out a change in how Lunenburg reports them.

Lunenburg6 comparison districts
FY09FY11FY13FY15FY17FY19FY21FY23FY250245

Paraprofessional FTE per 100 in-district pupils. Every district on DESE’s own comparison sheet.

Lunenburg, per year

YearPara FTEPer 100 pupilsRankHighest in group
FY0946.42.652 of 6Ashburnham-Westminster 2.66
FY1039.92.324 of 6Groton-Dunstable 2.86
FY1124.11.456 of 6Ayer 3.41
FY1224.11.476 of 6Ayer Shirley School District 3.54
FY1314.80.946 of 6Ayer Shirley School District 3.26
FY1416.21.036 of 6Ayer Shirley School District 3.87
FY1531.01.986 of 6Ayer Shirley School District 4.32
FY1651.03.252 of 6Ayer Shirley School District 3.63
FY1759.53.671 of 6Lunenburg 3.67
FY1851.03.152 of 6Ayer Shirley School District 3.26
FY1953.03.201 of 6Lunenburg 3.20
FY2057.03.451 of 6Lunenburg 3.45
FY2159.53.781 of 6Lunenburg 3.78
FY2255.53.472 of 6Ayer Shirley School District 3.74
FY2359.03.772 of 6Ayer Shirley School District 4.00
FY2466.04.181 of 6Lunenburg 4.18
FY2567.04.271 of 6Lunenburg 4.27

What this does not show

Whether any of this is about children. An FTE count is staff. It is not a count of students with disabilities, of one-to-one assignments, or of hours delivered. Two districts with the same ratio can be doing entirely different things.

Who pays. DESE’s FTE count includes staff paid from grants, circuit breaker reimbursement and revolving funds. The town’s budget lines do not. So the FTE series and the dollar series below are not two views of one number and must not be divided into each other.

That the trough is real. FY13’s 14.8 FTE is what the state published. Whether Lunenburg employed that few paraprofessionals, or classified them somewhere else that year, is not decidable from this sheet.

A possible explanation — nothing here tests it

A district that cuts paraprofessional posts in a hard budget year and rebuilds them afterwards would produce exactly this shape. So would a district that kept the same people and changed which fund or which category they were reported under. So would one whose special education population changed. The three fit the same seventeen numbers equally well, and this series cannot separate them.

What would settle it: DESE’s staffing report broken out by funding source, and the district’s End of Year Financial Report, which separates spending by fund. Both would say whether the rise is posts added or grant-funded posts moving onto the general fund. Neither is currently in this archive.

Enrolment fell. The teaching count did not follow it.

Over the same years the town was printing rosters, in-district enrolment moved −5.7% — from 1663.5 FTE pupils to 1568.9 — while teacher FTE moved +2.7%. Teachers per 100 pupils therefore rose +8.9%, from 6.15 to 6.70.

That still leaves Lunenburg with the fewest teachers per pupil in its group. It has been last of 6 for 7 consecutive years, and the highest district in FY25 reports 8.55 against Lunenburg’s 6.70. A ratio rising and a ratio being low are not in tension: both are true here.

Paraprofessional FTETeacher FTEIn-district pupils
FY10FY11FY12FY13FY14FY15FY16FY17FY18FY19FY21FY23FY2504080120160

All three set to 100 in FY09. One axis on purpose — two scales would let the picture be chosen rather than read.

Lunenburg6 comparison districts
FY09FY11FY13FY15FY17FY19FY21FY23FY2503610

Teacher FTE per 100 in-district pupils. Every district on DESE’s own comparison sheet.

Lunenburg, as the state published it

YearTeacher FTEPara FTEIn-district pupilsTeachers per 100Paras per 100
FY09120.246.41750.06.872.65
FY10120.439.91719.27.002.32
FY11102.324.11663.56.151.45
FY12114.524.11639.56.981.47
FY13103.014.81581.06.510.94
FY14100.616.21565.66.431.03
FY15101.631.01563.36.501.98
FY16104.751.01567.36.683.25
FY17112.159.51619.36.923.67
FY18115.151.01620.57.103.15
FY19110.553.01654.06.683.20
FY20107.457.01651.36.503.45
FY21108.759.51575.56.903.78
FY22111.355.51599.86.963.47
FY23112.859.01566.17.203.77
FY24114.066.01580.57.214.18
FY25105.167.01568.96.704.27

What this does not show

Whether a staffing level was chosen. A district cannot shed a teacher for every departing child: sections, grade spans and required subjects set a floor that has nothing to do with the enrolment total. A ratio moving is the arithmetic of a falling denominator at least as much as it is a decision.

What a teacher is here. DESE’s definition, applied by DESE. It is not the district’s payroll, not the contract’s bargaining unit, and not the roster on the next chart down.

Inside special education, the money went to paraprofessionals, not to teachers

Two panels of five budget lines each, read from the district’s own documents at the actual stage across their whole run, over the 9 years both of them cover. Special education paraprofessional lines moved +108% — from $597,464 to $1,244,894. Special education teacher lines moved +20%, from $1,537,583 to $1,846,499.

Special education paraprofessionalsSpecial education teachers
FY17FY18FY19FY20FY21FY22FY23FY24FY25055110165220

Both series set to 100 in FY17. The dollars themselves are in the table.

Both panels, actual stage, as printed

YearSpecial education paraprofessionalsSpecial education teachers
FY17$597,464$1,537,583
FY18$641,635$1,492,886
FY19$672,872$1,506,433
FY20$879,279$1,617,268
FY21$920,345$1,723,153
FY22$1,021,005$1,777,239
FY23$1,018,072$1,809,200
FY24$1,005,949$1,801,037
FY25$1,244,894$1,846,499

The paraprofessional panel runs from FY14 and the teacher panel from FY17; the comparison above uses only the 9 years both cover. Reading a 12-year percentage against a 9-year one is the like-for-like error wearing a different coat.

What this does not show

That anybody was hired. A budget line is dollars. It is not a post, not a person and not an hour. The line rising and the line paying more for the same people are the same number on the page.

What special education cost. These are net general-fund lines. Circuit breaker reimbursement, IDEA grant money and revolving funds pay for real staff and appear in none of them, so a year where a grant ended looks identical to a year where the district added people.

That the two panels are comparable in kind. They are two sets of five lines from the same workbook, which makes them comparable as budget lines. It does not make a paraprofessional dollar and a teacher dollar the same unit of anything.

Three more staffing lines, for scale

The same treatment for every other staffing panel where a fixed set of lines reports in every year of its run. Each is read at the actual stage; none of them is a headcount.

Special education paraprofessionals+239%

$366,965 in FY14 to $1,244,894 in FY25 · 5 lines · from budget_figure

Special education teachers+20%

$1,537,583 in FY17 to $1,846,499 in FY25 · 5 lines · from sped_teacher_history

Nurses+35%

$201,879 in FY17 to $272,057 in FY25 · 5 lines · from budget_figure · 3 earlier years dropped, because not every line in the panel reports in them

Regular substitutes+28%

$82,262 in FY14 to $105,171 in FY25 · 5 lines · from budget_figure

What the town itself printed — and why it is not a census

Every annual town report carries a faculty and staff roster for each school, by name. 3815 names in all, of which 3651 are in the comparable panel below. It is the only published thing in this archive that touches the standing question of whether budgeted positions were filled.

It cannot be read as a staffing trend, because what got printed changed. Which schools appear varies — there are 3 different combinations across 15 years. Central office is printed in 8 of them and left out of the rest, so it is excluded here entirely: a total that gains a whole page of names in some years and not others is measuring the page, not the payroll.

Names the town printedRange — one school’s roster printed twice
FY11FY12FY13FY14FY15FY16FY17FY18FY19FY20FY21FY22FY23FY24FY25075150225300

School buildings only. Central office and the regional vocational school are excluded — see below for why each.

Every year, and what was printed in it

YearNamesRostersPagesCentral office printedSchools
FY1119446yesLunenburg High School, Passios Elementary School, Lunenburg Primary School, Turkey Hill Elementary School
FY1217734yesLunenburg High School, Lunenburg Primary School, Turkey Hill Elementary School
FY1317235noLunenburg High School, Lunenburg Primary School, Turkey Hill Elementary School
FY1421034yesLunenburg High School, Lunenburg Primary School, Turkey Hill Elementary School
FY1523036yesLunenburg High School, Lunenburg Primary School, Turkey Hill Elementary School
FY1625245yesLunenburg High School, Lunenburg Middle School, Lunenburg Primary School, Turkey Hill Elementary School
FY1727647yesLunenburg High School, Lunenburg Middle School, Lunenburg Primary School, Turkey Hill Elementary School
FY1827746noLunenburg High School, Lunenburg Middle School, Lunenburg Primary School, Turkey Hill Elementary School
FY1925147noLunenburg High School, Lunenburg Middle School, Lunenburg Primary School, Turkey Hill Elementary School
FY2024944noLunenburg High School, Lunenburg Middle School, Lunenburg Primary School, Turkey Hill Elementary School
FY2123345yesLunenburg High School, Lunenburg Middle School, Lunenburg Primary School, Turkey Hill Elementary School
FY2227245yesLunenburg High School, Lunenburg Middle School, Lunenburg Primary School, Turkey Hill Elementary School
FY2326547noLunenburg High School, Lunenburg Middle School, Lunenburg Primary School, Turkey Hill Elementary School
FY24272–27948noLunenburg High School, Lunenburg Middle School, Lunenburg Primary School, Turkey Hill Elementary School
FY2525048noLunenburg High School, Lunenburg Middle School, Lunenburg Primary School, Turkey Hill Elementary School

What this does not show

Full-time equivalence. A roster prints a name and a title. A 0.4 music teacher and a full-timer are one row each, and there is no way to tell them apart. This is the single reason a roster count cannot be compared to the state FTE series above.

Who pays. No roster names a funding source. That is the question that matters most for the budget and it is answered nowhere in these documents.

When. The rosters are undated within the year. Two consecutive reports may be photographs taken at different points in the school year.

Whether a post was vacant. A name is a person the report named. A post held open all year appears nowhere at all, and looks exactly like a post that was never budgeted.

By role, on the panel that stays comparable

The same names, sorted by what the printed title says the person does. The classification is ours — 266 of 3651 names (7.3%) carry a title no rule recognised, and those are counted as unrecognised rather than quietly filed under “other”.

The eight roles with the most names across the whole run. Every panel is on the same vertical scale. The amber bar is FY24, where one school’s roster was printed twice and there is no way to split a role between the two.

Teachers67 → 96

FY11–FY25 · 1357 names in all

Paraprofessionals42 → 52

FY11–FY25 · 721 names in all

Specialists11 → 11

FY11–FY25 · 303 names in all

Administrators10 → 16

FY11–FY25 · 210 names in all

Custodial4 → 11

FY11–FY25 · 185 names in all

Food service5 → 11

FY11–FY25 · 173 names in all

Counsellors9 → 7

FY11–FY25 · 106 names in all

Office staff5 → 3

FY11–FY25 · 77 names in all

Every role category, first printed year to last

RoleNames in FY11Names in FY25Total across the run
Teachers67961357
Paraprofessionals4252721
Specialists1111303
Title not recognised2722266
Administrators1016210
Custodial411185
Food service511173
Counsellors97106
Office staff5377
Nurses4460
Speech3560
Psychologists1337
OT / PT1431
Librarians3323
Social workers0222
Technology2020

What this does not show

That a category rising means more of that job. Custodial and food service staff appear on some schools’ rosters and not others, in ways that change year to year. A category that doubles between two reports may be a category that started being printed.

That a category vanishing means a post was cut. A title the report stopped printing and a post the district stopped filling are the same absence on the page. This is why the names are kept: a person appearing under a new title separates a renamed post from a departure, and nothing else here can.

By school, in the most recent year with no double-printed roster

FY25. Names only — no FTE, no funding source, and 12 people appear on more than one school’s roster that year, which is district-wide staff in the source rather than a duplication in the extract.

Lunenburg Primary School73
Lunenburg High School64
Turkey Hill Elementary School64
Lunenburg Middle School49

What is wrong with this data, stated

Every item below is found by a rule in the generator rather than written down, so the counts move when the extraction improves instead of going quietly stale.

FY24: Turkey Hill Elementary School’s roster is printed twice

Pages 107 and 108 of the FY24 annual town report each carry a complete roster for that school — 61 names on one and 70 on the other, 33 of them on both, with different principals. Nothing on either page says which year it describes. Summing them doubles a school; picking one discards a document. That year is drawn as a range, and the range is the honest answer rather than a caveat under a single bar.

5 printed department headings came back from OCR unreadable

These roster pages are scans and are read by OCR. 39 of the 586 names filed under a heading that names a grade sit under a heading whose grade level cannot be read. The rule is that a heading containing the word grade must have a recognisable ordinal beside it; these do not. Nothing else on this page depends on the grade level, so the effect is that those names have a school and a role and no grade — not that any count is wrong.

As OCR read itNamesYearsSchools
Ith Grade:16FY19, FY21, FY25Lunenburg Middle School
econd Grade Teacher8FY23Lunenburg Primary School
secona Grade5FY12Lunenburg Primary School
8t Grade Teachers5FY15Lunenburg High School
Gth Grade:5FY23Lunenburg Middle School

Two things excluded, and why

  • Monty Tech (regional vocational) — 6 names, printed in 1 of 15 years (FY19). administrators of the regional vocational school Lunenburg sends students to — not Lunenburg staff.
  • Central office — 158 names, printed in 8 of 15 years (FY11, FY12, FY14, FY15, FY16, FY17, FY21, FY22). printed in some annual reports and not others, so including it moves the total in years when nothing changed.

The town publishes gross wages. They cannot be used to count school employees.

3545 rows across 13 years, one per named employee — and only 414 of them carry a department at all, so there is no way to tell a school employee from a highway employee for the rest. Every row is marked no check: the report prints no total, so nothing in the extraction can be reconciled against the document. It is a real dataset and it answers a different question.

Where every figure on this page comes from

The state’s FTE and enrolment

17 years, FY09–FY25, LEA 01620000, 7 districts. Every measure reconciles against DESE’s own printed totals (161 yes).

sources/state-dese/radar-district-comparison.xlsx

The rosters

3815 names read page by page out of 15 annual town reports. There is no total printed on a roster, so the check is line accounting — every non-blank line on a page claimed as an entry or a heading.

PROVENANCE-staff-rosters.md carries the per-page ledger.

The dollars

4 panels, actual stage throughout. Each panel is a fixed set of lines reporting in every year of its run, so a sum across years measures the lines and not the coverage.

This page’s own data file

Everything above is read at build time from sources/data/lunenburg.db — staff_roster_entries, role_classification, dese_measure, budget_figure, report_gross_wages by scripts/build_staffing_charts.py and served as one static file. Nothing is typed into a sentence.

/data/school-staffing.json

The one number nobody publishes

Which fund pays which post. The town publishes names without FTE or funding; the state publishes FTE without funding; the budget publishes dollars net of every fund but one. Any question of the form “did the town take on staff a grant used to pay for” needs all three joined, and no document in this archive joins them.

What changed

Version 12 — updated September 7, 2026