{"description":"Every data source behind EducationGuide: what it feeds, which edition is live, when the next one is expected, and a machine-checkable rule for detecting it. detect.type: url_exists = the next file's URL returns 200; page_regex = fetch url, take capture group 1 of every match of pattern; compare 'gt' (numeric-aware, max match > liveValue) or 'differs' (first match ≠ liveValue); manual = a person checks (hint).","status_rules":"NEW if detected; otherwise OVERDUE if today is more than 2 months past nextExpected; otherwise DUE if the current month is in checkMonths; else OK.","methodology":"https://educationguide.com/how-we-score","sources":[{"id":"scorecard","name":"College Scorecard (institution and field-of-study files)","publisher":"U.S. Department of Education","scope":"national","feeds":"Net price by income, cost, admission rate, SAT/ACT (enrolled), graduation, earnings, debt, earnings by major","live":"June 2026 release (files dated 06102026)","liveValue":"06102026","checkMonths":[5,7,11],"nextExpected":"2027-06","detect":{"type":"page_regex","url":"https://collegescorecard.ed.gov/data/","pattern":"Most-Recent-Cohorts-Institution_(\\d{8})","compare":"differs"},"refresh":"python3 etl/download.py (new file names in etl/sources.py) → build_db → build_serving → reload D1 → deploy → qa:integrity. Convert cost/net price/earnings to year-keyed tables first (TODO).","docs":"docs/data-sources.md","disclosure":"Cost, net price, graduation, earnings and debt come from the U.S. Department of Education's College Scorecard (June 2026 release). Net prices are averages after grants for first-time, full-time students who received federal aid, so your price will differ. Earnings and debt cover only students who received federal aid; earnings are medians and don't predict any one person's pay.","license":"Public domain (U.S. government work)"},{"id":"ipeds_adm","name":"IPEDS Admissions (ADM)","publisher":"NCES, U.S. Department of Education","scope":"national","feeds":"Applicants, admits, enrolled, test policy, share submitting scores","live":"ADM2023 (Fall 2023)","liveValue":"ADM2023","checkMonths":[9,10,11],"nextExpected":"2026-10","detect":{"type":"url_exists","url":"https://nces.ed.gov/ipeds/datacenter/data/ADM2024.zip"},"refresh":"Download to data/raw/ (year-stamped name), python3 etl/build_db.py (or etl/load_history.py for ADM/C files) → python3 etl/build_serving.py → reload D1 → deploy → npm run qa:integrity","docs":"docs/data-refresh-calendar.md","disclosure":"Applicant counts and test policies come from IPEDS admissions data (Fall 2023), the newest the government has published.","license":"Public domain (U.S. government work)"},{"id":"ipeds_completions","name":"IPEDS Completions (C_A)","publisher":"NCES","scope":"national","feeds":"Degree mix labels (bachelor's share of awards)","live":"C2024_A (2023-24)","liveValue":"C2024_A","checkMonths":[9,10,11],"nextExpected":"2026-11","detect":{"type":"url_exists","url":"https://nces.ed.gov/ipeds/datacenter/data/C2025_A.zip"},"refresh":"Download to data/raw/ (year-stamped name), python3 etl/build_db.py (or etl/load_history.py for ADM/C files) → python3 etl/build_serving.py → reload D1 → deploy → npm run qa:integrity","docs":"docs/data-refresh-calendar.md","disclosure":"Degree-mix labels count each college's undergraduate awards by level (IPEDS completions, 2023-24).","license":"Public domain (U.S. government work)"},{"id":"ipeds_gr","name":"IPEDS Graduation Rates (GR)","publisher":"NCES","scope":"national","feeds":"Graduation detail","live":"GR2023","liveValue":"GR2023","checkMonths":[9,10,11],"nextExpected":"2026-10","detect":{"type":"url_exists","url":"https://nces.ed.gov/ipeds/datacenter/data/GR2024.zip"},"refresh":"Download to data/raw/ (year-stamped name), python3 etl/build_db.py (or etl/load_history.py for ADM/C files) → python3 etl/build_serving.py → reload D1 → deploy → npm run qa:integrity","docs":"docs/data-refresh-calendar.md","disclosure":"Graduation rates are for first-time, full-time students finishing within six years.","license":"Public domain (U.S. government work)"},{"id":"ipeds_ic","name":"IPEDS Institutional Characteristics (IC, IC_AY)","publisher":"NCES","scope":"national","feeds":"Cost-of-attendance items (books, housing, personal)","live":"IC2024 / IC2023_AY","liveValue":"IC2023_AY","checkMonths":[6,7,8],"nextExpected":"2026-07","detect":{"type":"url_exists","url":"https://nces.ed.gov/ipeds/datacenter/data/IC2024_AY.zip"},"refresh":"Download to data/raw/ (year-stamped name), python3 etl/build_db.py (or etl/load_history.py for ADM/C files) → python3 etl/build_serving.py → reload D1 → deploy → npm run qa:integrity","docs":"docs/data-refresh-calendar.md","disclosure":"Cost line items (books, housing, personal costs) are each college's own estimates reported to IPEDS (2023-24).","license":"Public domain (U.S. government work)"},{"id":"ipeds_hd","name":"IPEDS Directory (HD)","publisher":"NCES","scope":"national","feeds":"Names, locations, open/closed status","live":"HD2024","liveValue":"HD2024","checkMonths":[6,7,8],"nextExpected":"2026-07","detect":{"type":"url_exists","url":"https://nces.ed.gov/ipeds/datacenter/data/HD2025.zip"},"refresh":"Download to data/raw/ (year-stamped name), python3 etl/build_db.py (or etl/load_history.py for ADM/C files) → python3 etl/build_serving.py → reload D1 → deploy → npm run qa:integrity","docs":"docs/data-refresh-calendar.md","disclosure":"College names and locations come from the IPEDS directory (2024).","license":"Public domain (U.S. government work)"},{"id":"ipeds_ef","name":"IPEDS Fall Enrollment (EF A/C)","publisher":"NCES","scope":"national","feeds":"Enrollment, home states of first-year students","live":"EF2023A / EF2023C","liveValue":"EF2023A","checkMonths":[11,12,1],"nextExpected":"2026-12","detect":{"type":"url_exists","url":"https://nces.ed.gov/ipeds/datacenter/data/EF2024A.zip"},"refresh":"Download to data/raw/ (year-stamped name), python3 etl/build_db.py (or etl/load_history.py for ADM/C files) → python3 etl/build_serving.py → reload D1 → deploy → npm run qa:integrity","docs":"docs/data-refresh-calendar.md","disclosure":"Enrollment and students' home states come from IPEDS fall enrollment (Fall 2023).","license":"Public domain (U.S. government work)"},{"id":"ipeds_finance","name":"IPEDS Finance (F)","publisher":"NCES","scope":"national","feeds":"Endowment","live":"F2223","liveValue":"F2223","checkMonths":[11,12,1],"nextExpected":"2026-12","detect":{"type":"url_exists","url":"https://nces.ed.gov/ipeds/datacenter/data/F2324_F1A.zip"},"refresh":"Download to data/raw/ (year-stamped name), python3 etl/build_db.py (or etl/load_history.py for ADM/C files) → python3 etl/build_serving.py → reload D1 → deploy → npm run qa:integrity","docs":"docs/data-refresh-calendar.md","disclosure":"Endowment figures come from IPEDS finance data (fiscal 2022-23).","license":"Public domain (U.S. government work)"},{"id":"bls_oews","name":"BLS Occupational Employment and Wage Statistics","publisher":"U.S. Bureau of Labor Statistics","scope":"national","feeds":"Career wages (metro, state, U.S.)","live":"May 2025","liveValue":"2025","checkMonths":[3,4,5],"nextExpected":"2027-04","detect":{"type":"page_regex","url":"https://www.bls.gov/oes/tables.htm","pattern":"May (20\\d\\d)","compare":"gt"},"refresh":"Update year in etl/sources.py OEWS URLs → build_db → build_serving → reload → deploy","docs":"docs/data-sources.md","disclosure":"Career wages are for all workers in a job, not only recent graduates (BLS, May 2025).","license":"Public domain (U.S. government work)"},{"id":"bls_ep","name":"BLS Employment Projections","publisher":"U.S. Bureau of Labor Statistics","scope":"national","feeds":"Job growth outlook","live":"2025-35","liveValue":"2025","checkMonths":[8,9],"nextExpected":"2027-09","detect":{"type":"manual","hint":"bls.gov/emp: look for the 2026-36 projections"},"refresh":"Re-download occupation.xlsx → build_db → build_serving","docs":"docs/data-sources.md","disclosure":"Job growth figures are BLS 10-year projections (2025-35), not guarantees.","license":"Public domain (U.S. government work)"},{"id":"onet","name":"O*NET database","publisher":"U.S. Department of Labor (O*NET)","scope":"national","feeds":"Occupation descriptions and skills","live":"O*NET 31.0","liveValue":"31.0","checkMonths":[2,5,8,11],"nextExpected":"2026-11","detect":{"type":"page_regex","url":"https://www.onetcenter.org/database.html","pattern":"O\\*NET (\\d+\\.\\d) Database","compare":"gt"},"refresh":"Update version path in etl/sources.py → build_db","docs":"docs/data-sources.md","disclosure":"Occupation information from O*NET 31.0 (U.S. Department of Labor, CC BY 4.0).","license":"CC BY 4.0 (attribution required)"},{"id":"census_acs","name":"Census American Community Survey 5-year","publisher":"U.S. Census Bureau","scope":"national","feeds":"County demographics, rents","live":"ACS 2024 5-year","liveValue":"2024","checkMonths":[12,1],"nextExpected":"2026-12","detect":{"type":"url_exists","url":"https://api.census.gov/data/2025/acs/acs5.json"},"refresh":"python3 etl/download.py (needs CENSUS_API_KEY in .env.local) → build_db → build_serving","docs":"docs/data-sources.md","disclosure":"Local demographics come from the Census Bureau's American Community Survey (2024 5-year estimates).","license":"Public domain (U.S. government work)"},{"id":"bea_rpp","name":"BEA Regional Price Parities","publisher":"U.S. Bureau of Economic Analysis","scope":"national","feeds":"Cost of living","live":"2024","liveValue":"2024","checkMonths":[12,1],"nextExpected":"2026-12","detect":{"type":"manual","hint":"bea.gov → Regional Price Parities by State and Metro Area: look for 2025 data"},"refresh":"Re-download SARPP.zip / MARPP.zip → build_db","docs":"docs/data-sources.md","disclosure":"Cost-of-living comparisons use BEA regional price parities (2024).","license":"Public domain (U.S. government work)"},{"id":"hud_fmr","name":"HUD Fair Market Rents","publisher":"U.S. Department of Housing and Urban Development","scope":"national","feeds":"Local rent","live":"FY2027","liveValue":"FY27","checkMonths":[8,9],"nextExpected":"2027-09","detect":{"type":"url_exists","url":"https://www.huduser.gov/portal/datasets/fmr/fmr2028/FY28_FMRs.xlsx"},"refresh":"Update FMR URL in etl/sources.py → build_db","docs":"docs/data-sources.md","disclosure":"Rents are HUD fair market rents (FY2027), a benchmark, not listings.","license":"Public domain (U.S. government work)"},{"id":"census_pseo","name":"Census Post-Secondary Employment Outcomes","publisher":"U.S. Census Bureau (LEHD)","scope":"national","feeds":"Reference only (no Florida coverage)","live":"R2026Q2","liveValue":"2026Q2","checkMonths":[1,4,7,10],"nextExpected":"2027-01","detect":{"type":"page_regex","url":"https://lehd.ces.census.gov/data/pseo/","pattern":"R(20\\d\\dQ\\d)","compare":"gt"},"refresh":"python3 etl/download.py → build_db","docs":"docs/data-sources.md","disclosure":"Census PSEO earnings (experimental) are used only where a college participates.","license":"Public domain (U.S. government work)"},{"id":"urban_portal","name":"Urban Institute Education Data Portal (FSA, default rates, EADA)","publisher":"Urban Institute","scope":"national","feeds":"Loan default rates, athletics","live":"FSA 2021; default cohort 2017; EADA 2021","liveValue":"0","checkMonths":[1,4,7,10],"nextExpected":"2027-01","detect":{"type":"page_regex","url":"https://educationdata.urban.org/api/v1/college-university/fsa/grants/2022/","pattern":"\"count\":\\s*(\\d+)","compare":"gt"},"refresh":"python3 etl/download.py (Urban endpoints) → build_db","docs":"docs/data-sources.md","disclosure":"Loan default rates and athletics data: Urban Institute Education Data Portal (ODC-By 1.0).","license":"ODC-By 1.0 (attribution required)"},{"id":"fema_nri","name":"FEMA National Risk Index","publisher":"FEMA","scope":"national","feeds":"Natural hazard ratings","live":"December 2025 (1.20.0)","liveValue":"1.20.0","checkMonths":[12],"nextExpected":"2026-12","detect":{"type":"manual","hint":"hazards.fema.gov/nri → Data resources: version number"},"refresh":"python3 etl/download.py (FEMA endpoint) → build_db","docs":"docs/data-sources.md","disclosure":"Hazard ratings are FEMA National Risk Index county ratings.","license":"Public domain (U.S. government work)"},{"id":"noaa_normals","name":"NOAA U.S. Climate Normals","publisher":"NOAA NCEI","scope":"national","feeds":"Climate","live":"1991-2020","liveValue":"1991-2020","checkMonths":[],"nextExpected":"2031-06","detect":{"type":"manual","hint":"Next normals (1991-2030 or 2001-2030) expected around 2031"},"refresh":"python3 etl/download.py → build_db","docs":"docs/data-sources.md","disclosure":"Climate figures are NOAA 30-year normals (1991-2020).","license":"Public domain (U.S. government work)"},{"id":"fl_sus_counselor_guide","name":"Florida State University System Counselor Guide (admitted-student matrix)","publisher":"State University System of Florida (matrix by FIU)","scope":"FL","feeds":"Admission chances: admitted middle-50% GPA/SAT/ACT/CLT, summer and fall, 12 universities","live":"2026-27 guide (admitted 2026)","liveValue":"2026","checkMonths":[8,9,10],"nextExpected":"2027-09","detect":{"type":"page_regex","url":"https://www.floridashines.org/average-university-freshmen-profile","pattern":"(20\\d\\d) Board of Governors","compare":"gt"},"refresh":"Find the PDF (search \"Florida SUS 2027-2028 Counselor Guide\"), save to data/raw/admitted_profiles/, key pages 12-13 into etl/reference/admitted_profiles.csv as a new source_id → python3 etl/admit_profiles.py → build_serving → reload → deploy","docs":"docs/admitted-profiles.md","profilePrefix":"fl_sus_counselor_guide_","disclosure":"For Florida public universities, admission comparisons use the middle 50% of ADMITTED students from the State University System's 2026-27 Counselor Guide. Their GPAs are weighted and recalculated by each university from core courses, so your school's weighted GPA may differ. Summer-start admits are shown separately.","license":"Public publication; facts cited with source"},{"id":"va_schev_b10","name":"Virginia SCHEV B10 First-Time Freshman Profile","publisher":"State Council of Higher Education for Virginia","scope":"VA","feeds":"Admission chances: entering students' GPA/SAT/ACT percentiles, ~40 public and private colleges","live":"2025-26 and 2026-27","liveValue":"2627","checkMonths":[9,10,11],"nextExpected":"2027-10","detect":{"type":"page_regex","url":"https://research.schev.edu/rdPage.aspx?enrollment&rdReport=Enrollment.B10_FreshmanProfile","pattern":"VALUE=\"(\\d{4})\"","compare":"gt"},"refresh":"python3 etl/fetch_schev_b10.py 2027-28 → python3 etl/admit_profiles.py → build_serving → reload → deploy","docs":"docs/admitted-profiles.md","profilePrefix":"va_schev_b10_","disclosure":"For Virginia colleges, comparisons use GPA and test-score percentiles of students who ENROLLED in fall 2026, as reported to the State Council of Higher Education for Virginia (SCHEV), not of everyone admitted. SCHEV doesn't say whether GPAs are weighted, so a GPA above a college's range doesn't by itself make it likely. We drop ranges reported by fewer than 20 students and correct obvious source errors; each correction is listed below.","license":"Public state data; facts cited with source"},{"id":"ca_uc_admit","name":"University of California first-year admit data (each campus)","publisher":"University of California Office of the President","scope":"CA","feeds":"Admission chances: admitted middle-50% GPA, 9 UC campuses","live":"Fall 2026 admits","liveValue":"2026","checkMonths":[6,7,8],"nextExpected":"2027-08","detect":{"type":"page_regex","url":"https://admission.universityofcalifornia.edu/campuses-majors/berkeley/first-year-admit-data.html","pattern":"class for fall (\\d{4})","compare":"gt"},"refresh":"python3 etl/fetch_uc_admit.py → python3 etl/admit_profiles.py → build_serving → reload → deploy","docs":"docs/admitted-profiles.md","profilePrefix":"ca_uc_first_year_admit_fall_","disclosure":"For University of California campuses, comparisons use the middle 50% GPA of students ADMITTED for fall 2026, published by UC. UC calculates its own weighted GPA (grades 10-11, honors points capped), which can be lower than your school's weighted GPA, and does not consider SAT or ACT scores.","license":"Public publication; facts cited with source"}]}