The Match score, in plain English

How matching works

Two numbers sit on every school card on Public School Match: a Match band that asks "is this school a good fit?" and an Admissions outlook that asks "will my child get in?" They're independent. A school can be an excellent fit and a long shot; a school can be a fair fit and likely. Below is exactly how each number is built and why we made the choices we did.

What the Match band is, and isn't

The Match band is a comparison between a school and your family's stated priorities. It is not a universal ranking. A school's band depends on the criteria you flagged as important, the values you self-identified with on the Optional Context card, and the active commute origin you chose for this child. Change any of those and the band changes. Nothing about the school changes, only how its data lines up with what you said you care about.

A lower band doesn't mean a school isn't great. It just means it doesn't line up as cleanly with your priorities as a higher-band school does. We always show every public school's data, band or no band.

The five importance tags

Instead of asking you to set a 1–5 slider on every criterion (which gives a false sense of precision), we ask you to tag each criterion with one of five tiers:

  • Must Have, if a school can't meet this, it lands in the special "Doesn't Meet Must Haves" band regardless of how well it does on everything else.
  • Strongly Prefer, heavily weighted, but a miss doesn't disqualify the school.
  • Nice to Have, a tie-breaker. Counts, but lightly.
  • Not Sure Yet, collected, ignored in scoring. Shows you the data but doesn't influence the band.
  • Don't Care, explicitly silenced. Even the data card gets de-emphasized.

How tags combine into a band

Each criterion produces a 0–100 raw score from the school's data, then is weighted by your tag (Must Have heaviest, Nice to Have lightest). The engine averages the weighted scores into a hidden 0–100 number, which is only used for sort order, never displayed, and then maps that to one of five bands:

  • Excellent, top of the distribution for your priorities at this grade level.
  • Strong, good alignment across most of your tagged criteria.
  • Fair, partial alignment; worth a closer look.
  • Weak, limited alignment.
  • Doesn't Meet Must Haves, at least one Must Have failed outright. The hidden score still exists, used to sort within this group.

Watchout chips below the band tell you exactly which criteria contributed negatively. Met chips tell you which contributed positively. Both link back to the underlying data so you can verify our reasoning.

What happens when data is missing

When a school doesn't have data for a criterion you care about, we exclude that criterion from the score, both the numerator and the denominator. The missing criterion shows up as a Watchout chip so you know to follow up on the tour. We don't penalize a school for what we don't know, and we don't pretend we knew it by scoring it as 50.

The one exception: if you tag a criterion as Must Have AND check the "Treat Unknown as Non-Matching" toggle, then a school with missing data on that criterion does fail the Must Have floor. That toggle is off by default.

What gets scored

The Match engine evaluates 11 criteria today. Each has its own data sources:

  • Commute: travel time from your active saved location to the school, in the modes you selected (walking / transit / driving / fastest of the three), routed on published MTA schedules for transit and OpenStreetMap street data for walking and driving, with straight-line estimates as the fallback.
  • Academic Performance: NYC DOE ELA + math proficiency, accelerated pct, and Quality Review climate component.
  • School Community Fit: NYC School Survey climate signals only (safety + family-school relationships). Demographics are not in this score.
  • Student Body Composition: race/ethnicity + economic mix composition. Only fires when you affirmatively tell us about your family on the Optional Context card. See the Guardrails on the Student Body Composition signal section below.
  • Program Style: how well the school's program tags (Dual Language, Arts, STEM, etc.) overlap with what you selected.
  • School Size: small / medium / large enrollment bucket.
  • School Configuration: grade span (K-5 / K-8 / 6-8 / 6-12 / etc.).
  • Admissions Method: lottery / screened / district priority / charter, your stated preference.
  • Special Education Support: SWD enrollment % and ICT / SETSS / inclusion program presence. Degrades for charter schools: because charters don't use NYCDOE program naming, we lean on the SWD enrollment data and surface the score as "Estimated" rather than "Official."
  • Bilingual / Dual Language: whether the school runs a DL program in the language(s) you specified.
  • Route Fit: a geometric overlay of the school against the line between your saved locations (e.g. is the school "on the way" from home to work?). Scored independently from Commute.

The Admissions outlook

Separately from the fit band, every school card shows an Admissions outlook bucket, Likely, Target, Reach, Long shot, or Insufficient data. This is built from MySchools' published applicant-and-offer counts inside each school's priority groups. We:

  1. Walk the school's priority ladder top-to-bottom (continuing students > siblings > district residents > borough residents > citywide) and find the highest rung your child qualifies for.
  2. Look up the historical offer rate inside that rung from the most recent published cycle.
  3. Convert that rate into a bucket, widening the band when the applicant pool was small.

