Methodology

Corrections and changes

Every correction and change to how SchoolScope scores schools, newest first, with what it affected. The current rules are on the methodology page.

Reviewed October 1, 2026 · How we score schools

October 1

The newest entry11 entries since August 8, 2026

— high-school score eligibility wording

We corrected our explanation of unscored schools. A school’s type determines its comparison group, but does not guarantee a score. The older wording also ruled out policy exclusions for the remaining choosable schools. When the 2025 overall College/Career Indicator model is active, SchoolScope withholds the score and rank for a reported CCI cohort below 30. CDE may still publish that school’s Prepared rate. The older three-bucket CAASPP explanation does not isolate this additional rule, so the current page does not present those buckets as a complete explanation for that model.

— patterns replaced the archetypes

We retired the seven-way, first-match archetype taxonomy. Its “Strong All-Around” let missing measures pass, and “Building Momentum” was a fallback with no improvement requirement. The patterns that replaced it are independent findings: a school can show none, one or several. Its successor, now named “Across the board”, needs complete academic evidence on a campus confined to one stage, and “On the rise” needs a comparable three-year record in both subjects. Absence, suspension, spending and score cutoffs no longer award a pattern. The Scope Score formula did not change.

— two overstated claims: cohort coverage, and who gets a score

What was wrong, #1: cohort coverage. This page said 98% of elementary and 92% of middle schools "have this comparison" or "have sufficient historical data for cohort tracking" — in the FAQ, in the growth section, in the "Cohort tracking" explainer on the methodology page, and in the limitations list. Those numbers counted schools with a usable prior-year cohort, which is only the first of three gates a cohort has to clear before it publishes (see the "Cohort tracking" fold on the methodology page for the small-cohort and population-mismatch checks that run after it). The number that actually determines whether a school’s profile shows a growth figure is lower: 80.9% of scored elementary schools (4,640 of 5,736) and 60.6% of scored middle schools (1,552 of 2,563). The August 14 entry below corrected 93% to 92% for middle schools that same week — the digit was right, the concept behind it wasn’t — and its own parenthetical mislabeled the denominator too: "2,238 scored schools" counted every school with a score record at that level, not only the ones that carry a score. We’re not editing that entry; this one stands next to it instead.

What was wrong, #2: "every." The methodology page’s opening paragraph said SchoolScope scores "every California public school families choose between," and two of its FAQ answers repeated the same claim in other words — "each," and "Every other public and charter school ... is scored and ranked statewide." "Each" is not weaker than "every"; it’s the same claim about one school at a time. Of the 9,443 standard and charter schools of a type families do choose between — comprehensive, continuation, and DASS-flagged alternative — 8,761 carry a Scope Score. The other 682 don’t. Checked across the full population rather than a sample: one reason is our high-school rule. When CDE’s overall College/Career Indicator cohort for a school has fewer than 30 students, we withhold its score and rank. CDE may still report that school’s Prepared rate. The three-bucket CAASPP breakdown can’t separate out that rule, so we don’t split the current unscored total into those buckets. An earlier version of this entry described the whole remainder as "not enough CAASPP data ... a small or newly opened school, most often," drawn from a 15-school sample; the full population refutes that as the dominant reason.

What we changed. All five cohort-coverage figures on this page, the opening paragraph’s population figure, and the two FAQ answers that restated "every" in its "each"/"every other" form are now queried live from the same database every other number on this page already comes from, instead of being typed once and left to go stale the next time an import shifts the counts or the suppression logic changes. For the legacy score model, the three-bucket CAASPP breakdown on the methodology page comes from a full-population query rather than a sample. It is not presented as a complete account when the overall-CCI high-school model is active.

— a second pass: closed-set claims about our own data, and five stale figures

What was wrong, #1: closed-set claims about where our data comes from. This page said we use "only official California state data" a thousand words above its own Data Sources list, which includes two federal NCES datasets; and it called its Data Sources list "the nine inputs to the Scope Score formula" when the list has eleven rows (it had ten; ELPAC, a real scored input, was missing entirely and was added), five of them context-only. The same shape shipped on other pages: /about’s Organization structured data and a body sentence both said "every data point traces back to" a closed three-member federal/state set, omitting the University of California, College Board, and IB sources shown on every school profile; /press carried the identical structured-data string; /about’s "every weight, every data source, every known limitation" repeated the nine/ELPAC problem; the homepage’s and /explore’s FAQ answers about our data named CDE and NCES only, the same omission. Separately, /about’s own deck said SchoolScope "scores every California public elementary, middle, and high school," and the homepage’s FAQPage structured data said SchoolScope "classifies every California public school" into an archetype — both refuted by the same 92.8%-scored, comprehensive-only-archetype facts this page’s own August 21 and August 27 (cohort-coverage) entries already state.

