College Pilot

읽는 데 1분

대학 후보 목록을 한 곳으로 좁혀 가는 데이터 기반 PWA입니다. 캠퍼스마다 방문 가이드가 붙고, 학자금 지원 계산기는 까다로운 경우(부모가 이혼한 경우의 소득 산정 등)까지 처리하며, 나란히 놓인 비교표가 숫자를 한자리에 모아 줍니다. 결정 보드는 캠퍼스 투어 당일에 매긴 점수를 순위가 매겨진 최종 후보로 정리해 줍니다.

열어 보기 · 소스

내부 구조

프로젝트 README(영어).

A data-driven PWA for narrowing a college list to one: a full campus-visit guide per school, a financial-aid estimator with divorced-parent handling, a side-by-side comparison table, and a Decision Board that turns tour-day ratings into a ranked shortlist.

Live site: https://pfeilbr.github.io/college-pilot/

Schools covered

  • University of Delaware (Newark, DE)
  • Penn State — University Park (State College, PA)
  • University of Pittsburgh (Pittsburgh, PA)
  • Rutgers University–New Brunswick (New Brunswick, NJ)
  • Ohio State University (Columbus, OH)
  • Michigan State University (East Lansing, MI)
  • Indiana University Bloomington (Bloomington, IN)
  • University of South Carolina (Columbia, SC)
  • UMass Amherst (Amherst, MA)
  • Fordham University (New York, NY)
  • Northeastern University (Boston, MA)
  • Tufts University (Medford/Somerville, MA)
  • Boston University (Boston, MA)

The five Big Ten / SEC business flagships (Rutgers, Ohio State, Michigan State, Indiana, South Carolina) were added as “likely” peers to the two the student favors — Penn State and Pitt — and are surfaced in a Recommended matches section on the hub.

Features

  • 🏠 Hub with school cards + a 13-metric comparison table
  • ⭐ Decision Board — per-school verdicts (shortlist/undecided/pass), 8-category star ratings, and visit notes, saved in localStorage and ranked on the hub
  • 💰 Aid Estimator — income brackets × FAFSA-only vs CSS-both-parents rules, net-price planning ranges sorted cheapest-first, PA grant portability notes
  • 📊 Per-school guides with identical sections for apples-to-apples comparison
  • 💼 Business-program deep-dives with hiring rates and salaries
  • 🗣️ Real student sentiment from archived Reddit threads, clearly labeled
  • 📱 Responsive PWA: home-screen install, offline support, in-app update button

Architecture (data-driven by design)

index.html        hub (Decision Board, Aid Estimator, cards, compare)
school.html       empty shell — renders any school from its data file
app.js            renderer + shared UI (drawer, ratings, spy, tooltips)
styles.css        the whole design system (per-school color via --sc)
data/<id>.js      one authored guide per school  ← add schools here
data/generated/   machine-fetched official stats  ← refresh via script
scripts/          deterministic data fetchers (no LLM needed)

Each data/<id>.js registers window.SCHOOLS['<id>'] with: identity/colors, hero stats, hub-card fields, contact links, and a sections array of {id, nav, kicker, title, lead, html} — the renderer builds the page and navigation from whatever sections exist, so schools can differ freely.

Adding a school

  1. Add its IPEDS UnitID to scripts/fetch_school_data.py (find IDs at nces.ed.gov/collegenavigator) and run the script — official stats land in data/generated/scorecard.json deterministically, no AI tokens needed.
  2. Copy an existing data/*.js as a template; fill in the editorial sections using the generated stats + the school’s official pages.
  3. Add the id to window.SCHOOL_ORDER (in data/delaware.js), add a <script> tag in both HTML files and sw.js’s asset list, and add a row to the Aid Estimator DATA array in index.html.

Refreshing stats (deterministic, free)

python3 scripts/fetch_school_data.py            # DEMO_KEY, rate-limited
API_KEY=... python3 scripts/fetch_school_data.py  # free key from api.data.gov

Pulls acceptance rate, SAT bands, enrollment, demographics, tuition, net price by income bracket, debt, graduation/retention, and 10-year earnings from the U.S. Dept. of Education College Scorecard API for every school in the list.

Feature roadmap (researched against Niche, BigFuture, Scoir, Corsava, CollegeVine, Naviance)

  • Weighted scoring matrix with sliders (re-rank live as priorities change)
  • Corsava-style preference card sort (Must Have / Nice / Don’t Care / No Way) that seeds the matrix weights
  • Reach/target/safety badges + Naviance-style scattergram from stored GPA/SAT vs. each school’s middle-50%
  • Head-to-head elimination rounds with recorded “why” lines
  • Visit-day journal with photos; student vs. parent dual gut-scores
  • Deadline countdown board; printable decision report export

Run locally

python3 -m http.server 8000
# open http://localhost:8000

Data compiled July 2026 from public sources (Common Data Sets, official admissions/aid pages, College Scorecard, U.S. News, Niche, Pullpush Reddit archive). Verify current figures with official sources before decisions.

새 가이드와 강좌를 이메일로 받아 보세요

새 가이드나 강좌, 글을 올릴 때 가끔 이메일을 보내 드립니다. 스팸은 보내지 않으며, 언제든지 구독을 해지할 수 있습니다. 이메일은 영어로 작성됩니다.

Buttondown으로 발송됩니다. 이메일 주소는 절대 공유하지 않습니다. 피드가 더 편하신가요? RSS 피드를 이용하세요.