Case study · How it was built
Degree Pathways shows a college student what graduates of every major at their school actually earn, and the careers it opens, with each number a cited U.S. federal fact. Here's how it was built, and the decisions that kept it honest.
The one‑line version
A student picking a major faces an expensive, hard‑to‑reverse decision with nothing trustworthy to compare. Degree Pathways answers one question, what do graduates of this major at this school actually earn, and what careers does it open?, using only cited federal data, and it was built to refuse to ship a single number it can't source.
The problem worth solving
Picking a major is one of the most consequential and expensive choices an eighteen‑year‑old makes, and the usual tools are vibes, rankings, or an AI answer that sounds confident and might be wrong. The single risk the product exists to kill is presenting fabricated or stale numbers on a high‑stakes, expensive decision.
So the wedge was never “AI is wrong.” A cited answer can be perfectly right. The wedge is easy, apples‑to‑apples, no prompt‑crafting: pick a few fields, tap, and get consistent results grounded in what graduates actually earned. The job was to make trustworthy comparison the path of least resistance.
The constraints that shaped it
Built for a non‑technical audience (students and the parents helping them), safe for adults 18+, with zero personal data collected. It could never scrape, store, or redistribute a school's catalog. It had to run with no user API keys, no per‑use cost, and no capable‑hardware requirement.
Those rules collide, and naming the collision was the real early output: you can have (a) an AI that reads any catalog, (b) free‑to‑run with no key, and (c) no hardware floor for the user, but not all three at once. Everything downstream is a consequence of choosing which corner to give up. The answer that fell out of it: real published data only. Every on‑screen number must be a federal figure with its year and a link to verify.
The decisions, and what they cost
The product began as Class Pathways, aimed at term‑by‑term course plans. Adversarial QA checked generated plans against real published catalogs and found them fragmentary and wrong: credits that didn't reconcile, required courses missing, whole sequences inverted. The root cause was structural: catalog requirement data can't reconstruct a school's advised four‑year sequence. So it was cut.
↓ The insight that saved it: course‑level data failed, but program‑level federal data is complete, uniform for all ~6,000 U.S. schools, public domain, and terms‑safe. Class Pathways became Degree Pathways.Store facts, not prose: titles, codes, and figures, never copyrighted catalog text. Every number traces to a source federal record, and the app never computes its own dollar figures.
↓ The cost: a narrower promise. The gain: every claim is verifiable, and there's nothing to get sued over.A three‑stage validator (static scan, on‑screen render check, and derived‑value recompute) blocks any on‑screen dollar figure that doesn't trace to source federal data. It even blocks Math.random, so a “Surprise me” button uses the clock, not a fabricated number.
An earlier AI‑resilience badge was cut entirely. A risk ranking can steer a student away from a dream, and the future, especially with AGI, is genuinely unknowable. It was replaced with a neutral “What about AI?” note that ranks nothing.
↓ The product's job is to open doors, not close them for you.A hand‑built vanilla‑JS single‑page app: strict content‑security policy, pre‑baked federal JSON, no runtime database or AI, no login. Everything runs in the browser; nothing about the student is sent anywhere.
↓ Cheap to run, nothing to breach, and privacy is a property of the design rather than a promise.Explore everything free; a low, one‑time pass unlocks side‑by‑side compare and export. No ads, and no selling student contact information. The honest‑data positioning cannot coexist with selling student leads.
↓ The business model had to be as clean as the data.No citation, no course.
The hard part
The integrity gate, plus an offline scanner that quarantines every piece of ingested data (blocking injection, scripts, hidden characters, and leaked secrets), is what earns a student's trust. The discipline that made it trustworthy was boring on purpose: the validator repeatedly refused to ship. It failed a seed batch because per‑source links weren't attached (which is the gate proving it works), and it refused to write data whose federal award‑level codes didn't match the official codebook.
Earnings honesty took the same treatment. An early view showed a one‑, four‑, and five‑year earnings series, but those are separate graduating cohorts, so the five‑year figure could dip below the four‑year one and read like a pay cut. It was dropped. When a school's figure is withheld for too few graduates, it stays withheld and the national field number is shown, clearly marked; headline figures are rounded to the nearest thousand, with the exact published number alongside and in every tooltip.
If it isn't accurate in its entirety, it doesn't ship.
The hardest problem
Browsing was solved. Searching was not. A student does not type “Registered Nurses, 29‑1141.00”; she types nurse, or doctor, or cybersecurity. Two requirements pulled hard against each other: the box had to understand every word a student would actually type, and it had to never connect a career to a major the government does not connect. Loosen the matching and you invent pathways. Tighten it and half the vocabulary dead‑ends.
The resolution was to be strict about who gets to make each link. Turning a student's word into an occupation or a field is the government's own naming problem, and the government has already published the answer: O*NET's 22,437 alternate occupation titles, and every official CIP program title. Turning an occupation into a degree is the crosswalk's job, and only the crosswalk's. So the app bakes two sourced lookup maps, uses them purely to interpret the word, and then hands off to the federal crosswalk for the actual connection. A word nobody publishes resolves to nothing, and nothing is exactly what it shows.
Then the claim had to be proved at a scale no one can eyeball. A cross‑school harness now runs a corpus of student vocabulary against every school and reports each term as answered or dead‑ended; a render sweep loads all 8,900 field pages across all 142 schools and fails on any throw, blank card, or stray NaN; and the integrity gate recomputes 8,765 derived figures against their sources on every commit. Dead ends at the reference school fell from 73 to 25, every one of the survivors a term the federal data genuinely has no answer for.
What shipped
Built to travel
The whole explorer is mobile‑first: the same cited earnings, careers, and sources a student sees on a laptop, laid out as vertical metric cards. No account, no app store, nothing about them sent anywhere.
How it came together
What I'd tell the next person
Who pays for the compute, and on whose hardware, decides your whole architecture. Naming that triangle first saved months of building the wrong thing.
“If it isn't accurate in its entirety, it doesn't ship” sounds expensive. It's the cheapest call you'll make. It kills the bug class where a wrong number reaches someone making a real decision.
The decisions and trade‑offs that make a case study worth reading are invisible in the diff. Turn capture on from the start instead of reconstructing it at the end.
See it for yourself
Every number is a cited federal fact. Free to explore, no login, nothing saved about you.
Explore Degree Pathways →