← Back to CareerStar
CareerStar · System Architecture

Rate careers like stocks — one app, defensible by design

A single full-stack Next.js app with a deterministic scoring engine at its core. An LLM explains the score; it never computes it. Free-text is treated as data, not instructions. Stateless, no database, deployed on AWS.

Offline data pipeline · runs once on the author's machine
BLS
growth + pay · public domain
O*NET-SOC
occupation codes
Eloundou
AI exposure · MIT
join
Crosswalk + join
on SOC-2018 codes
data.json
committed dataset
Runtime · Next.js 16 app on AWS Amplify
Browser UI
single screen · free-text
POST
Security gate
validate · cap · rate-limit
Scorer
pure · deterministic · 0–100
score
Claude Haiku
explanation only
Score cards
+ why + redirect
Deployment
AWS Amplify
SSR · CI/CD
Route 53
custom domain
Auto HTTPS
managed TLS
Env secrets
server-side only

Architecture decisions7 invariants

AD-1
One Next.js app, TypeScript end to end
Prevents a needless second service.
AD-2
Scorer is pure; the UI only renders
Prevents two sources of truth drifting.
AD-3
Join offline, read at runtime
Prevents fragile in-request data joins.
AD-4
The LLM explains, never decides
Prevents the thin-wrapper failure.
AD-5
Free-text is data, not instructions
Prevents prompt injection + cost abuse.
AD-6
Stateless — no accounts, no DB
Prevents unneeded data-governance surface.
AD-7
AWS Amplify + Route 53, auto HTTPS
Prevents ops sprawl + insecure config.
Next.js 16 · TypeScriptClaude · claude-haiku-4-5Data: BLS · O*NET · Eloundou 2023Deploy: AWS Amplify + Route 53