Product  ·  Case Study

How I Built
TryCareerMatch

From a personal frustration to a live product: the decisions, trade-offs, and lessons from building TryCareerMatch end-to-end.

Product Management Full-Stack Scoring Engine UX Design
9 min read

TryCareerMatch started as a personal problem. After years of working across design, digital marketing, and financial analysis, I found myself struggling to answer one deceptively simple question: which product roles actually fit my background? Job descriptions were written for archetypal candidates, not for people whose skills had been built across multiple fields. Standard career tools gave me personality types and generic advice. None of them looked at what I could actually do and mapped it to what specific roles required.

So I built it myself. First as a quick client-side prototype to test whether the idea even worked, then, once it clearly did, as a proper full-stack product. What follows is the honest account of how that happened: the problem, the product decisions, the trade-offs, and what I'd still change.

Discovery

The problem: skills without a map

The core frustration was this: most career discovery tools either tell you what you are (a personality type, a strengths profile) or show you what's available (job listings). Neither answers the question that actually matters for a career transition: given what I can do, which roles am I closest to, and which skills are holding me back?

The people who feel this most acutely are professionals with non-linear or cross-functional backgrounds. Specialists fit neatly into their category. Generalists, career changers, and people who've built skills across multiple domains are left to piece together their own map.

What existing tools offer
Personality-type quizzes (MBTI, CliftonStrengths)
Generic role suggestions ("You might like Marketing")
Job boards filtered by title or keyword
Salary benchmarks by role and location

Useful, but none of them take your actual profile as input.
What TryCareerMatch does instead
Builds a full profile from education, experience, skills, interests
Maps it against 85+ roles across 10 sectors
Ranks matches as Ready now, With upskilling, or Long-term
Shows the specific skills to develop for a target role

No personality test. No registration. Profile in, matches out.
The framing that made the product click: stop thinking about "what type of person are you?" and start asking "which roles value what you've already built?" These are very different questions with very different answers.
Product Concept

The core decision: mapping, not matching

Early in the design process, I had two competing models in mind.

The first was a quiz approach: ask users a series of questions about how they like to work, what energizes them, and how they handle conflict. This is what most career tools do. It's engaging, but it produces personality profiles, not capability-to-role mappings. And it's inherently subjective; people answer based on self-perception, not what they can do.

The second was a capability approach: have people describe what they've actually done (education, experience, the skills they hold and how strong they are, plus their interests and work style), then score that against a model of what each role needs. Less of a personality test, far more useful. That's what I built.

125+ Skills
Organised into 11 groups (data, finance, product, design, management, and more). Users pick the ones relevant to them rather than rating all 125+, enough coverage to be meaningful without the fatigue.
85+ Roles
Specific enough to be useful. "Product Manager" and "Product Owner" are separate entries with distinct profiles. Covers 10 sectors from Tech to Finance to Government.
Zero Registration
No account, no email, no signup. The core report is free, with optional paid add-ons on top. Anonymous per-browser sessions preserve your progress without ever asking who you are. The principle: value in the moment of use, so nothing stands between the user and their result.
Scoring Engine

Designing the scoring system

The hardest part of TryCareerMatch was never the interface. It was the scoring. Every one of the 85+ roles needs an importance profile: which skills are core, which are merely adjacent, which are non-negotiable "must-haves", plus the education and experience typically expected. That's thousands of judgment calls, each grounded in real job descriptions.

Within a role, each skill carries an importance level that reflects how much it actually moves the needle.

Weight 0
Not relevant. Having this skill doesn't improve the match for this role. Example: 3D Visualisation for a Financial Analyst role.
Weight 1
Helpful. A minor positive signal, useful context but not expected. Example: basic SQL for a Product Manager role.
Weight 2
Important. The role benefits significantly from this skill. Most hiring managers would expect it. Example: Excel Advanced for a Financial Analyst.
Weight 3
Core requirement, often a must-have. This is what the role is fundamentally about. Absence is a significant red flag. Example: Variance Analysis for a Financial Controller.

