CORDIS SDG Mapper
Every Horizon Europe project in the CORDIS snapshot, 23,451 of them, is matched to UN Sustainable Development Goals and targets by a fixed rule that gives the same answer every time, with the evidence behind every match one click away. The method was registered and ratified by hash before any code was written, a sealed held-out sample was scored once under a frozen parameter set, and every number in the submission is checked against the artefact it came from by a script that fails if one drifts.
Live prototype: https://cordis-sdg-prototype.vercel.app/
Source and data: https://github.com/arthapraha/cordis-sdg
What you can find on the site
Home lists all 23,451 projects with their assignment level, goals and confidence, filters by level, goal, target and band, and opens each project's evidence: the exact phrases that produced every match, with the field they came from. Each project title links to its CORDIS record.
SDG Distribution shows the 17 goals with their project counts; a goal opens to list every one of its targets with the number of projects on each, and a click on a target lists those projects.
Evaluation & Metrics gives the held-out results and their ceiling. Notebook Figures holds the six charts. Methodology & Provenance carries the reproduction commands and the hash of every artefact, so anything on the site can be checked against the repository.
What was built, how it was validated, and where each deliverable is
Entry by Attila Angyan. Certificate, if any, in that one name. Licence: CC BY 4.0 for the documentation, the crosswalk and the synonym list; MIT for the code.
DATASETS USED
CORDIS: EU research projects under Horizon Europe (2021-2027): https://data.europa.eu/data/datasets/cordis-eu-research-projects-under-horizon-europe-2021-2027
EU Vocabularies: Sustainable Development Goals taxonomy (17 goals, 169 targets): https://op.europa.eu/en/web/eu-vocabularies/dataset/-/resource?uri=http://publications.europa.eu/resource/dataset/sdg
THE SIX DELIVERABLES
1. Notebook: cordis-sdg.ipynb (attached), executed, with requirements-notebook.txt (attached).
2. Mapping table: data/corpus/mapping-table-0246412.csv in the repository, 28,833 rows over 23,451 projects, 18 columns (project id, title, goal and target by URI and label, assignment level, confidence band and score, explanation, matched phrases with their source fields, fields present and absent, snapshot hash, pipeline commit). sha256 181d378a3078014193f3ae4f684b00b375ed62f3d24b2b34c060f6457b4a00d3. The platform's 5 MB file limit keeps the full file off this form; a sample of its first 5,277 rows is attached, byte-identical to the head of the full file. Full file: https://github.com/arthapraha/cordis-sdg/blob/main/data/corpus/mapping-table-0246412.csv
3. Supporting files to reproduce: the repository at commit 9f0893b, https://github.com/arthapraha/cordis-sdg (scripts/, data/terms/, data/crosswalk/, data/sample/, data/pipeline/, data/manifest.json). README.md carries the step-by-step reproduction block, run from a clean clone by two seats; scripts/test_reported_figures.py fails if any figure or hash quoted in the documents stops matching its artefact.
4. Summary of approach and findings: summary.md and summary.pdf (attached).
5. Working web prototype: https://cordis-sdg-prototype.vercel.app/ (static, no key, served from the repository's prototype/ folder, byte-identical to commit 9f0893b).
6. Description document: description-document.md and description-document.pdf (attached).
Also attached: limitations.md and limitations.pdf (limitations, uncertain cases, possible improvements); the six figures as PNG with figure-counts.json, the counts behind every chart.
THE NUMBERS, IN ONE PLACE
Held-out 100, scored once under the freeze: target-level precision 0.447, recall 0.221, F1 0.296. Recall ceiling of the method 0.442: 53 of the 95 reference pairs have no vocabulary evidence at any threshold. Development 50: two labellers agreed at Cohen's kappa 0.677 (target level). Whole snapshot: 9,394 projects with a target (40.1%), 6,882 goal level only (29.3%), 7,175 nothing (30.6%).
WHY WE THINK IT IS THE BEST ANSWER TO THE BRIEF
The decision path has no model in it and can be recomputed by hand from the evidence on each row; the method was fixed before the results existed; the held-out measurement is honest about its ceiling; the limitations are stated with their numbers; and everything, from the snapshot to the figures, is hashed and reproducible from a clone. The description document, section 8, answers the nine criteria one by one.
| Otsikko | Date | File |
|---|---|---|
| 1. Notebook: methodology, data preparation, mapping logic and results (executed) | 2026-09-13 15:04 | cordis-sdg.ipynb |
| 1. Notebook environment, pinned versions | 2026-09-13 15:04 | requirements-notebook.txt |
| 2. Mapping table, sample: the first 5,277 rows of the full 28,833-row file, which is in the repository | 2026-09-13 15:05 | mapping-table-0246412-SAMPLE-first-5277-rows.csv |
| 2. Mapping table: where the full file is and its hash | 2026-09-13 15:05 | README-mapping-table.txt |
| 4. Summary of approach and findings (Markdown) | 2026-09-13 15:06 | summary.md |
| 4. Summary of approach and findings (PDF) | 2026-09-13 15:06 | summary.pdf |
| 6. Description document (Markdown) | 2026-09-13 15:07 | description-document.md |
| 6. Description document (PDF) | 2026-09-13 15:07 | description-document.pdf |
| Limitations, uncertain cases and possible improvements (Markdown) | 2026-09-13 15:07 | limitations.md |
| Limitations, uncertain cases and possible improvements (PDF) | 2026-09-13 15:07 | limitations.pdf |
| 3. The counts behind every figure | 2026-09-13 15:08 | figure-counts.json |
| Figure: confidence bands of the target assignments | 2026-09-13 15:08 | confidence-bands.png |
| Figure: how the pipeline and the reference disagree on the held-out 100 | 2026-09-13 15:08 | disagreement-shape.png |
| Figure: projects with a target under each goal | 2026-09-13 15:08 | goals-by-project-count.png |
| Figure: the 25 most-linked targets | 2026-09-13 15:08 | most-linked-targets.png |
| Figure: the recall ceiling of the method | 2026-09-13 15:08 | recall-ceiling.png |
| Figure: evidence by source field | 2026-09-13 15:08 | relevance-by-field.png |