If you've entered your MySchools lottery number, the outlook upgrades to a percentile-based estimate that compares your hash's position to the historical cutoff for your group, with a ±10 percentage-point smoothing window to account for cycle-to-cycle variance. Your number is encrypted at rest, decrypted only by the match engine, and never displayed back to you.

Charter schools run independent lotteries. The DOE priority ladder and lottery number don't apply. We use the simpler seats-divided-by-applicants from the school's most recent published cycle and flag the card with an "independent lottery" badge so you know.

We never quote a number more precise than the 5% bands. We always cite the source year. Families like yours got offers about this often, not a promise about your specific child.

Apps per seat

Admissions tables on school pages and list views also show an "Apps / seat" column: how many applicants there were for each available seat in the most recent published cycle. The program-level figure is MySchools' own published number, shown as is. Inside a priority group, we derive the equivalent ratio ourselves from that group's published applicant and offer counts. Either way it measures crowding, how many families competed for the seats last cycle. It is not your child's odds. Your odds depend on where you land in the priority ladder, which is what the Admissions outlook above is built from.

The DOE itself describes this figure as a program's applicants per seat and frames it as demand: more applicants per seat means a lower chance of an offer. Apps / seat is our shorthand for the same idea. As far as we can find, the DOE does not publish a separately named competitiveness index for programs, so this ratio, read alongside the priority ladder and each program's admissions method, is what families have to go on.

Guardrails on the Student Body Composition signal

The demographic-composition criterion is the most sensitive number we compute, so it has explicit guardrails:

  • Affirmative opt-in only. The criterion only fires when you tell us about your family on the Optional Context card. We never infer demographics from your name, address, or browsing behavior.
  • Symmetric scoring. A family that asks for "more families like ours" and a family that asks for "diverse" have the same maximum possible score. Neither direction is privileged.
  • No per-demographic penalty. A school is never penalized for serving a particular racial, ethnic, or income group. The scoring formula computes overlap with your stated preferences only.
  • Encrypted at rest. Race / ethnicity, ELL status, FRPL status, and IEP status are stored encrypted. Only the server-side match engine reads them, using a single decrypt call that never reaches your browser.

What we never do

  • We don't publish a universal "best school" ranking. There isn't one.
  • We don't guess about your child. Every input you give us is something you affirmatively typed.
  • We don't hide data from you when a school does poorly. Every public-data point is visible on every school's detail page regardless of band.
  • We don't lock you out of the data without a profile. You can browse, save, and compare schools without any priorities set, the Match band just doesn't show up until you've told us what to look for.

Where the data comes from

All school-level data on Public School Match comes from public sources, refreshed annually by our canonical-build pipeline. The primary feeds:

  • NYC DOE School Quality Snapshot (ratings, enrollment, demographics, program tags), updated annually.
  • NYC DOE MySchools (programs, admissions methods, priority groups, applicant-and-offer counts), updated annually for the most recent application cycle.
  • NYC Open Data (academic metrics, NYC School Survey responses, sports, bilingual program lists), updated annually.
  • NYSED (state-level enrollment and accountability data), annually.
  • Commute routing (travel times), computed on our own routing stack from MTA GTFS transit schedules and OpenStreetMap street data, fetched on demand and cached for 12 months per (origin, school, mode) pair. Transit times use published schedules for a school-day morning, not live traffic.

Behind the scenes we grade every datapoint's confidence, from official-and-current down to estimated, and the site marks estimated values where they appear (commute fallbacks and charter special-education scores, for example, show as "Estimated"). If a number looks wrong, use the "Report data issue" link next to any section of a school page and we will re-check it against the source.

Quality ratings

DOE quality-rating labels skew positive across the system, so a label alone rarely separates one school from another. We show the ratings as the categorical labels they are, and we place percentile-anchored measures (survey topics, teacher metrics, student body mix) alongside them in the same section so you can see where a school actually sits in the citywide distribution. Lean on the percentiles; treat the labels as context.

Information, not a guarantee

Everything on Public School Match is an estimate built from published data. We are an independent tool, we play no role in admissions decisions, and no band, outlook, or ratio on this site is a promise about your child's application. Use these numbers to build a smarter list and better tour questions, then confirm anything time-sensitive, like deadlines, open houses, and program availability, with the school or MySchools directly.

The engine internals (exact formulas, version stamps, and verification tests) live in the project's engineering docs. We bump a public scoring_version stamp every time the math changes, so cached scores recompute and you never see a stale band.

Questions or feedback? Get in touch.

How matching works · Public School Match