On top of those skill weights, the engine scores four weighted blocks (core skills 50%, adjacent skills 20%, education 15%, and experience 15%) and then adjusts the result: it penalises missing must-have skills, infers behavioural skills from the profile, aligns interests using a RIASEC model, and lets strong education and experience compensate for one another. The output is a 0–100 fit score per role, grouped into Ready now, With upskilling, and Long-term tiers. It's a rule-based engine, deterministic and explainable, with no LLM in the loop.

The most important calibration decision was role differentiation. If PM and PO had nearly identical profiles, the tool would produce nearly identical scores for both, which is useless. The distinctions have to be sharp enough to be meaningful while still being accurate to what those roles actually require.

That skeleton is the original design. What made it genuinely trustworthy on hybrid and partial profiles came later, through two audit passes that re-calibrated the engine. Four refinements mattered most.

Monotonic, capped penalty
Missing must-have skills scale the score down, with one missing ×0.85, two ×0.70, three or more ×0.55, and a floor. Crucially it's monotonic: acquiring a skill can never lower your score. An earlier version could, which is exactly the kind of bug that quietly destroys trust.
Top-N core saturation
A candidate is measured against a role's six most important core skills (must-haves always included), not the whole list. Without this, once a role's core grew to eight or ten skills, a strong-but-partial profile (a senior with six excellent skills) collapsed, and nothing ever read as "ready now."
Behaviour needs evidence
A work-style preference only counts when it actually deviates from neutral. Universal defaults are excluded from scoring, so "soft" roles don't get inflated equally for everyone; the signal has to be real to move the result.
Order of operations
The interest bonus is applied before the must-have penalty, so a great interest fit can't rescue a role you're not qualified for. Strong experience can compensate for missing education, and hard filters rule out roles below a mandatory education or seniority bar.
The role data and scoring rules are the core of the product. Getting them right took research into job descriptions, conversations with people in those roles, and many rounds of calibration. It's also where AI was most useful, not to replace judgment but to accelerate the research phase significantly.
Career Archetypes

Naming who you are, not just ranking roles

The original problem was that career tools assume you fit a clean archetype. The answer I landed on has a nice irony to it: give people a hybrid archetype, a single, memorable identity that sits at the top of the report, above the role ranking. There are eleven archetypes, built from five career forces: Insight, Craft, Market, People, and Order.

What makes it more than a personality badge is how it's derived. The forces are never asked. They're inferred from the same profile the user already filled in. Each skill group and each experience domain maps to a force; the engine ranks them, and the top two combine into a "bridge" (ten of those). If a third force is strong enough, you become the eleventh, The Polymath.

Skills lead, experience reinforces
Skills are the primary signal; experience adds weight at a lower rate. Each force only counts its top five skills, so a force that simply has more entries in the taxonomy can't win on volume alone.
Behavioural skills carry no identity
Anything inferred for everyone is deliberately excluded. If it's universal, it can't define who you are. Identity has to come from what actually distinguishes you.
It admits uncertainty
An archetype needs at least two forces with real signal. Below that it returns nothing and nudges you to complete more of your profile, rather than inventing an identity from noise. Every result carries a confidence level, and "high" requires the second force to be a genuine pillar, not a sliver.
Purely additive
The archetype reads the same scoring snapshot and never changes a single role score. It's a lens on the result, not a thumb on the scale, which keeps the matching honest and the identity layer cleanly separate.

It also turned out to be the product's best share hook. "I'm The Architect" travels in a way a ranked list never could, so each archetype gets its own page and a shareable card carrying the user's personal force fingerprint, doing the word-of-mouth work the assessment itself never could.

UX & Interface

The interface decisions that shaped the experience

The landing page makes a three-step promise: profile, score, matches. The form behind it is a six-screen wizard, auto-saved as you go, with no account in sight. That gap is deliberate: the promise sets a low bar for starting; the six screens are where the accuracy comes from. The challenge was capturing enough signal (education, experience, skills, interests, work style) without it ever feeling like paperwork.