What we changed. This page’s provenance callout now says "only public data sources," names NCES explicitly, and points at the Data Sources list instead of asserting a closed set; the source-count sentence now says which six of the eleven rows actually feed the formula and which five are context. The other pages named above were fixed in the same pass, to the same "public data sources" wording: /about’s Organization structured data, its body provenance box, its deck, and its second principle; /press’s structured data; and the homepage’s and /explore’s FAQ answers. One string waited for a later change: /about’s search description, which then read "Built from 19+ public government data sources." It has since been rewritten and no longer gives a count.

What was wrong, #2: two growth-vs-income correlation figures were stale, and one contradicted itself on this same page. The August 9 entry below said growth correlates with free-and-reduced-lunch at "about -0.11," scoped to "elementary and middle schools" as one number; re-run against 2025 data it is about -0.13 at elementary and about -0.12 at middle — and this page’s own California’s Own Growth Measure section already printed -0.13 for the same quantity, so the two disagreed with each other. The same August 9 entry’s "-0.78" free-lunch correlation for exceeded/met-plus-exceeded scores holds at elementary (−0.78) but not at middle (−0.72), in a sentence scoped to both. The California’s Own Growth Measure section separately said the state’s matched-student growth model tracks income at "-0.36"; re-run at the same student-count gate the school profile panel uses (school averages across both subjects, ≥40 tested students) it is −0.35 —"about three times" our own figure still holds.

What we changed. Both callouts on the methodology page now carry the re-derived, level-split figures and state how each was computed.

What was wrong, #3: a cohort-growth figure understated itself. A callout on the methodology page said "99.8% of them gained ground" for elementary cohort growth; re-derived against 2025 data, every one of 5,372 elementary cohorts posted positive growth (100%, floor +39.3 scale-score points). The true figure was better than published; it had been typed once and never checked. Fixed on the methodology page. (This is a dated record of the 2025 re-derivation, not a live figure — see the methodology page for the current number, which moves with the data year.)

What was wrong, #4: two more figures inside earlier entries below, not edited there. The August 14 entry below says the grade-gap and cohort-growth metrics "disagree about which direction a school is moving on 55% of scored 2025 rows"; re-derived (the sign of the grade gap differs from the sign of cohort growth, counting a zero on one side against a nonzero on the other as disagreement too), it is 56.1% (4,042 of 7,207 scored 2025 rows) pooled across levels — elementary alone is 60.9% (3,268 of 5,370), middle alone 42.1% (774 of 1,837), and the two level counts sum to the pooled one. The August 21 entry below says the juvenile-court school it names had "roughly 17 tested students"; that count came from halving a column that counts test records, one per student per subject, not students. The correct count, from the same grade-13 ELA row every other student-count figure on this site uses, is 20. We are not editing either entry, the same choice the August 27 cohort-coverage entry above made about the August 14 entry’s "93%" → "92%": the concept each entry describes is still correct, only a supporting digit drifted or used the wrong source.

— the published band rule stopped matching what the site computes

What was wrong. This page, and llms.txt, stated that a school’s band — Strong, Solid, Developing, Needs Support — comes from a fixed cut on the raw Scope Score. That was the old rule. Most of the site had already moved past it — the school card, the crest ring, the map, the landing rack, our MCP server, our WebMCP tools, and the embeddable widget compute a school’s band from its state percentile first, at its own level — before this page or llms.txt caught up. (We are not retyping either cut here — that is the exact mistake this entry corrects. The current one lives in the shared band function and is described, not restated, on the methodology page.)

What we changed. This page and llms.txt now describe the percentile rule and no longer print a raw-score cut. Both pages’ band tables drop the numeric column entirely — the exact cut lives in the code (one function, the shared band function), not retyped in prose, so the two can never drift apart again the way they just did.

