How I measured this.
A plain-English walkthrough of the score, the council of models behind it, the data I relied on, and what the numbers do not measure.
What this is
Merlin is my attempt to look at how AI is changing work, one task at a time. Every occupation in the dataset, across the United States, Australia and Czechia, has been broken into the individual tasks that make it up, and a council of language models has been asked the same question of each of them: how much of this can a machine already do? The number that results is not my forecast of who keeps their job but a portrait of how the work is composed, and how much of that composition has already shifted.
The editorial frame I chose is job change, not job loss. A registered nurse, a paralegal and a bus driver are all in occupations that have changed, but the texture of that change looks utterly different across the three, which is why the score sits next to the tasks it was built from rather than standing on its own: every reader can search their own role and see, task by task, what is shifting underneath it.
The score, plainly
Every occupation is broken into its component tasks, and each task is rated as fully automatable (1), partially augmentable (0.5), or fundamentally human (0). The merlin score for the occupation is the arithmetic mean across all those tasks, which falls somewhere between 0 and 1.
That is the entire formula. A score of 0.43 means that, averaged across every task in the role, just under half of the work is something a machine can already do on its own or in concert with a person. The number is not a job-loss percentage: it does not mean that 43% of the people in that occupation are about to lose their job, nor that 43% of any one person's day has already been automated. It is a statement about the composition of the work itself, averaged over the tasks the occupation is built from.
The page carries a worked example later on, drawn from a real occupation where the council disagreed (see A worked example below). I have also included an importance-weighted view of the same score that lets each task count by how central it is to the role rather than equally; the toggle for it sits directly beneath this paragraph.
Weighted = each task counts by its O*NET importance. Unweighted = each task counts equally.
The council
No single model decides what a task is rated. I designed the scorer as a council of three open language models, all served via OpenRouter, where each model reads the same one-line task description and returns its own vote of full, partial or human: Gemma, Llama and Mistral. The final rating for the task is whichever label two of the three agreed on, and when all three split the task is recorded as partial, which is a default that follows from the underlying claim that genuine middle-ground and council-level uncertainty produce the same shape on the page even though they arrive there by different routes. The disagreement itself is preserved on the row, so that a reader looking at any particular task can see where the council was confident and where it was hedging.
Every one of the 41,875 tasks in the dataset was scored this way. No task on the site carries a "bypass" rating inherited from its source data, even though two of the source datasets (JSA and ILO) originally arrived with provisional GenAI exposure scores attached. I stripped those scores before letting the council near the tasks, and the council voted on them all from scratch.
Where the data comes from
I built the dataset from three differently-sourced inputs, all run through the same council scorer. O*NET supplies the US occupations and their task statements; OSCA and JSA between them supply the Australian occupations and tasks; NSP and ILO between them supply the Czech equivalents. The scoring lens is the same across all three, but the input taxonomies were built in different countries by different bureaucracies at different times for different reasons, which means the cross-country comparison is meaningful without being like-for-like.
What I know is limited
The score has known weak spots, and I have listed them here at the top of a public methodology page rather than buried in the back of a PDF that nobody reads, because a reader deserves to weigh the number against the things it cannot see at the same moment as they see the number.
(a) Partial is a supermajority
About 0.0% of all scored tasks land in the partial bucket, which is the largest of the three by a wide margin. The honest answer to "can AI do this job?" is usually "it depends", and the partial label is what that hedge looks like in data: the council saw enough of the work as augmentable that calling the task fully human felt wrong, but not so much of it that calling the task fully automatable felt right either. When the three models split three ways, the task is also recorded as partial, which means disagreement and genuine middle-ground both route to the same label even though they describe different things, and I would urge a reader to treat any partial rating as "ask a person who does this work" rather than "the model is confident".
(b) Cross-country comparability
The US, Australian and Czech numbers all come from three differently-sourced datasets that I have put through the same council scorer. O*NET, OSCA paired with JSA, and NSP paired with ILO each carve the world of work at different joints, where the occupation granularity differs, the task-statement style differs, and the update cadences differ. The same scoring lens is applied across all three, but the input taxonomies were built by different countries at different times for different reasons, which is why a US analyst and an Australian analyst will never have identical task lists even when they share a job title; the cross-country comparison is meaningful but not like-for-like, and a headline score difference between countries should be read as a hint about the underlying tasks rather than a country-versus-country ranking.
(c) "New" task ratings
O*NET flags 1,124 US tasks across 285 occupations as "New", meaning they have been added to the taxonomy recently enough that their importance ratings are still provisional and have not yet stabilised against the rest of the data. The council scored these tasks the same way as any other, so their full/partial/human labels are no more uncertain than any other label on the site; the caveat lives one level up, in the importance weights attached to them. The importance-weighted view (toggleable in section 2) offers a way to read a headline score that does not lean on any single task too heavily, and I would switch to it whenever a role's overall number is being pulled around by one or two of these provisional entries.
(d) Small-model biases
The council is made up of three small open models, namely Gemma, Llama and Mistral, and small models bring known biases that I choose to acknowledge rather than hide. The first bias is that they over-cite branded enterprise platforms: when a task could plausibly be done by some unspecified "tool", the council reaches for whichever vendor name appears most often in its training data, which is rarely the name of a startup. The second bias is that they hedge toward partial: uncertainty resolves to the middle label more often than a larger model would resolve it, which is part of why the partial bucket is the size it is. Taken together, both biases push the dataset toward a conservative reading where AI is positioned as a helper rather than a triumphalist reading where AI is positioned as doing the whole job.
(e) What I do not claim
The score answers a narrow question well and a wider question badly. Five things, in particular, I want to be clear it is not:
- It is not an employment-level forecast. The score describes the shape of the work as it stands, not how many people will be employed doing it in five years' time, and a falling score for a role does not by itself imply the role is shrinking.
- It is not an individual-job-loss prediction. A role-level score of 0.6 is a statement about how the work in that role is composed; it says nothing at all about whether any particular person doing that work keeps their job, or about which parts of the workforce will be affected first.
- It is not a ranking of countries' economic prospects. The differences between the US, Australian and Czech numbers reflect the underlying task taxonomies and how each country chose to describe its own occupations more than they reflect any settled economic difference between the countries.
- It is not real-time. The model and tool landscape is frozen at the moment of the most recent rebuild, which is currently mid-2026, and any tool released after that date will only show up on the site when the dataset is next rebuilt.
- It is not a recommendation about which jobs to leave, retrain into, or avoid. The score describes how the texture of a role is changing; what to do in response to that change is a decision the reader makes, not one the dataset makes for them.
A worked example
Here is a real task from Accountants and Auditors that I chose because the council was not unanimous on it: each of the three models read the same one-line task statement and returned a different vote. The dataset records the majority label as the final rating, and the dissenting vote is preserved alongside it so that a reader can see what the council was wrestling with rather than only what it concluded.
“Establish tables of accounts and assign entries to proper accounts.”
Two of the three models voted partial and one voted full, so the majority rule labels the task as partial, but the individual votes are kept on the row so that a reader can see exactly where the dissent sat. One model treated this task as something already taken care of by current tooling, while the other two held that the work still needs human judgement in the loop; that disagreement is the part that matters more to me than the final label, because the council surfacing it is the point of having a council at all. Hovering the glyph above shows each model's reasoning in its own words.
This is one example, not a representative sample. I chose it because the three models disagreed, in order to show that disagreement is preserved rather than collapsed into a clean unanimous-looking score, and because the editorial frame on this page is job change, not job loss: the task is shifting, the role is not disappearing.
Sources & attribution
The dataset behind this site would not exist without the slow institutional work of agencies that publish occupation taxonomies as a public good. O*NET (US Department of Labor), OSCA (Australian Bureau of Statistics), JSA (Jobs and Skills Australia), NSP (Czech Ministry of Labour and Social Affairs) and the ILO's ISCO-aligned task definitions are each acknowledged in the table in section 4, with their licence terms and version numbers attached to the corresponding rows. None of these agencies endorses or has reviewed the merlin scores; the council's reading of their data, and any of its mistakes, are mine.
This site incorporates information from O*NET Web Services by the U.S. Department of Labor, Employment and Training Administration (USDOL/ETA). O*NET® is a trademark of USDOL/ETA.
About the editorial gloss
What it is
One short editorial paragraph per occupation, generated from the council's scored tasks. Each gloss reads the underlying task list — what is being automated, what stays human, which tools already help — and surfaces the texture of that change for the specific role. Czech readers see a translated version of the same paragraph. The editorial framing is "job change, not job loss" (D-007): the gloss reports what is changing, not what should change, and never says the role is being replaced.
Attribution data per occupation — the model name, the generation
date — is exposed via the database columns editorial_generated_at and editorial_model and rendered on each detail page. Both the English gloss and the
Czech translation were generated by mistralai/mistral-small-2603 via OpenRouter.
The prompt is published
The full system prompt is part of this repository and versioned in
git. No prompt is hidden behind a closed model API; what the model
saw, you can read. The English generation prompt lives at pipeline/prompts/editorial.md. The Czech translation prompt — applied to every English gloss for
a CZ occupation — lives at pipeline/prompts/editorial-translate-cs.md. Both files include their iteration history (v1 → v2 → v3 for the
English prompt).
What it is not
The gloss is not personalised — every reader sees the same paragraph for a given occupation. It is not real-time — the model and the task-scoring data were both frozen at the time of generation; new AI tools released after the generation date do not appear in the gloss until the next rebuild. It is not a recommendation about which jobs to leave, retrain into, or avoid. The gloss describes the texture of a changing role; the reader, not the dataset, decides what to do about it.