01
A six-step guided flow
Education · Experience · Skills · Interests · Work Style · Review. One focused step at a time, with a progress indicator, so a fairly detailed profile never feels overwhelming.
02
Pick skills, then rate them
Instead of rating all 125+ skills, users search and select the ones relevant to them (with suggestions), then set proficiency only on those. Less fatigue, better signal. Inputs use segmented pills, steppers, chips, and selectable cards, not endless sliders.
03
Tiered results
Matches are grouped into Ready now, With upskilling, and Long-term goals, so users see both where they fit today and where they could grow, instead of a single flat ranking.
04
Breakdown & skill gaps
Each match opens a per-dimension score breakdown and a "top skills to develop" list, turning a discovery result into a concrete, actionable next step.

The feature I most wanted at the start (a per-role skill-gap view) is now built in: every match shows the skills that would most improve it. That's what turns TryCareerMatch from a discovery tool into an active development one.

Build & Launch

Stack, the rebuild, and what AI changed

The first version was deliberately minimal: vanilla HTML, CSS, and JavaScript, with all the scoring logic running client-side. That was exactly the right call to validate the idea quickly and cheaply. Once it proved genuinely useful, I rebuilt it as a full-stack product so the engine could grow.

The current stack: a Next.js 15 + TypeScript + Tailwind frontend on Vercel, a FastAPI + async SQLAlchemy backend on Railway, and PostgreSQL (Neon) for the roles, the 125+ skill taxonomy, and the importance profiles. The scoring engine now runs server-side, which let it carry far more than a single client-side script ever could.

From prototype to full-stack
v1 was a client-side prototype to test the concept. v2 is a server-side engine with a real database, with room for must-have penalties, interest alignment, and the richer, tiered reports that didn't fit in the original script.
AI as a build accelerator
Claude accelerated the work throughout, across role and skill data, scoring-rule design, scaffolding, and debugging. In the product, the matching and ranking use no LLM. The free report's narrative is rule-based and deterministic; a newer paid report tier optionally uses Claude for a deeper narrative on top of the same scores.

Launch was quiet by design. I shared it in a few communities where the problem resonated (professionals in career transition, people with non-linear backgrounds) and let organic sharing do the rest. The no-registration model makes sharing frictionless: send someone a link, they use it immediately, no account required.

Retrospective

What worked, what I'd change

TryCareerMatch has had real users and real sessions. More importantly, it solved the problem I originally had, and I've heard from others who found it genuinely useful for their own career thinking. That's the metric that matters most at this stage.

But honest retrospectives require acknowledging what I'd still do differently. A few things stand out:

What worked: zero friction
The no-registration decision was correct. Completion rates are meaningfully higher than I'd expected for an assessment this detailed. When there's no account to create, users commit to the task instead of deferring it.
What worked: role specificity
Keeping roles specific (not collapsing "Product Manager" and "Product Owner" into one) generated much richer results for users with nuanced backgrounds. The granularity was worth the extra calibration effort.
What worked: the rebuild
Moving the engine server-side was worth it. A real backend and database made room for must-have penalties, interest alignment, and the tiered, broken-down reports, none of which fit comfortably in the original client-side script.
What worked: saved results
This started as a gap I'd flagged, and it shipped. Users can now save their profile via a passwordless magic-link email and return to their results later, without redoing the six-step assessment.
What I'd change: side-by-side compare
Users weighing two close matches still have to flip between them. A compare view (two roles, their score breakdowns and skill gaps next to each other) would make the "which one?" decision much easier.
What I'd change: broader coverage
85+ roles across 10 sectors cover a lot, but there are gaps, like more niche and emerging roles, and better localisation of titles and expectations by country.
The most useful retrospective question: "if I started over today, knowing what I know, what would I change in week one?" For me: design the scoring around a database from the start. The client-side prototype was perfect for proving the idea, but the real product always wanted a backend, and building toward that earlier would have saved a full rebuild.

See it live

Map your profile against 85+ roles across 10 sectors. Free, no registration required.