What was still open. This page and llms.txt aren’t the only surfaces that still disagree, and we’d rather list what we know than claim a swept count we haven’t verified. When this entry was published, a school profile’s own headline band, its page title and its structured data still kept the OLD raw-score cut — the same school could show a Strong band on its crest and school card while its own profile headline spoke the retired rule. The site-wide search dropdown banded on the raw score too; it was fixed later the same day and now calls the same the shared band function the crest and card do. A few older surfaces hadn’t been migrated either (some blog data tables, and the plain band badge’s raw-score helpers). That list may not be complete — we’d rather say so than let this page become one more place that quietly disagrees with the truth.

Updated September 7, 2026. The profile’s headline band, its page title and its structured data now read the percentile rule, all three in one change, so a search result and the page it lands on can no longer say two different words about the same school. 4,528 of California’s 8,625 scored school profiles changed band word — 4,170 up, 358 down, and every one of the 358 is a high school: 336 that California codes that way, plus 22 that span more grades than that and take their band from their high-school results. California’s high schools score above the fixed cuts the retired rule used — the middle of that level is a Scope Score of about 53, and a quarter of its schools sit below about 45 — so the rule had been placing them a band above where their own level puts them, at two boundaries at once: 111 of the 358 it called Solid are Developing on the percentile, and the other 247 it called Developing are Needs Support. The blog data tables no longer label a raw-score cut with a band word, though posts still group their own counts on fixed score cuts of their own: the hidden-gems list picks its schools at a Scope Score of 70 and up, paired with majority low-income enrollment, and the piece on what a low score means sorts California’s elementary schools into score ranges of its own. Both of those say so in their own text. A smaller case — one sentence counting the schools under some number in one city — might carry the cut without the note, so read a cut inside a post as that post’s own arithmetic rather than as this page’s band rule. What we can still find on the raw cut, having searched the code for it that day rather than trusting the paragraph above: the preschool browse list’s badge, the plain band badge’s fallback branch for a school that has a score but no percentile, the embeddable widget’s fallback for that same case, the TK city map’s pin color, and the score-color helpers that tint a feeder-path row. The first three print a band WORD; the last two only choose a color. That list may still be incomplete, and we’d still rather say so.

— we ranked schools students didn’t choose

What was wrong. A Scope Score, band, archetype, state rank and percentile published for California public and charter schools whose students did not choose them — juvenile court schools, community day schools, county community schools, special-education centers, continuation schools, and dropout-recovery charters. A locked juvenile facility was ranked against a comprehensive high school and the result was called a percentile.

What it affected. 931 California public and charter schools. About three in five of them — 563, continuation and DASS-flagged alternative schools — kept a real score but were being compared to every school in the state rather than to schools of their own type. The remaining 368 — court-community and special-education schools — had no business receiving a score at all: a school for Deaf and Hard-of-Hearing students showed a rank near the bottom of the state, and a juvenile court school with roughly 17 tested students carried an archetype label ("Building Momentum") that a software error assigned it after its score went missing. The same error read a missing score as 0 and ran it through the full pattern rules.

What we changed. Every public/charter school now carries a school type for comparison, derived from the state’s own school-type code and its Dashboard Alternative School Status (DASS) flag — see school types on the methodology page. Court-community and special-education schools keep every underlying number but publish no score, band, archetype or rank. Continuation and DASS-flagged alternative schools keep a real score, ranked only against schools of their own type. Comprehensive schools — including roughly 315 schools of choice (magnets, gifted/STEM academies, virtual academies) that the state codes under the same "alternative" type as at-risk programs but that are not DASS-flagged — are unaffected, and some of those magnets rejoined the statewide comprehensive ranking pool they had been incorrectly excluded from during this fix’s own drafting.

What was still open. The line we drew is enrollment mechanism, not demographics or outcomes — a high-poverty neighborhood school that families choose stays ranked exactly as before. A continuation school’s band IS recalibrated for its own type wherever the shared band function decides it — it comes from that school’s own percentile within continuation or DASS-flagged alternative schools, exactly like its rank, not from the statewide comprehensive distribution. It doesn’t get an archetype either, the same as every school outside the comprehensive type. That school’s own profile headline band, page title, and structured data still speak the retired raw-score cut described in the entry above, not this peer-relative one — and it’s not the only surface that hasn’t migrated yet; see the "What was still open" note in the entry above for the fuller, still possibly-incomplete list. Everywhere the shared band function decides the band — the crest, the school card, the map, our agent surfaces — the band, the rank and the percentile are computed against the school type together, not the whole state.

