How This Analysis Stays Accurate & Neutral

The safeguards behind every chart — what's checked automatically, what a person reviews, and where the limits are.

The short version. This is an independent, volunteer analysis of public budget documents — not an official town product and not aligned with any party or campaign. Because anyone can be wrong (or can let a conclusion they like slip past the evidence), the project is built with explicit safeguards: every number traces to a public source, an automated gate blocks objectively wrong or inconsistent figures from being published, and the whole analysis was deliberately attacked from a skeptic's point of view — with the less-flattering result kept whenever the data demanded it. This page documents all of that, including what the safeguards can't catch.

Why this page exists

A budget analysis is only as trustworthy as a reader's ability to check it. Numbers about taxes and schools are easy to slant — by picking a flattering comparison, rounding in a convenient direction, or stating a conclusion more confidently than the data supports. So rather than ask you to trust the author, this project tries to make the work checkable, and to put guardrails between a draft and what gets published.

There are three layers, described below: you can find every number's origin, an automatic check refuses to let objectively wrong figures through, and the analysis was put through a deliberate effort to disprove its own conclusions. A single rule runs through all of them: the automatic checks handle plain facts; people handle the judgment calls.

1. Everything traces to a public source

Nothing on this site is a number you have to take on faith:

  • The raw documents are published, not just the conclusions. All 17 adopted town budget books (FY 2007-08 through FY 2024-25), the Board of Education budget books, 19 years of state staffing records, and the town's insurance-consultant pages are kept openly with the analysis — so you can check the original, not just our summary of it.
  • Every headline figure is cited. Charts carry source notes naming the dataset, the agency, and the date it was pulled — Connecticut's budget office, the U.S. Census Bureau, the federal labor-statistics bureau, the state education department, and so on. The full source list is on the Budget Trends page.
  • Every term is defined. The Glossary explains every abbreviation and technical term in plain English, and points to the exact datasets behind each one.
  • The methods are spelled out. A detailed write-up records how each number was pulled from the documents and computed, step by step, so someone else could redo the whole analysis from scratch and get the same answer.

2. An automatic check that blocks wrong numbers

Before any update to this site goes live, it passes through an automatic check — a small built-in helper that re-does the math and compares the numbers against each other. Think of it like a spell-checker, but for figures instead of spelling. If it finds something objectively wrong, it stops the update until the problem is fixed. It runs on its own, so nobody has to remember to start it.

What it looks for

  • The same number has to match everywhere. A figure that appears on more than one page must be identical on all of them. (An earlier draft once showed a state-aid shortfall as one amount on a chart and a different amount in the write-up — exactly the kind of contradiction this catches.)
  • Every figure is re-derived from the source data, not taken on trust. One set of underlying data files is treated as authoritative; the check re-does the calculations behind each published number — growth rates, per-person figures, the state-aid share, and so on — and flags any result that doesn't match what the source produces. A typo or a stale number can't quietly survive.
  • The spreadsheet has to agree too. The same source figures are checked against the underlying spreadsheet, so it can never quietly disagree with the website.

How and when it runs

The check happens at three different moments, so a mistake would have to slip past all three to ever reach you:

  • On demand. The author can ask for a full review at any time — in effect, "check every number on the site" — and get back a list of anything that doesn't add up.
  • While the author works. On the author's own computer the check can run as each edit is made, catching most problems early — a first line of defense, before anything is published.
  • Every time the public site is updated. This is the one that's guaranteed: a full pass — including the spreadsheet — runs automatically whenever the site changes, and every published version has to clear it. It's the backstop nothing gets around.

The line it deliberately won't cross

The check was built around one rule: a machine should decide facts, never judgment. That rule shows up as four deliberate limits.

Blocks on accuracy only

It stops a change only for objective, checkable problems — bad arithmetic, a figure that disagrees with its source data or with another page, a dead source link. Nothing else can stop a change.

Warns on wording — never blocks

Whether a sentence reads as slanted is an editorial call. The review can flag it for a person to look at, but it is never allowed to block publication on its own. Tone is a person's decision, not a machine's.

Flags mismatches — never overwrites

If a number on a page disagrees with the source document, the gate flags it for a human instead of "correcting" it automatically — because the document could be the stale side. A person decides which is right.

Fixes only the mechanical, and only when asked

If anything is ever corrected as part of a review, it's limited to low-risk mechanics — an arithmetic typo, a rounding slip, a unit label, a broken link — and only when a person runs the review and the right value is unambiguous. Anything substantive goes to a human to decide.

The checker and the full list of rules it follows are kept out in the open alongside the rest of the project's files, so anyone can read exactly what it does. If you find a number it should be guarding but isn't, that's worth reporting — see below.

The actual tool: an open-source skill called budget-review

To be concrete about what "the automatic check" is: it's a named, open-source review skill — budget-review — kept in the project repository where anyone can read every line of it. Its number-checking half is a standalone script that runs on its own — on the author's computer and automatically whenever the public site is updated — and the skill as a whole is what the AI assistant, Claude Code, follows when it helps review the site. It is deliberately split into two halves that do not mix:

  • A deterministic number-checker — plain code, no AI judgment. The gate described above is an ordinary Python script, check_numbers.py. It re-does the documented calculations and reconciles the numeric data series across the web pages and the source data file, and scans the spreadsheet for drift. There is no opinion in it — a number either ties out or it doesn't — and it is the only part allowed to block a change from being published.
  • A neutrality & support review — AI-assisted, but human-decided. The wording checks (does a sentence read as slanted? is a claim backed by a source?) are carried out by the AI assistant working from two open checklists: a review checklist and a loaded-language lexicon. This half only ever surfaces a concern for a person to weigh — it flags a phrase, and may suggest a more neutral alternative, but it cannot apply an edit, publish, or block publication on its own. Every editorial call stays with the author.

