Skip to content

Repository files navigation

MajorMatch

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.

Showcase

MajorMatch landing page, a data-driven way to choose a college major

What it does

  • 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.

Data sources

  • 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 into scripts/majors-list.json, so the app does not call Hugging Face at runtime. The generator at scripts/generate-majors.mjs assigns each name to a category and builds a profile (RIASEC vector, skill demands, value attributes, and category level career estimates), writing the result to src/majorsGenerated.js. Twenty three majors have richer, individually researched profiles that live directly in src/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.js and the career sheet in src/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/collegescorecard for field of study statistics, keyed by 4 digit CIP program codes. See src/scorecard.js. It ships with the shared DEMO_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 in localStorage, or set it manually by running localStorage.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.

Tech stack

  • 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

Getting started

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 preview

Project Structure

src/
  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.mjs

Scoring model in brief

Z(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.

Notes

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.

License

Released under the MIT License. See LICENSE.

About

A data-driven web app that scores all 333 college majors against your interests, skills, values, and work style, then returns a personal fit report backed by real labor-market and program data.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages