CONNECTICUT SCHOOL DISTRICT OUTCOMES VS. FUNDING ADEQUACY
Interactive bubble chart widget package
==========================================================

CONTENTS
--------
index.html
    The standalone, self-contained interactive widget. Opens directly
    in any browser -- no server or install required. Chart data is
    embedded inline inside this file, so it works fully offline once
    downloaded (it does load Chart.js from a CDN via <script src>, so
    an internet connection is needed for that one external file).

    Features:
      - Year slider, 2009-2024, with a play button to animate through
        years
      - Search box and click-to-select highlighting -- each selected
        district gets its own color from a 10-color palette, matched
        to a colored dot on its chip
      - Bubble size = enrollment

data/ct_district_data.csv
    Human-readable version of the underlying data, one row per
    district-year:
        district_name                - CT school district
        year                           - 2009-2024
        pct_adequacy                   - ppcstot / sim_cost_2_bd * 100,
                                          rounded to the nearest whole
                                          percent
        outcome_distance_to_ma_avg     - this district's outcome_index
                                          minus that year's Massachusetts
                                          average outcome_index (a
                                          signed gap; negative = below
                                          the MA average that year),
                                          rounded to 2 decimals
        enrollment                     - district enrollment

data/ct_district_data.json
    The same data in the compact array format actually embedded in
    index.html's <script> tag:
        [ [district_name, [[year_offset, pct_adequacy, distance_x100, enrollment], ...]], ... ]
    year_offset is years since 2009 (0 = 2009, 15 = 2024). distance_x100
    is outcome_distance_to_ma_avg * 100 (an integer); divide by 100 to
    get the real value. Provided in case you want to inspect, re-use,
    or re-embed the exact dataset elsewhere.

METHODOLOGY NOTES
------------------
- % Adequacy uses sim_cost_2_bd as the denominator (an alternate
  adequacy-cost estimate), not sim_cost_1_bd.
- The y-axis is not the raw outcome_index. It's each Connecticut
  district's outcome_index minus that same year's Massachusetts
  statewide average outcome_index, i.e. a benchmark comparison against
  MA rather than an absolute score. This is a signed difference, not
  an absolute value, so direction is preserved: positive means above
  Massachusetts's average that year, negative means below it.
- The source file had inconsistent capitalization of district names
  across years (e.g. "Long Branch Public School District" vs. "LONG
  BRANCH PUBLIC SCHOOL District") which was initially fragmenting some
  districts' multi-year records into separate entries. This was fixed
  by grouping on a stable district ID rather than the district name
  text, then selecting one canonical name per district for display.
- 142 of Connecticut's districts are represented; none were excluded
  for data quality reasons in this dataset (unlike the NJ and CA
  packages, which each had specific exclusions -- see their READMEs).

USAGE
-----
Just open index.html in a browser. To embed it on a website (e.g. as
an iframe), upload index.html somewhere with a public URL and point an
<iframe src="..."> at it -- the CSV/JSON files aren't required for the
widget to run; they're included here for reference and reuse.
