Model the role you need across eight axes, overlay the standard roles, read off the closest match.
What this tool is for
Scores for the reference roles are a shared vocabulary, not measurements. The tool says throughout which numbers are sourced, which are inferred and which nobody stated.
Product Role Navigator
Job titles in product work are not consistent. The same job goes by different names, and the same name covers very different work.
This tool describes what product roles in software development actually involve, across eight areas of skill — then matches a set of requirements, or a person, against twelve reference roles.
For anyone hiring for a product role, or weighing one up for themselves.
Choose the one that fits your situation. You can switch at any time.
Best viewed on a desktop PC.
Created by Stephan Wolschon. A thinking aid, not an assessment instrument.
Two features send text to Google; nothing else does. The job-posting analyser sends the advert you paste, and reading a profile from a CV sends the CV. Both need a language model, so both need a key. The radar, the profiles, the fit assessment, the level guide and everything you type into a slider stay on this computer, and always will.
index.html and open it from your own computer to use the analyser.Get a free key at aistudio.google.com — no credit card. The posting text is sent to Google when this is used. In the EEA, Switzerland and the UK, Google's paid-tier data terms apply to the free quota, so prompts are not used to train its models; elsewhere on the free tier, they are.
Free-tier allowances differ sharply by model: the Flash-Lite models currently give about 500 requests a day, the full Flash models about 20. List models asks Google which models your key can actually use, so you never have to guess an identifier.
Stored in this browser only. It is never written into the HTML file, so sending someone the file never sends them your key.
The screen that asks whether you are hiring for a role or sizing one up. Showing it again clears nothing else — the mode, both profiles, the rated position, panel state and the theme all survive, so there is no confirmation step.
Works with no key and no network — useful when this page is embedded and cannot reach an API. Copy the prompt, run it in any model you like, then paste its JSON reply back.
Where you are today, on the same eight axes.
Saves you setting eight sliders by hand. It reads your own CV and proposes values — nothing changes until you accept it, axis by axis.
The obvious move would be to score all twelve roles from that framework's role table rather than by hand. It does not work. It covers two of them, has no product owner, technical PM, growth PM or AI role at all, and states its levels as cumulative minimums per seniority tier — so a framework-derived Head of Product comes out a flat 5 on every axis. Profiles built that way nest inside one another instead of differing in shape, which is precisely the differentiation a radar exists to show.
The two sources also answer different questions. These scores describe what a role leans on day to day: a Head of Product is low on Process because they do not run ceremonies, not because they could not. The framework describes the floor someone must clear to hold the job. Both are useful; averaging them would be neither. Where the framework does speak to seniority, it appears in the Level guide as "Typical role at this level", read straight off the same framework table.
The 2026 taxonomy describes twelve roles in prose — focus, scope, interfaces and success metrics — but assigns no numbers. Seven roles carry scores from the original brief. The other five (Product Marketing Manager, Platform Product Manager, AI/ML Product Manager, Data Product Manager, AI Product Designer) are badged derived: their six values were read off that prose, and each one shows the reasoning in its role detail so you can disagree with it. Nothing here is measured.
Every role can be re-scored by hand, from Edit scores at the bottom of Role detail. An edited role is marked updated in the legend and the role list, its badge changes from Reference to Edited by you, and its original values are shown underneath so the change stays legible. Edits are yours alone — they are stored in this browser and travel with neither the file nor a link. Revert to original restores a single role; Reset all appears in the role list once anything has been changed.
Leaving a field empty marks that axis as not applicable to the role. It is then excluded from the fit calculation rather than counted as zero, and the role is drawn as an open shape rather than closed through a value it does not have.
Five bands, because two independent frameworks that describe professional competence both use five: the Dreyfus model of skill acquisition, and the European e-Competence Framework (EN 16234-1), whose levels e-1 to e-5 map approximately onto EQF levels 3–8. The e-CF grades its levels on three dimensions: autonomy (from responding to instructions to making personal choices), context complexity (from structured and predictable to unpredictable and unstructured) and behaviour (from able to apply to able to conceive).
| Scale | Dreyfus stage | Framework level |
|---|---|---|
| 1 | Novice | — (below Awareness) |
| 2 | Advanced beginner | Awareness |
| 3 | Competent | Working |
| 4 | Proficient | Practitioner |
| 5 | Expert | Expert |
That framework has four ascending levels, not five. Bands 2–5 line up with it and band 1 sits below its lowest descriptor. That offset is this tool's assertion — neither framework states it. Everything inside a band is quoted; only the alignment is ours.
The "Typical role at this level" line is read directly off that framework's product manager role table: it names the role levels that require exactly that skill level. A1–A5 map to product manager role levels; A6, A7 and A8 do not, because the framework does not require those skills of product managers.
The axis set changed. Technology and Design were one axis until they were split: the technical half rested on the framework's generic four-bullet descriptor welded to a designer's skill, and a posting strong on one and silent on the other produced a meaningless middle score. Splitting them made both properly sourced — 26 and 27 descriptor bullets against the old four. The AI axis was added at the same time, and is the only one on the page with no published source behind it. The re-scoring of all twelve roles across those three axes is ours, not a source's.
Tenure is the weakest signal on this page, and it is the one thing here that no framework will vouch for. SFIA states it plainly: "Time alone does not determine competency… Sustained performance over time is evidence of reliability, not a proxy for competence in itself." The Dreyfus model has no empirically validated timeframes for stage progression. Published product career ladders disagree with each other — one widely cited set puts Associate PM at 0–4 years, Senior PM at 3–5, Principal at 4–8 and Director at 10+, ranges that overlap and contradict.
One axis does not use those bands at all. Nobody can have eight years of experience shipping products on language models, because the practice is only a few years old — so A8's bands are scaled to the age of the field and computed from ChatGPT's release rather than written down, which stops them going stale as the field ages. Related work existed before that, but classical machine-learning product work is a different craft from the one these descriptors describe.
The tenure bands shown elsewhere in the guide are an indicative aggregate of those published ladders, marked with a dashed rule to signal that they are softer than everything beside them. Use the task descriptors and the role anchor to decide a level. Use years to sanity-check it, never to set it.
Every number on this page — your profile, a position, a reference role — is a level on the same scale. A profile at 4 describes someone who can work at that level; a position at 4 describes a job that needs someone who can. That is what makes subtracting one from the other mean anything.
This was not always true. The advert analyser originally scored how prominent an axis was in the text — "a major focus of the job" — while profiles and the level descriptors scored capability. The two were being subtracted from each other anyway. The analyser now scores the level a job needs, and is told outright that how much an advert talks about something is not the level it demands: one sentence asking you to own a three-year roadmap outranks three paragraphs about collaborating with designers.
The page reads two ways from the same engine. Sizing up a role, you analyse an advert and place yourself against it. Hiring for one, you rate what the job needs and read off which roles those requirements resemble — a shortlist, because titles are not a partition and two roles are often within half a point of each other.
For a profile C and a role S, over the n axes both actually define:
cumulative gap is Σ|Cᵢ − Sᵢ|, distance is √Σ(Cᵢ − Sᵢ)², and fit is
max(0, 100 × (1 − distance ⁄ √(n × 4²))) — a largest possible distance of 9.80 across six
axes, 8.94 across five.
Axes an advert never mentions are excluded rather than counted as zero, and the divisor shrinks with them. That has a consequence worth knowing: the fewer axes a posting speaks to, the higher any percentage looks, because the same distance is measured against a shorter ruler. A verdict is therefore withheld below five readable axes and below 60% fit.
It is also withheld for reasons that have nothing to do with the arithmetic. The analyser is asked three questions before it scores anything: whether the text is a job advert at all, whether the job is a product role, and whether the product is digital. A recipe, a careers article about a job family, and an advert for a heating engineer each fail the first two, and are shown and then dropped rather than loaded onto the radar. The third is subtler: a product manager for frozen food or for an insurance tariff is a real product manager, but these axes come from a digital-and-data framework and all twelve reference roles are software roles. Strategy, delivery, market and alignment carry across; technology, design and AI do not mean the same thing. Those readings are shown in full, without a percentage.
Each row also reports the cumulative gap and the widest single axis, because the
percentage alone cannot separate "off by a little everywhere" from "off by a lot in one place" — both
score 75%, at gaps of 6.0 and 2.45. RMSE is deliberately absent: it works out to
4 × (1 − fit/100), so it only restates the percentage.
docs/. Source of all twelve role descriptions: focus and horizon, operational scope, key interfaces and success metrics. It assigns no numeric scores.Everything here lives in this browser's localStorage, under keys prefixed prn: —
both profiles, the current mode, which panels are open, your edited scores, which role groups are
expanded, the theme, the landing gate, and — if you've added one — your Gemini key and chosen
model. Nine keys at most, nothing else; no cookies.
Measured rather than estimated, on a fresh browser that has just rated a
position on all eight axes with whole-number scores: three of those keys exist at that point — both
profiles, the mode and the landing gate — holding 231 bytes of values, or 262 bytes counting the key
names too. 221 of that is prn:profiles. It is a floor, not a ceiling: half-point scores,
naming a position, opening panels, editing role scores, adding a key — each brings its own bytes, and
some bring a key that did not exist before.
A third thing leaves on every visit, and nothing you click causes it: fetching this page contacts the server that hosts it, which sees your IP address and which page you asked for — as every web server does. That is the cost of the tool being a link rather than a file. Running the downloaded copy from your own disk avoids it entirely, and the tool works exactly the same.
Those AI calls: reading a CV, analysing a job advert, testing a key, and
listing models each send one request to generativelanguage.googleapis.com, carrying your
key in a header — never on load, only when you click the button that starts them. The prompt is not a
secret: Copy the prompt in the analyser shows the exact text it would send, before you send it.