Status: planned (nothing built). Research 2026-09-28: NCES bulk files and data dictionaries downloaded and read, College Scorecard API probed for coverage across all 1,893 colleges, and two colleges' Common Data Set workbooks (Vanderbilt 2024–25, Cornell 2025–26) read cell by cell. Values are verified unless marked unverified.
Why
Today the site uses about 40 Scorecard fields and a few columns from IPEDS ADM, SFA, and the price files. Much more public data exists. Some of it is in files we already download, some needs one more Scorecard field, and some needs a new NCES file. The most-asked-for item, high school GPA, exists only in each college's Common Data Set, so it waits for the college-reported data agent.
Each spec here is a separate unit of work, so pieces can ship when they're useful.
Specs
Wave 1: already downloaded or already on the Scorecard call (cheap)
| Spec | Adds | Source |
|---|---|---|
| admission-factors.md | Built. How GPA, class rank, essays, recommendations, legacy status, and more are used in admission | IPEDS ADM (downloaded) |
| admissions-detail.md | Built. Admit rates by sex, true SAT/ACT medians, ACT English/Math | IPEDS ADM (downloaded) |
| housing-and-policies.md | Built. Housing capacity, live-on requirement, meal plan, application fee, tuition guarantee, promise program | IPEDS COST1 (downloaded) |
| student-body.md | Built. Men/women split, part-time share, share 25 and older | Scorecard API |
| loans-and-repayment.md | Built. Share who borrow, debt for Pell and lower-income students, repayment progress | Scorecard API |
Wave 2: one new NCES file each
| Spec | Adds | Source |
|---|---|---|
| campus-profile.md | Built. City/suburb/town/rural setting, Carnegie 2025 classes, HBCU/tribal/land-grant, map coordinates, MSI flags | IPEDS HD (+ Scorecard flags) |
| Metro Area (IPEDS HD) | Deferred. Metro area and county, for nearby colleges and a metro filter | IPEDS HD |
| campus-services.md | Built. Athletics (NCAA/NAIA, conference), ROTC, study abroad, undergraduate research, AP credit, disability services share | IPEDS IC |
| student-faculty-ratio.md | Built. Students per faculty member | IPEDS EF part D |
| residence.md | Built. Where first-years come from: in-state, out-of-state, international; top home states | IPEDS EF part C |
| outcome-measures.md | Built. 8-year outcomes for all entering students (incl. transfers in and part-time), with transfer-out and Pell splits | IPEDS OM |
| graduation-by-group.md | Built. Graduation rates for Pell recipients and by race/ethnicity | IPEDS GR (Pell/SSL file) + Scorecard |
| finances.md | Built. Endowment per student, instruction spending per student | IPEDS F / DRVF (+ Scorecard) |
| faculty.md | Built. Average faculty salary, share of full-time faculty | IPEDS SAL (+ Scorecard) |
| time-to-degree.md | Built. Share finishing within 4, 6, and 8 years, for every entering group | IPEDS OM (already read) |
| transfers.md | Built. New transfer students every fall, and how many of an entering class went on to another college | IPEDS EF part A + OM |
Wave 3: large per-college tables
| Spec | Adds | Source |
|---|---|---|
| majors.md | Built. Degrees awarded by field: top majors (searchable list of every program), fastest-growing field, field filter, Home fact | IPEDS Completions (C_A) |
| field-of-study.md | Built. Earnings and debt by major at each college: "Top-earning majors here", Compare's "your major" | Scorecard Field of Study |
Wave 4: college-specific, from the CDS records of round 3
Specified in full on 2026-10-03 after an inventory of 19 real 2025–26 Common Data Sets (6 Excel, 11 PDF, 2 HTML; see college-reported-round-3.md, whose extraction scope lists every item below by template code). The one full run captures all of these; each spec then ships from the stored records with no new visit to any college.
| Spec | Adds | CDS items |
|---|---|---|
| cds-admissions.md | Built 2026-10-03. High school GPA (average, weighted flag, and bands), the 18-factor importance grid, early decision/action, wait list, class rank | C2, C7, C10–C12, C21–C22 |
| cds-residency-admissions.md | Built 2026-10-03. In-state, out-of-state, and international admit rates and yields | C1 by residency |
| cds-test-scores-and-policy.md | Built 2026-10-03. The test policy for the coming application cycle; true SAT composite percentiles and score-band distributions | C8, C9 |
| cds-application-logistics.md | Built 2026-10-03. Deadlines, notification and reply dates, housing deposit, gap-year deferral, fee waivers, high school units required | C3–C5, C13–C18 |
| cds-financial-aid.md | Built 2026-10-03. CSS Profile and other forms, aid methodology and deadlines, aid for international students, need vs merit dollars, athletic awards, the full H2 lines for first-years | H0–H2A, H6–H11, H14–H15 |
| cds-student-body-and-outcomes.md | Built 2026-10-03. Enrollment, race/ethnicity, retention, and graduation by Pell group one year newer than federal data, with a 4-year rate | B1, B2, B4–B11, B22 |
| cds-academics.md | Built 2026-10-03. Class sizes, the CDS student-faculty ratio, honors and other programs, core requirements | I-2, I-3, E1, E3 |
| cds-transfer.md | Built 2026-10-03. Transfer applicants, admits, enrollees, requirements, dates | D |
| cds-cost-and-debt.md | Built 2026-10-03. Next year's price before IPEDS has it (first-year and upper-division), differential tuition, graduates' debt from every loan source | G, H4–H5 |
CDS F1 (fraternity/sorority share) is in greek-life.md; C7 religious commitment, F2 campus ministries, and H14's religious row are in religious-life.md. F1 out-of-state and on-campus shares are covered as CDS supplements in residence.md and housing-and-policies.md. Items the inventory judged not worth a page (A, B3, I-1, J, most free-text policy items) are still stored by the run because template workbooks and fillable PDFs read for free.
Wave 5: one more NCES file, for the trends studies
| Spec | Adds | Source |
|---|---|---|
| online-share.md | Built 2026-10-12 (specified 2026-10-05). Share of undergraduates studying entirely online, by fall since 2012; the online-first rule as a stored field (the movers' growth lists, Study 3's campus-based toggle, Study 7's panel); a profile line and an Explore filter | IPEDS EF part A, distance education (EF{Y}A_DIST) |
Wave 6: a non-federal source, once permitted
| Spec | Adds | Source |
|---|---|---|
| Common App: Deadlines, Requirements, and Application Trends (Requirements Grid, Explore pages, research reports) | Planned 2026-10-06, waits on Common App's permission (its terms of use forbid scraping and commercial reuse; the spec's first unit is the letter). Deadlines and early rounds, fees and fee waivers, essay, supplement, transcript and recommendation requirements, and this cycle's test policy for about 1,000 member colleges; aliases and an international-aid flag; national and state application trends from its reports, months before IPEDS | Common App Requirements Grid (PDF), Explore pages, research reports, Tableau state workbook |
Deciding on history
Every spec answers "Keep history?" with one of three answers:
| Answer | When | Storage |
|---|---|---|
| Series | The value is a number that changes year to year, NCES or Scorecard publishes it in comparable yearly files, and at least ~8 years exist | A new series in the history shard (trends-data.md), same rules: latest point equals the snapshot, breaks marked, nulls for gaps |
| Events | A category that changes rarely (a policy, a classification, a conference) | A short events list in the shard: { year, field, from, to }, e.g. "Stopped considering legacy status, fall 2023" |
| None | The value is static, only one cohort exists, or year-to-year changes are method, not reality | Snapshot only |
Events are new. They need a events array in SchoolHistory (lib/history.ts), validation, and a small "Changes"
list on the profile's Over time page. The first spec that needs them (admission-factors.md)
builds them.
Deciding on top-level trends
The site already surfaces trends at five levels (trends-design.md). Each spec says where, if anywhere, its trend belongs:
| Level | Today | Bar to add one |
|---|---|---|
| Hero trend indicator | 4: cost, applications, diversity, selectivity (trend-indicators.md) | A question families ask about every college; data for most colleges at both ends of 10 years; a wide spread of changes, so up/steady/down all happen; no good/bad verdict needed. Adding one costs space on every card, so at most one or two more |
| Home "What's changed" fact | 3 national facts | A national story that is true, surprising, and computable on a fixed panel |
| "Known for" standout | Percentile-based chips | A per-college extreme (top 5%) that says something about the college |
| Explore sort/filter/column | Change columns and trend filters | Users would pick colleges by it |
| "Over time" chart only | Cost, Aid, Admissions groups | Useful context, not a headline |
Recommendations across all specs:
- Hero indicator candidates: Graduation ("Are more students finishing?") from the existing
grad_ratehistory, strengthened by outcome-measures.md. No other new data clears the bar. - Home fact candidates: legacy preference fading (admission-factors.md), the shift in majors (majors.md), and the Pell graduation gap (graduation-by-group.md). Add at most one at a time.
- "Known for" candidates: draws students nationally, Pell students graduate at the same rate, very small classes, big endowment per student.
Shared build rules
- Lineage first. Every new field is registered in
lib/fields.tsand cited (data-lineage.md). New sources get aSourceKey(ipeds-hd,ipeds-ef,ipeds-om,ipeds-gr,ipeds-c,ipeds-f,ipeds-sal,scorecard-fos), ameta.sourcesentry, and aVintageKeywhere they have one release year. - One fetcher. New NCES files use
fetchIpedsTable(scripts/lib/ipeds.mts): both NCES bases,_rvpreferred, headers upper-cased, the header check that fails on a missing column. - Normalize codes. Older files zero-pad codes and newer ones don't (verified: completions
AWLEVELis"05"in C2020_A and"5"in C2025_A). Parse codes as numbers. - Snapshot size.
data/schools.jsonis ~3.6 MB. Scalars and small objects go in the snapshot. Tables that are big per college (majors, home states, field of study) go in a new per-college detail file,data/detail/schools/{unitid}.json(decided 2026-09-28), not the history shard. History keeps its latest-point-equals-snapshot contract and year arrays; the detail file holds current snapshot tables only. Specified in majors.md and built by whichever of majors.md or residence.md ships first; field-of-study.md reuses it. - Missing is
null. IPEDS uses-1(not reported),-2(not applicable), and-3(not available). All becomenull, never 0. - Glossary. Every new term gets an entry in
lib/glossary.tsand a<Term>/<InfoTip>.
Considered and left out
| Item | Why not |
|---|---|
| Scorecard median family income | Year-prefixed values stop at 2016 (verified at Vanderbilt and Michigan); latest is stale |
Scorecard Title IV Pell completion (completion.title_iv.pell_recip.*) |
Stops at 2019. IPEDS GR Pell and OM Pell are current (graduation-by-group.md) |
| Cohort default rates | 3-year default rates are near 0 for recent cohorts (the 2020–23 repayment pause), so they mislead. Vanderbilt and Michigan show 0 for 2022–24 |
| Threshold earnings ("share earning more than $28k") | A single year of data (2014 key), so no history. Could join the outcomes section later as a snapshot |
| IPEDS 12-month enrollment (EFFY) | Unduplicated headcount over a year. Useful for community colleges, not for picking a 4-year college |
| IPEDS Academic Libraries (AL) | Library collections and spending. Low decision value |
| ACTS (IPEDS admissions supplement) | Not published; watched in data-page.md. It would add GPA for every college, and cds-admissions.md says how |