Skip to content
Humaniwork

Method · · 4 min · Desh Deepak

Reading a CV in Catalan: what ESCO alignment actually does

A keyword scan reads the words on a CV. Skills matching reads the competences behind them. The difference decides whether a qualified electrician from Quito ever reaches a shortlist in Sabadell.

Geometric composition: a signal trace above a neighbourhood grid, with a threshold marker in amber.
Illustration

Here is the failure mode, described exactly.

A qualified electrician arrives in Catalonia from Ecuador. Their CV, written in Spanish, says instalador electricista. It lists eight years of work on residential and light commercial installations, and a technical qualification whose name means nothing to a Spanish HR system.

A vacancy in Sabadell, written in Catalan, asks for an electricista industrial with experience in manteniment preventiu and a specific low-voltage certification.

A keyword scan compares the two documents and finds almost nothing in common. Different language, different job title, different certification name. The candidate does not reach the shortlist. Not because they cannot do the work, and not because anyone decided they could not. Because the string comparison returned a low number.

Multiply that by a labour market where a large share of new hiring involves workers whose credentials were issued somewhere else, and you have a structural mismatch that nobody chose and everybody pays for.

What ESCO alignment does

ESCO is the European Skills, Competences, Qualifications and Occupations classification. It is a published taxonomy that describes occupations and the competences underneath them, maintained by the European Commission, available in every EU language.

Its usefulness here is specific: it gives us a shared space that is not a language and is not a job title.

Instead of comparing a Spanish CV to a Catalan vacancy directly, we parse both into ESCO competences and compare there.

  • Instalador electricista with eight years of residential installation work resolves to a set of competences: installing electrical systems, reading technical drawings, testing installations, applying safety regulations, and so on.
  • Electricista industrial with preventive maintenance experience resolves to an overlapping set, plus some that do not overlap: industrial control systems, planned maintenance scheduling.

Now the comparison is meaningful. The candidate matches on the majority of the required competences, is adjacent on two, and is missing one. That is a shortlist entry with an explanation attached, not a rejection produced by a string comparison.

Why "bilingual by construction" is not a translation layer

The obvious shortcut is to machine-translate everything into English, run an English model, and translate back. It is cheaper and it is wrong, for three reasons.

Occupational vocabulary does not survive translation. Mosso de magatzem, peó agrícola, and auxiliar de geriatria have conventional English equivalents that are approximately right and operationally wrong. The error is small per document and compounds across a corpus.

Catalan is not a dialect of Spanish and is not handled well by pipelines that assume it is. Language detection that treats Catalan as Spanish produces systematically degraded parsing, and the degradation is invisible unless you are looking for it.

A municipality notices. In Catalonia, Catalan is the default working language of the institution. A product that treats it as a localisation option is telling a municipal buyer something about how seriously it takes the place it is selling into.

So the models are Spanish and Catalan natively rather than English models with a translation layer, version-pinned, with the model version recorded on every output. Language is a first-class field on every text record, recorded at ingestion rather than inferred at query time.

What the recruiter sees

This is the part that matters most and it is a design decision rather than a modelling one.

The recruiter does not see a score. They see a ranked list, and for each candidate:

  • which required competences matched, and on what evidence in the document
  • which are adjacent, meaning the candidate has a related competence that a reasonable person would consider transferable
  • which are missing
  • the confidence value, and whether it is below threshold

Then they decide. The decision is an explicit action, logged against their identity. The system never auto-rejects, never auto-advances, and never presents a ranking whose basis the recruiter cannot see.

This is not decoration. Employment-related matching is treated under the EU AI Act's high-risk obligations, and explainability is one of them. But the better argument is practical: a shortlist a recruiter does not understand is a shortlist they will not use, and a shortlist they cannot explain is one they cannot defend to a labour inspector.

Where it breaks

Three places, and we would rather say them here than have you find them.

Sparse documents. A one-page CV with three lines of employment history does not contain enough evidence to resolve confidently into competences. The match comes back below threshold and is labelled below threshold. That is the correct behaviour and it is also not helpful to anyone.

Occupations ESCO covers thinly. The taxonomy is good and it is not uniform. Some emerging and some highly local occupations are represented at a level of granularity that loses real distinctions.

Credential recognition is a separate problem. Establishing that someone has the competences is not the same as establishing that a Spanish employer or regulator will accept their qualification. We can tell you the person can do the work. We cannot make a professional body agree, and any product claiming otherwise is selling you something else.

The point

The mismatch is not caused by a shortage of qualified people or by employers who do not want to hire them. It is caused by a document in one language being compared to a document in another by a system that only reads strings. That is an engineering problem with an engineering answer, and the answer has been sitting in a published European taxonomy for years.

Follow the work

We publish when there is something to publish, which is roughly monthly. If you would like the next piece, write to hello@humaniwork.com with the word Signals. No list, no automation, no sequence. One of us adds you and one of us sends it.