That split is the rule stated above — facts to the machine, judgment to a person — made literal: the part that can stop a change is plain code with no view of its own, and the part that has a view can only suggest. The complete skill, including the exact instructions the AI is given, is published in the repository as SKILL.md.

3. We tried to break our own findings

The most important safeguard isn't automatic. After the first draft, the analysis was put through several deliberate review passes whose job was to disprove it: a number-by-number audit (recomputing every headline from the raw figures), a "skeptical citizen" pass that worked through seventeen specific challenges a doubtful reader would raise, and a final read of the whole site as if by a political opponent looking for anything to attack. The rule throughout: when better data contradicts a flattering claim, the claim changes — not the data.

Several conclusions did not survive, and the site now reflects the corrected, less-flattering versions:

Claim in an earlier draftWhat the deeper data showed
Colchester's property tax rate is "3rd lowest of 7" nearby towns. Once adjusted so towns at different points in their revaluation cycle are compared fairly, Colchester ranks 9th of 15 — middle of the pack, not "well below average." Both the raw and adjusted rankings are now shown.
Colchester has the "lowest per-capita spending" among demographic peers. On an apples-to-apples basis across all the originally considered towns, Colchester is 4th-lowest of 15 — three towns spend less. The "lowest" framing was an artifact of which towns happened to have data; that's now disclosed.
A specific accusation that the schools "quietly" raised an insurance-reserve draw rate without justification. The claim couldn't be substantiated from the source documents, so it was removed entirely rather than left as an unsupported allegation.
The state-aid shortfall is a single confident dollar figure. It's now presented as a range, because the answer depends on which inflation measure you use — and the originally published figure is openly labeled the conservative end.
"No administrative bloat" — staffing held flat. True at the endpoints, but the middle years saw a real (since-reversed) expansion in central-office director roles. The fuller, more nuanced picture is now shown instead of the clean headline.
Cheerleading phrases in the summary — "Spending is Under Control," "leading in fiscal efficiency," "disciplined fiscal management." Removed and replaced with plain description. Reading the site as a hostile critic would made it obvious these read as advocacy, not analysis.

A complete log of every challenge raised and how it was resolved is kept with the project — in the reviewers' notes and in a dated change log that records each correction.

4. Counterweights to bias

Beyond catching outright errors, the analysis is built to show more than one side of a question wherever a single framing could mislead:

  • Two ways of measuring the tax burden, side by side. Spread evenly across all residents, the burden eased; measured as the tax bill on a typical home as a share of income, it grew. Both are correct — the answer depends on what you own — and the site shows both rather than picking the convenient one. See Income vs. Spending.
  • Local and statewide income, both shown. Burden charts are computed against both Colchester-specific income and the statewide figure, because the choice of denominator changes the story.
  • More than one inflation yardstick. The standard consumer price index understates the costs towns actually face, so the analysis also reports against government-specific cost indices — and notes that the main conclusion holds (or strengthens) under each.
  • "What's NOT in this analysis." The home page states plainly what the operating-budget figures exclude — debt, pensions, capital projects, grant pass-throughs — and reproduces the audited balance-sheet numbers at the same prominence, so a favorable operating-budget headline isn't mistaken for the whole fiscal picture.

5. Charts are drawn to honest scales

A chart can mislead without a single wrong number — just by where its axis starts. The rule this site follows is standard practice, and it cuts both ways:

Bar charts start at zero

A bar's length is how the eye reads its value, so the value axis begins at zero — starting it higher stretches a small gap into a big-looking one. Four bar charts that had begun above zero were reset to a zero baseline: the two per-capita spending comparisons and the "state ECS aid as a share of the school budget" chart on the Budget Trends page, and the Board of Education insurance chart on the Insurance page. Only the axis changed; the numbers did not.

Indexed and trend lines do not — and that's correct

Some charts legitimately don't start at zero. Indexed charts set every series to 100 in a base year to compare growth rates — there the reference point is 100, not 0. Time-trend lines in real dollars or percentages frame the axis to the data's own range to show the direction of a trend. In both, the axis is not a bar's height, and every value is labeled on the axis and in the hover tooltip so a reader can check the real magnitude.

The dividing line: if a bar's length stands for a quantity, the axis starts at zero; if an indexed or time-trend line is showing a rate or a direction over time, it is framed to the data and the numbers are always labeled.

6. What these checks can't do

Being honest about the guardrails means being honest about their gaps.

  • The gate verifies internal consistency, not external truth. It confirms the numbers agree with each other and with the source documents in this project. It cannot confirm that a source document is itself correct — if a budget PDF contains a typo, the gate won't know.
  • A machine can't judge fairness. Whether a sentence is slanted, whether a comparison is the right comparison — those are human calls, by design. The automated checks deliberately stay out of them.
  • One author, limited eyes. This is a volunteer project reviewed primarily by its author. The skeptical-review pass is thorough, but it is not the same as independent professional audit. That's exactly why the next section matters.

7. Hold us accountable

Found a number that looks wrong? Please say so. The single best check on this analysis is a resident who recomputes something and challenges it.

Email john.e.farrell@gmail.com — that's the surest way to reach the author. Every correction is recorded in the change log with the date and what changed, including the times the analysis had to walk back a conclusion it would rather have kept.