{
 "about": "How the town’s boards are made up — which are biggest, how fast each turns over, and whether the establishment is growing.",
 "body_churn": [
  {
   "changes": 15,
   "churn": 71.4,
   "pairs": 3,
   "post": "GCTF ADVISORS",
   "seats": 3.5
  },
  {
   "changes": 32,
   "churn": 66.7,
   "pairs": 3,
   "post": "MONTACHUSETT REGIONAL VOCATIONAL TECHNICAL SCHOOL REPRESENTATIVE",
   "seats": 8.0
  },
  {
   "changes": 38,
   "churn": 63.3,
   "pairs": 9,
   "post": "STORM WATER TASK FORCE",
   "seats": 3.3
  },
  {
   "changes": 13,
   "churn": 56.5,
   "pairs": 3,
   "post": "AMERICANS WITH DISABILITIES COMMITTEE",
   "seats": 3.8
  },
  {
   "changes": 18,
   "churn": 56.2,
   "pairs": 4,
   "post": "ECONOMIC DEVELOPMENT COMMITTEE",
   "seats": 4.0
  },
  {
   "changes": 12,
   "churn": 54.5,
   "pairs": 3,
   "post": "GREEN COMMUNITIES COMMITTEE",
   "seats": 3.7
  },
  {
   "changes": 69,
   "churn": 48.9,
   "pairs": 8,
   "post": "PUBLIC RECORDS ACCESS OFFICERS",
   "seats": 8.8
  },
  {
   "changes": 10,
   "churn": 45.5,
   "pairs": 2,
   "post": "LUNENBURG MUNICIPAL BUILDING DESIGN COMMITTEE",
   "seats": 5.5
  },
  {
   "changes": 31,
   "churn": 42.5,
   "pairs": 9,
   "post": "HISTORICAL COMMISSION",
   "seats": 4.1
  },
  {
   "changes": 35,
   "churn": 40.2,
   "pairs": 8,
   "post": "Sewer Commission - 1/2",
   "seats": 5.4
  },
  {
   "changes": 13,
   "churn": 39.4,
   "pairs": 4,
   "post": "Park Commission",
   "seats": 4.1
  },
  {
   "changes": 43,
   "churn": 38.7,
   "pairs": 9,
   "post": "CAPITAL PLANNING COMMITTEE",
   "seats": 6.2
  },
  {
   "changes": 14,
   "churn": 36.8,
   "pairs": 4,
   "post": "TAXATION AID COMMITTEE",
   "seats": 4.8
  },
  {
   "changes": 37,
   "churn": 36.6,
   "pairs": 9,
   "post": "AGRICULTURAL COMMISSION",
   "seats": 5.6
  },
  {
   "changes": 31,
   "churn": 35.6,
   "pairs": 6,
   "post": "FINANCE COMMITTEE",
   "seats": 7.2
  },
  {
   "changes": 32,
   "churn": 34.8,
   "pairs": 8,
   "post": "Planning Board",
   "seats": 5.8
  },
  {
   "changes": 31,
   "churn": 34.8,
   "pairs": 8,
   "post": "PERSONNEL COMMITTEE",
   "seats": 5.6
  },
  {
   "changes": 10,
   "churn": 33.3,
   "pairs": 3,
   "post": "Board of Selectmen",
   "seats": 5.0
  },
  {
   "changes": 26,
   "churn": 31.7,
   "pairs": 8,
   "post": "School Committee",
   "seats": 5.1
  },
  {
   "changes": 21,
   "churn": 30.4,
   "pairs": 8,
   "post": "Housing Authority",
   "seats": 4.3
  },
  {
   "changes": 35,
   "churn": 30.4,
   "pairs": 7,
   "post": "CULTURAL COUNCIL",
   "seats": 8.2
  },
  {
   "changes": 10,
   "churn": 27.8,
   "pairs": 2,
   "post": "CHARTER REVIEW COMMITTEE",
   "seats": 9.0
  },
  {
   "changes": 8,
   "churn": 26.7,
   "pairs": 3,
   "post": "Parks Commission",
   "seats": 5.0
  },
  {
   "changes": 13,
   "churn": 24.5,
   "pairs": 8,
   "post": "Cemetery Commission",
   "seats": 3.3
  },
  {
   "changes": 10,
   "churn": 23.8,
   "pairs": 4,
   "post": "Select Board",
   "seats": 5.2
  },
  {
   "changes": 30,
   "churn": 23.4,
   "pairs": 9,
   "post": "CONSERVATION COMMISSION",
   "seats": 7.1
  },
  {
   "changes": 10,
   "churn": 20.0,
   "pairs": 8,
   "post": "Board of Assessors",
   "seats": 3.1
  },
  {
   "changes": 16,
   "churn": 19.0,
   "pairs": 8,
   "post": "Board of Health",
   "seats": 5.2
  },
  {
   "changes": 22,
   "churn": 19.0,
   "pairs": 8,
   "post": "Library Trustees",
   "seats": 7.2
  },
  {
   "changes": 15,
   "churn": 17.6,
   "pairs": 9,
   "post": "PUBLIC ACCESS CABLE COMMITTEE",
   "seats": 4.7
  },
  {
   "changes": 8,
   "churn": 17.4,
   "pairs": 2,
   "post": "COUNCIL ON AGING- - (11 members)",
   "seats": 11.5
  },
  {
   "changes": 17,
   "churn": 17.2,
   "pairs": 7,
   "post": "ARCHITECTURAL PRESERVATION DISTRICT COMMISSION (APDC)",
   "seats": 7.1
  },
  {
   "changes": 17,
   "churn": 15.0,
   "pairs": 5,
   "post": "COUNCIL ON AGING",
   "seats": 11.3
  },
  {
   "changes": 13,
   "churn": 14.6,
   "pairs": 9,
   "post": "ZONING BOARD OF APPEALS",
   "seats": 4.9
  },
  {
   "changes": 3,
   "churn": 12.0,
   "pairs": 2,
   "post": "TOWN CLOCK WINDERS",
   "seats": 6.2
  },
  {
   "changes": 6,
   "churn": 11.1,
   "pairs": 5,
   "post": "TOWN CLOCKWINDERS",
   "seats": 5.4
  },
  {
   "changes": 0,
   "churn": 0.0,
   "pairs": 2,
   "post": "CABLE ADVISORY COMMITTEE",
   "seats": 3.0
  }
 ],
 "checks": {
  "check failed": 299,
  "checked": 492,
  "no check": 1368
 },
 "churn": [
  {
   "arrived": 57,
   "fy": "2017",
   "left": 75,
   "stayed": 145
  },
  {
   "arrived": 48,
   "fy": "2018",
   "left": 44,
   "stayed": 158
  },
  {
   "arrived": 51,
   "fy": "2019",
   "left": 43,
   "stayed": 163
  },
  {
   "arrived": 87,
   "fy": "2020",
   "left": 99,
   "stayed": 115
  },
  {
   "arrived": 58,
   "fy": "2021",
   "left": 58,
   "stayed": 144
  },
  {
   "arrived": 67,
   "fy": "2022",
   "left": 81,
   "stayed": 121
  },
  {
   "arrived": 52,
   "fy": "2023",
   "left": 56,
   "stayed": 132
  },
  {
   "arrived": 56,
   "fy": "2024",
   "left": 69,
   "stayed": 115
  },
  {
   "arrived": 67,
   "fy": "2025",
   "left": 65,
   "stayed": 106
  }
 ],
 "conclusions": [
  {
   "basis": "Seats stated in each body’s own heading against the names printed beneath it, over bodies whose membership is a number rather than a range.",
   "bearing": "lever",
   "claim": "The boards are getting harder to fill: full six years ago, short today",
   "detail": "A charter fixes how many seats a board has. Whether anybody is in them is the part that moves. Across the 22 bodies that state a plain membership, 101 names are printed against 116 chartered seats in FY2025 — 87%. Six years earlier the same measure ran at 107%, with more names printed than seats because mid-year replacements are listed beside the people they replaced.",
   "figure": "now",
   "figures": {
    "bodies": {
     "text": "22",
     "unit": "bodies stating a plain size",
     "value": 22
    },
    "names": {
     "text": "101",
     "unit": "names printed",
     "value": 101
    },
    "now": {
     "text": "87%",
     "unit": "of chartered seats filled now",
     "value": 87.1
    },
    "seats": {
     "text": "116",
     "unit": "chartered seats",
     "value": 116
    },
    "then": {
     "text": "107%",
     "unit": "filled six years earlier",
     "value": 107.2
    }
   },
   "id": "harder-to-fill",
   "kind": "measured",
   "literals": [
    "FY2025"
   ],
   "not_shown": "Whether a seat was filled later in the year. The listing is a snapshot taken once.",
   "see": [],
   "so_what": "Empty chairs are the constraint on what the boards can do, not the seat count."
  },
  {
   "basis": "Names matched between consecutive years of the listing, per body, over bodies appearing in both years of at least two pairs.",
   "bearing": "sizes",
   "claim": "Some boards replace half their seats a year while others barely change",
   "detail": "The town-wide turnover figure hides a wide spread: the churn is not shared evenly across the boards. Across 37 boards of three seats or more, the median is 32% of seats changing hands a year. GCTF ADVISORS runs highest at 71%; CABLE ADVISORY COMMITTEE is among the steadiest at 0%.",
   "figure": "med",
   "figures": {
    "hi": {
     "text": "71%",
     "unit": "at the top",
     "value": 71.4
    },
    "lo": {
     "text": "0%",
     "unit": "at the bottom",
     "value": 0.0
    },
    "med": {
     "text": "32%",
     "unit": "of seats changing hands a year, the median board",
     "value": 31.7
    },
    "n": {
     "text": "37",
     "unit": "boards",
     "value": 37
    }
   },
   "id": "churn-is-uneven",
   "kind": "measured",
   "literals": [],
   "not_shown": "Why any board turns over faster. A board people leave and a board whose terms are short look identical here.",
   "see": [],
   "so_what": "A seat is far easier to get on some boards than on others."
  },
  {
   "basis": "Distinct names against rows in the FY2025 listing.",
   "bearing": "sizes",
   "claim": "It is not a small group wearing many hats — almost everyone holds one seat",
   "detail": "A common assumption about small-town boards, and this listing does not support it. 60 distinct people hold the 182 posts listed in FY2025. 9 of them hold more than one, and none holds more than two.",
   "figure": "people",
   "figures": {
    "multi": {
     "text": "9",
     "unit": "holding more than one",
     "value": 9
    },
    "people": {
     "text": "60",
     "unit": "distinct people",
     "value": 60
    },
    "posts": {
     "text": "182",
     "unit": "posts listed",
     "value": 182
    }
   },
   "id": "not-a-clique",
   "kind": "measured",
   "literals": [
    "FY2025"
   ],
   "not_shown": "Anything about influence. Holding one seat and holding two says nothing about what either person decides.",
   "see": [],
   "so_what": "The work is spread across many residents rather than concentrated in a few."
  }
 ],
 "counts": [
  {
   "appointed board seat": 69,
   "elected board seat": 57,
   "fy": "2016"
  },
  {
   "appointed board seat": 72,
   "elected board seat": 58,
   "fy": "2017"
  },
  {
   "appointed board seat": 72,
   "elected board seat": 56,
   "fy": "2018"
  },
  {
   "appointed board seat": 79,
   "elected board seat": 53,
   "fy": "2019"
  },
  {
   "appointed board seat": 103,
   "elected board seat": 59,
   "fy": "2020"
  },
  {
   "appointed board seat": 106,
   "elected board seat": 56,
   "fy": "2021"
  },
  {
   "appointed board seat": 86,
   "elected board seat": 53,
   "fy": "2022"
  },
  {
   "appointed board seat": 92,
   "elected board seat": 56,
   "fy": "2023"
  },
  {
   "appointed board seat": 79,
   "elected board seat": 51,
   "fy": "2024"
  },
  {
   "appointed board seat": 79,
   "elected board seat": 53,
   "fy": "2025"
  }
 ],
 "ever": 703,
 "fill": [
  {
   "bodies": 26,
   "filled": 148,
   "fy": "2020",
   "pct": 107.2,
   "seats": 138
  },
  {
   "bodies": 23,
   "filled": 118,
   "fy": "2021",
   "pct": 102.6,
   "seats": 115
  },
  {
   "bodies": 19,
   "filled": 95,
   "fy": "2022",
   "pct": 102.2,
   "seats": 93
  },
  {
   "bodies": 20,
   "filled": 103,
   "fy": "2023",
   "pct": 105.1,
   "seats": 98
  },
  {
   "bodies": 21,
   "filled": 103,
   "fy": "2024",
   "pct": 92.8,
   "seats": 111
  },
  {
   "bodies": 22,
   "filled": 101,
   "fy": "2025",
   "pct": 87.1,
   "seats": 116
  }
 ],
 "generated_by": "scripts/build_board_composition.py",
 "grain": "SEATS IN THE LISTING. One row is one named holder of one seat in one year. Not employees: a post somebody is hired into is on the town personnel report instead.",
 "last": "2025",
 "multi": [
  {
   "person": "Ana Lockwood",
   "posts": 2
  },
  {
   "person": "Anthony Sculimbrene",
   "posts": 2
  },
  {
   "person": "David Blatt",
   "posts": 2
  },
  {
   "person": "Glenn McLeod",
   "posts": 2
  },
  {
   "person": "Jennifer Sanderson",
   "posts": 2
  },
  {
   "person": "Jennifer Warren-Dyment",
   "posts": 2
  },
  {
   "person": "Karen Kemp",
   "posts": 2
  },
  {
   "person": "Matthew Brenner-Planning Board",
   "posts": 2
  },
  {
   "person": "William Bernard",
   "posts": 2
  }
 ],
 "not_established": [
  "Why anybody left a board. A term ending, a resignation and a move out of town look identical here.",
  "Whether a seat sat empty between one holder and the next.",
  "Hours, or what a seat asks of the person in it.",
  "Anything about pay. This listing never states it, and no salary is inferred here from a post’s name."
 ],
 "served_all": 19,
 "sizes": [
  {
   "people": 11,
   "post": "COUNCIL ON AGING"
  },
  {
   "people": 8,
   "post": "ARCHITECTURAL PRESERVATION DISTRICT COMMISSION (APDC)"
  },
  {
   "people": 8,
   "post": "PUBLIC RECORDS ACCESS OFFICERS"
  },
  {
   "people": 7,
   "post": "CULTURAL COUNCIL"
  },
  {
   "people": 7,
   "post": "FINANCE COMMITTEE"
  },
  {
   "people": 7,
   "post": "LIBRARY TRUSTEES"
  },
  {
   "people": 7,
   "post": "LUNENBURG MUNICIPAL BUILDING DESIGN COMMITTEE"
  },
  {
   "people": 5,
   "post": "BOARD OF HEALTH"
  },
  {
   "people": 5,
   "post": "CONSERVATION COMMISSION"
  },
  {
   "people": 5,
   "post": "ECONOMIC DEVELOPMENT COMMITTEE"
  },
  {
   "people": 5,
   "post": "HOUSING AUTHORITY"
  },
  {
   "people": 5,
   "post": "SELECT BOARD"
  },
  {
   "people": 5,
   "post": "SEWER COMMISSION - 1/2"
  },
  {
   "people": 5,
   "post": "STORM WATER TASK FORCE"
  },
  {
   "people": 5,
   "post": "TOWN CLOCKWINDERS"
  },
  {
   "people": 4,
   "post": "AGRICULTURAL COMMISSION"
  },
  {
   "people": 4,
   "post": "ELECTION WORKERS"
  },
  {
   "people": 4,
   "post": "GREEN COMMUNITIES COMMITTEE"
  },
  {
   "people": 4,
   "post": "HISTORICAL COMMISSION"
  },
  {
   "people": 4,
   "post": "PARKS COMMISSION"
  },
  {
   "people": 4,
   "post": "PLANNING BOARD"
  },
  {
   "people": 4,
   "post": "PUBLIC ACCESS CABLE COMMITTEE"
  },
  {
   "people": 4,
   "post": "SCHOOL COMMITTEE"
  },
  {
   "people": 4,
   "post": "ZONING BOARD OF APPEALS"
  },
  {
   "people": 3,
   "post": "AMERICANS WITH DISABILITIES COMMITTEE"
  },
  {
   "people": 3,
   "post": "BOARD OF ASSESSORS"
  },
  {
   "people": 3,
   "post": "CAPITAL PLANNING COMMITTEE"
  },
  {
   "people": 3,
   "post": "CEMETERY COMMISSION"
  },
  {
   "people": 3,
   "post": "MILES"
  },
  {
   "people": 2,
   "post": "Associate Members"
  },
  {
   "people": 2,
   "post": "Associate Members (2)"
  },
  {
   "people": 2,
   "post": "Ex Officio Members"
  },
  {
   "people": 2,
   "post": "TOWN COUNSEL"
  },
  {
   "people": 2,
   "post": "TRUST FUND COMMISSION"
  },
  {
   "people": 1,
   "post": "ASSISTANT DAM KEEPER"
  },
  {
   "people": 1,
   "post": "ASSISTANT TAX COLLECTOR/TREASURER"
  },
  {
   "people": 1,
   "post": "ASSISTANT TOWN CLERK"
  },
  {
   "people": 1,
   "post": "ASST. INSPECTOR OF PLUMBING/GAS"
  },
  {
   "people": 1,
   "post": "ASST. INSPECTOR OF WIRING"
  },
  {
   "people": 1,
   "post": "BUILDING COMMISSIONER/ZONING ENFORCEMENT OFFICER"
  },
  {
   "people": 1,
   "post": "CONSTABLE"
  },
  {
   "people": 1,
   "post": "COUNCIL ON AGING DIRECTOR"
  },
  {
   "people": 1,
   "post": "DAM KEEPER"
  },
  {
   "people": 1,
   "post": "DPW DIRECTOR"
  },
  {
   "people": 1,
   "post": "FIELD DRIVER"
  },
  {
   "people": 1,
   "post": "FIRE CHIEF/ EMERGENCY MANAGEMENTDIRECTOR/ FOREST WARDEN"
  },
  {
   "people": 1,
   "post": "HAZARDOUS WASTE COORDINATOR"
  },
  {
   "people": 1,
   "post": "HEARINGS OFFICER"
  },
  {
   "people": 1,
   "post": "INSPECTOR OF PLUMBING/GAS"
  },
  {
   "people": 1,
   "post": "INSPECTOR OF WEIGHTS & MEASURES"
  },
  {
   "people": 1,
   "post": "INSPECTOR OF WIRING"
  },
  {
   "people": 1,
   "post": "LOCAL CENSUS LIAISON"
  },
  {
   "people": 1,
   "post": "MART ADVISORY BOARD"
  },
  {
   "people": 1,
   "post": "MODERATOR"
  },
  {
   "people": 1,
   "post": "MONTACHUSETT METROPOLITAN PLANNING ORGANIZATION"
  },
  {
   "people": 1,
   "post": "POLICE CHIEF"
  },
  {
   "people": 1,
   "post": "TAX COLLECTOR/TREASURER/TAX CUSTODIAN"
  },
  {
   "people": 1,
   "post": "TOWN CLERK"
  },
  {
   "people": 1,
   "post": "TREE WARDEN"
  },
  {
   "people": 1,
   "post": "VETERANS SERVICES AGENT"
  }
 ],
 "sources": [
  {
   "basis": "published",
   "note": "Read by scripts/extract_personnel.py. The format is not the same every year: the elected pages set headings in title case and the appointed pages in capitals, two or three pages a year are set in two columns, and five years print the section under no running header at all.",
   "what": "Every board and committee, its members and their term-expiry years, FY2016 to FY2025",
   "where": "the ELECTED OFFICIALS and APPOINTED OFFICIALS listing in each annual town report — nine pages a year"
  }
 ],
 "stats": [
  {
   "label": "of the seats the charters create are filled — 101 of 116",
   "tone": "var(--series-cost)",
   "value": "87%"
  },
  {
   "label": "of seats changing hands in a single year",
   "value": "36%"
  },
  {
   "label": "people holding more than one seat",
   "value": "9 of 60"
  }
 ],
 "years": [
  "2016",
  "2017",
  "2018",
  "2019",
  "2020",
  "2021",
  "2022",
  "2023",
  "2024",
  "2025"
 ]
}
