Open Science Collaboration Network

A free, open-data intelligence platform that turns two public datasets — OpenAlex and CORDIS — into ranked, scored EU consortium-partner shortlists, replacing two to four weeks of proximity-biased manual searching with a single surface covering ~9,300 institutions across six research topics

Role
Solo end-to-end — user research, product strategy, Python data engineering (ETL), FastAPI backend, React + Vite frontend, graph visualisation, DevOps
Disciplines
Product DesignUX ResearchData & AnalyticsInformation Architecture
Links
TL;DR
  • Problem — Finding EU Horizon consortium partners runs on personal networks + Google: 2–4 proximity-biased weeks, no fit evidence
  • Insight — Raw publication rank surfaces Harvard/MIT for everything; weighting EU project history + network position surfaces real consortium joiners
  • Solution — I built solo, end-to-end, an open-data platform (OpenAlex + CORDIS) scoring institutions 0–100 on 6 dimensions, plus graph, gap analysis, semantic search, AI briefs
  • Outcome — Live: 6 topics, ~9,300 scored institutions, 800,000+ collaboration edges, running at €0/month

Horizon Europe partner discovery runs entirely on personal networks — and it shows

EU Horizon Europe grants (€95.5 billion over 2021–2027) almost always require a multi-country consortium of at least three partners. Consortium composition is a scored criterion and a frequent rejection reason. The official tooling — the EU Funding Portal’s Partners Search — returns an unranked name directory with no publication data, no network context, and no fit scoring. It has not changed substantially in a decade.

Four semi-structured interviews with researchers who had submitted Horizon proposals produced a consistent workflow: (1) list organisations the PI already knows from conferences; (2) Google Scholar for affiliations; (3) check CORDIS manually; (4) ask mailing lists. Proximity dominates — organisations outside the PI’s existing network had near-zero probability of making the shortlist regardless of actual fit. And consortium gaps — the missing policy body, the absent NGO — were typically discovered during writing, when they are expensive to fix.

The problem is not a shortage of data — both OpenAlex and CORDIS are public, comprehensive, and free. The problem is that no tool has assembled them into a form useful for the partner discovery workflow

Partner Shortlist: institutions ranked by composite Partner Fit Score with type badge, country, works and EU project count

Four pain themes — and one that wasn’t in the original spec

Discovery combined four methods: four 45-minute semi-structured stakeholder interviews, a document review of 12 funded Horizon project descriptions (CORDIS), a competitive audit of the EU Funding Portal / ResearchGate / ERAPortal, and a technical spike to validate OpenAlex API and CORDIS bulk-CSV coverage and data quality.

Pain theme 1: discovery is entirely network-dependent. Pain theme 2: no quantitative fit signal — partners are chosen on reputation and personal trust, not measurable indicators. Pain theme 3: consortium gaps are discovered late, during writing. Pain theme 4: CORDIS is unusable without tooling — all four interviewees knew it existed; none used it regularly.

The Consortium Gap View was not in the original spec. It emerged directly from Pain theme 3 and is now one of the screens that most clearly differentiates the platform from a simple institution-ranking table

A raw publication ranking surfaces Harvard for every topic — which is not useful

The Partner Fit Score is a 0–100 weighted composite across six dimensions: topic relevance (30%), publication activity (20%), EU project participation (20%), network centrality (15%), country/consortium diversity (10%), and recent activity (5%). Each component is normalised by percentile rank within the topic’s cohort, not divided by the maximum — that was the first version’s mistake. Dividing by maximum pushed ~86% of institutions below 30, leaving only one or two scoring above 70 per topic. Percentile normalisation spreads scores meaningfully across the full range: ~150–315 strong-fit institutions per topic in production.

Every score is stored with a per-component JSONB breakdown so users see exactly why an institution ranked where it did. The hover card in the shortlist and the full breakdown panel on the institution profile are not decorative — without them the score feels opaque and a researcher won’t act on it.

Institution Profile — score ring + per-component breakdown

Consortium Gap View — coverage verdicts per standard role

Honest limitation: entity matching accuracy is high for universities and established research institutes (stable, well-indexed names) and lower for SMEs — roughly 3,900 CORDIS participations matched to OpenAlex institutions for Climate adaptation, ~3,570 left unmatched. The confidence-75 threshold accepts borderline fuzzy matches as “review-grade”; anything below is discarded rather than forced. For the target use case — identifying consortium lead partners — this is an acceptable trade-off: SMEs are rarely leads, and the unmatched tail does not affect the top of the shortlist.

Five screens mapping the five stages of partner discovery

The platform covers the full discovery workflow: Partner Shortlist (candidate scanning with filters by country, type and minimum score) → Institution Profile (individual assessment with score breakdown, top EU projects and co-authorship community) → Network Map (force-directed Cytoscape.js graph, Louvain cluster colouring, draggable nodes) → Consortium Gap View (six standard role cards with coverage verdicts) → AI Strategy Brief (Groq/llama-3.3-70b RAG brief cached from the weekly ETL run). Semantic search and the consortium builder are v2 cross-cutting additions.

sci-collab.ontwrpn.com — live preview
Live demo
sci-collab.ontwrpn.com
Open

Live — six research topics, ~9,300 scored institutions, 800,000+ collaboration edges

Network Map — Louvain clusters, draggable cola force layout

Consortium builder — live gap coverage as partners are added

AI Strategy Brief — RAG over top-15 abstracts, generated in ETL

Semantic search — cosine-ranked over 6,000 embedded work abstracts

Batch-first: every expensive computation happens in the ETL, so the API is read-only and costs €0

The most important architectural decision is invisible to users: all computation — graph metrics, entity matching, scoring, embeddings, AI brief generation — happens in a weekly batch job. The production API is a thin read layer over precomputed Postgres tables. No expensive operations at request time; no LLM calls on the hot path. This is also why the platform runs at €0/month: it consolidates into a single Docker container on an existing Coolify/Hetzner host, with an in-process weekly ETL scheduler thread replacing any external cron and any managed cloud database.

The hardest engineering problem was entity matching between CORDIS (PIC numbers) and OpenAlex (opaque IDs) — no shared identifier, only organisation names and countries. Three-layer solution: country-block first (drops the match space ~95%), then rapidfuzz token-set fuzzy match (≥90 accept directly, ≥75 as review-grade), then ROR affiliation API only for the borderline 75–90 band. Running fuzzy first cut ROR calls ~100× vs the original design that queried ROR for every organisation — which caused ETL timeouts. Deadlock prevention required sorting Postgres upserts by openalex_id so parallel ETL processes acquire row locks in the same order.

The graph view adapts to 390px mobile — Cytoscape.js cola layout with collapsible legend

Live, measured, honest about limits

As of June 2026: six research topics live, ~9,300 scored institutions (21,000+ institution-topic Partner Fit Scores), 800,000+ collaboration edges, 6,000 embedded works. Marginal infrastructure cost: €0 — it rides an existing host. Build time: seven months solo, November 2025 to May 2026 MVP, v2 features June 2026.

What I would do differently: validate entity matching accuracy earlier. I spent three weeks building the full pipeline before measuring its precision. A two-day spike on a sample of 200 CORDIS organisations would have surfaced the SME accuracy issue sooner and led to a faster decision on the confidence-75 threshold. A scoring model is not done when the formula looks sensible — only when its output distribution is actually useful for the decision.

The lesson that kept repeating: verify free-tier claims against current reality, not documentation. Render’s free Postgres tier now deletes the database after 30 days. Free managed options each have a catch. Own the database host

Sources

Next project
Benelux AI Job Scout