About Meridian
A cross-border ESEF filing explorer. One taxonomy, many countries, real financial data — built to make European listed-company filings genuinely comparable across jurisdictions.
The problem
Since 2020, EU-listed companies must publish their annual reports in ESEF — the European Single Electronic Format — tagging the numbers with the IFRS taxonomy so they are machine-readable and, in principle, comparable across borders and languages. In practice that promise is unrealised: the data is fragmented across national mechanisms, tagged inconsistently, and no investor-facing tool makes it easy to line companies up side by side. Meridian is a working demonstration of what that tool looks like.
What you can do here
- Search issuers by name, country or LEI, and open any one to see its IFRS financial highlights across years plus its full filing timeline.
- Compare 2–5 companies from different countries side by side for a chosen fiscal year, converted to a common currency at ECB reference rates — the feature ESEF was meant to enable.
- Coverage maps which jurisdictions the public index actually covers, and quantifies the gaps (Germany, notably, does not publish to it) — where comparability breaks.
- Data quality aggregates the validation messages run on every filing, by severity and country, as a proxy for filing quality.
- Extension tags tracks where issuers depart from standard IFRS with company-specific tags — a signal for where the taxonomy falls short.
- Any table can be exported to CSV or JSON, with concept tags, currencies and source filing URLs.
How it's built
A hybrid Rust + Python system with a clean separation between data preparation and serving:
- Data pipeline (Python, uv-managed). Resolves a curated universe of issuers against the actual filer set on filings.xbrl.org, parses the XBRL-JSON extracts into headline IFRS facts (handling fiscal-year alignment, concept aliases, bank-specific lines and custom extensions), and pulls ECB annual FX rates — all cached to SQLite.
- Web application (Rust). Leptos for the UI (server-side rendered with client hydration) on an Axum server, reading the SQLite cache via rusqlite. Hand-written CSS, no frameworks. The app never calls external APIs at request time — it serves the cache.
Data sources
- filings.xbrl.org — the ESEF filing index and machine-readable XBRL-JSON extracts.
- European Central Bank — annual reference exchange rates for currency conversion.
What it demonstrates
- Fluency with the IFRS taxonomy and the ESEF mandate — not just US-GAAP.
- Cross-jurisdictional data handling: currencies, fiscal calendars, sectors.
- Practical understanding of XBRL-JSON, LEIs and validation semantics.
- Data-quality and coverage awareness applied to real European filings.
- Full-stack delivery in Rust (Leptos + Axum) and Python, end to end.
The seeded universe is a curated set of large-cap issuers — enough to exercise every feature against real filings; the pipeline extends to any issuer in the index. Figures are drawn directly from companies' own ESEF submissions.