— growth weight lowered, and a grade correction that never ran

Growth weight. We lowered the elementary and middle growth weight to its current 20% and gave those points back to the two test-score rates. Growth measured on one group of students often disagreed with growth measured on another, and that was moving schools between bands. The change makes the score steadier from year to year and gives back some of the August 9 gain: the elementary correlation with free-and-reduced-lunch share is now about −0.75, against −0.71 after August 9 and −0.76 before it.

Grade-test difficulty. This page described a correction for harder tests in higher grades. We found it had never run: it was computed and then discarded before the score was calculated. We tested whether it was needed, found it wasn’t, and removed the code rather than switch it on, because switching it on lowered year-over-year reliability.

Exceeded, defined. We added what the single exceeded figure is: our unweighted average of the state’s per-grade, per-subject figures. An outside fact-checker had compared one school’s figure with CDE’s separate English and math numbers, found neither matched, and filed it as an error. The figure was right; the page had never said what it was.

— we showed one growth number and scored a different one

What was wrong. The Scope Score has always been built on cohort growth — a school’s later-grade class measured against its own earlier-grade class two years before, in scale-score points. That’s a returning cohort: mostly, not exactly, the same kids, never individually matched students. But almost every place this site said the word "growth" was displaying a different number: the grade gap, one year’s 5th graders against the same year’s 3rd graders, in proficiency percentage points. Two different measurements, two different units, one label. They disagree about which direction a school is moving on 55% of scored 2025 rows.

What it affected. The growth figure on school profiles and in comparisons, the helping/hurting arrow on the score factors panel — which pointed the wrong way for about a third of elementary schools — the “Grade-to-grade gains” and “On the rise” patterns, which were assigned on the unscored number, and the growth fields returned to AI agents through our MCP server and llms.txt. This page described only the cohort measure, so the two never met on the same screen and nothing flagged the mismatch.

What we changed. Every surface that explains the score now shows cohort growth, named with its span and led by its position relative to other schools at the same level rather than a raw scale-point number nobody can interpret. The grade gap survives only as explicitly-labeled context and is never colored by its sign. The two growth archetypes now fire on the scored measure and refuse to fire at all when a school has no cohort comparison or too few tested students —no growth evidence, no growth claim. And the pattern criteria table on the methodology page now reads the same rules that assign the patterns, so the two cannot drift apart again.

What we’d also got wrong on this page. We reported cohort coverage for middle schools as 93%; it is 92% (2,065 of 2,238 scored schools). Elementary was correct at 98%. We also described schools without cohort data as "falling back" to the grade gap in the score — they now have the growth dimension left out and its weight redistributed instead, because substituting a percentage-point number into a scale-point slot is exactly the mistake this correction is about.

What was still open. The two numbers disagreeing isn’t an embarrassment so much as the whole reason this site exists. Most California elementary schools post a negative grade gap in the same year their students gain around 75 scale score points. The bar rises faster than the visible proficiency rate does. If you have ever looked at a school’s "% proficient" and concluded it was going backwards, this is very likely what you were looking at.

— archetype cutoffs no longer matched the rules

The archetype cutoffs published on this page and in our plain-text summary for AI assistants had been typed by hand, and five of seven rows no longer matched the rules that assigned the archetypes. AI assistants that read the summary were given the outdated cutoffs for months. Both tables now read the same rules the archetypes use.

— growth weight raised, absenteeism lowered

In our own 2025 data, the exceeded and met-or-exceeded rates correlate with a school’s free-and-reduced-lunch share at about −0.78 at elementary and about −0.72 at middle. Cohort growth correlates at about −0.13 at elementary and −0.12 at middle. At elementary and middle schools we raised the growth weight and lowered the absenteeism weight. At elementary, that lowered the Scope Score’s correlation with free-and-reduced-lunch share from about −0.76 to about −0.71.

— student groups no longer open a profile

Before this date, a student-group clause opened roughly three quarters of the profiles that paired a strength with a watch-out. A school is now introduced by what it does for all of its students; group results stay prominent in Every learner.