MajorMatch is a data driven web app that helps students choose a college major. You answer a short assessment about your interests, skills, values, career priorities, and preferred work style, and a mathematical model scores all 333 majors against your profile, then returns a personal fit report with your top matches, your strengths and growth areas, and every major sorted into fit tiers.
Each major and each career links through to a detail page with real labor market data, and the college availability section pulls live program level statistics from the U.S. Department of Education.
- Six dimension scoring model. Every major is scored on RIASEC interests, hard skills, soft skills, values, labor market outlook, and work style. Each component is standardized across all majors with a z score, so the final scores spread widely instead of clustering in the middle. Optional dealbreakers (for example no graduate school, no heavy math, no clinical settings) multiply a major's score down when it trips one.
- Personal fit report. Holland code summary, a six axis interest chart, strengths and growth areas, top values, and a plain language takeaway.
- Full classification. All 333 majors ranked and grouped into fit tiers from excellent to weak, each with its exact percentage.
- Major detail pages. Labor market data, the interest and skill profile the major rewards, jobs graduates take, and a college and program availability guide.
- Job detail pages. Pay at roughly year 1, year 5, and year 10, the Bureau of Labor Statistics growth outlook, and the majors that lead to that job.
- Live college data. The availability section fetches program level tuition, graduation rate, cohort size, and post graduation earnings from the College Scorecard API, filterable by state.
- Major list from the Hugging Face dataset
bobby-nakamoto/yama-majors. The catalog of 333 major names comes from this dataset (https://huggingface.co/datasets/bobby-nakamoto/yama-majors). The names were fetched once and baked intoscripts/majors-list.json, so the app does not call Hugging Face at runtime. The generator atscripts/generate-majors.mjsassigns each name to a category and builds a profile (RIASEC vector, skill demands, value attributes, and category level career estimates), writing the result tosrc/majorsGenerated.js. Twenty three majors have richer, individually researched profiles that live directly insrc/data.js. - Career figures from the U.S. Bureau of Labor Statistics. Median wages, wage
percentiles, and 2023 to 2033 employment projections behind the outlook scores
and job pages are BLS national figures (Occupational Employment Statistics and
Employment Projections), stored in
src/jobs.jsand the career sheet insrc/data.js. Roughly 55 common occupations carry real BLS values with SOC codes. The rest use clearly labeled category level estimates. - Live program data from the U.S. Department of Education College Scorecard API.
The college availability section queries
https://api.data.gov/ed/collegescorecardfor field of study statistics, keyed by 4 digit CIP program codes. Seesrc/scorecard.js. It ships with the sharedDEMO_KEY, which is rate limited to about 30 requests per hour. To use your own free key, get one at https://api.data.gov/signup and the app will store it inlocalStorage, or set it manually by runninglocalStorage.setItem('scorecard_api_key', 'YOUR_KEY'). - Tuition baselines and program guidance. National average tuition figures are
College Board 2024 to 2025 published averages, and the accreditation, cost,
internship, and graduation guidance per field lives in
src/collegeInfo.js.
Category level profiles for the generated majors are heuristic estimates, not per school measurements. The app points users to the College Scorecard field of study pages to verify specifics for any given program.
- React 19 and Vite
- Tailwind CSS 4
- Framer Motion for step transitions and animated result cards
- GSAP for the score count up
- Three.js for the particle background
Requires Node 18 or newer.
# install dependencies
npm install
# start the dev server (http://localhost:5173 by default)
npm run dev
# build for production
npm run build
# preview the production build
npm run previewsrc/
App.jsx UI: assessment steps, results, report, detail pages, routing
model.js scoring model (z score standardization, dealbreakers)
data.js questions, 23 hand tuned majors, career sheet, work style profiles
majorsGenerated.js 310 generated major profiles (auto generated, do not edit by hand)
collegeInfo.js per category college and program guidance, tuition baselines
scorecard.js College Scorecard API client (CIP mapping, caching)
jobs.js occupation profiles with BLS wages and growth
ThreeBackground.jsx Three.js particle background
public/
favicon.svg, icons.svg Static assets served as-is
index.html Vite entry point
vite.config.js Build configuration
scripts/
majors-list.json 333 major names from the Hugging Face dataset
generate-majors.mjs builds src/majorsGenerated.js from the name list
To regenerate the major profiles after editing the generator, run the generator script.
node scripts/generate-majors.mjsZ(m) = 0.30 z(Interest) + 0.16 z(HardSkills) + 0.10 z(SoftSkills)
+ 0.16 z(Values) + 0.13 z(Outlook) + 0.15 z(WorkStyle)
Score(m) = clamp(50 + 21 Z, 2, 99) x 0.62 ^ (dealbreakers hit)
Standardizing each component before weighting means alignment in a dimension where majors genuinely differ counts for more than alignment in one where every major looks alike, which is what produces the wide spread between scores.
The College Scorecard section needs network access to api.data.gov. Everything else, including all major and job data, runs fully offline once dependencies are installed.
Released under the MIT License. See LICENSE.
