Now in private alpha

The Data Catalog that
Actually Understands
Your Data

ODIN is an open-source data catalog built on W3C standards. Business semantics, end-to-end lineage, AI-powered discovery, and accountable data ownership — designed for enterprises where data governance isn't optional.

Request Early Access View on GitHub
DCAT 3.0
DPROD
OpenLineage
FIBO
CSV-W
ODRL
ODRE
W3C DPV
Apache AGE
Spring AI

Data catalogs stopped solving problems
a decade ago.

Most catalogs are glorified spreadsheets with a search bar. They document data, but don't understand it.

🔍
70%
of a data analyst's time is spent finding and understanding data — not using it.

Discovery without understanding

Existing catalogs find the table. They don't tell you what "TRADE_AMT" actually means, whether it's gross or net, or what currency it's in.

🔗
more incidents caused by unknown data lineage than any other governance failure (Gartner, 2024).

Lineage is an afterthought

Lineage is either absent, stale, or requires manual curation. When a pipeline breaks, nobody knows what downstream reports are affected.

⚖️
$15M
average cost of a BCBS 239 compliance failure for a Tier 1 bank (Basel Committee, 2023).

Governance is a checkbox

Regulatory requirements like BCBS 239, FRTB, and GDPR demand documented lineage and semantic consistency. Most orgs scramble at audit time.

Everything a modern data catalog
should have been.

ODIN treats metadata as a first-class concern — standards-based, semantically rich, and lineage-aware from day one.

🧠

Semantic Vocabulary Mappings

Map every data element to a controlled vocabulary concept using SKOS matching properties. Ship with schema.org, FIBO FND/FBC/SEC/MD, SKOS, and Dublin Core pre-loaded. Add your own domain ontology in minutes.

FIBO schema.org SKOS Custom Vocabularies
🔀

End-to-End Data Lineage

Ingest lineage from any OpenLineage-compatible tool (Spark, dbt, Airflow). Parse SQL DDL across Snowflake, Teradata, and Hive dialects. Traverse multi-hop graphs with Apache AGE — upstream, downstream, and column-level. Expand dataset nodes to see logical data elements inline; hover an element to highlight its upstream edge path.

OpenLineage Apache AGE DDL Parsing Expandable Nodes
📦

Data Product Governance

Model data products with the DPROD standard. Track lifecycle stages from Ideation through Consume. Define input/output ports, link distributions, and attach access policies — all through a structured API.

DPROD Lifecycle Ports Access Policy
🤖

AI-Powered Discovery

Ask questions in plain English. ODIN uses retrieval-augmented generation over your full metadata corpus — descriptions, logical elements, and vocabulary mappings. Runs locally on Ollama or via OpenAI. No data leaves your perimeter.

RAG Ollama pgvector SSE Streaming
🌾

Automated Metadata Harvest

Connect to Snowflake, AWS Glue, Teradata, or any DCAT HTTP endpoint. Scheduled Spring Batch jobs crawl schemas, infer types, publish events to Kafka, and auto-generate draft logical models from physical columns.

Snowflake AWS Glue Teradata DCAT HTTP
🔎

Faceted Semantic Search

Full-text and semantic search over OpenSearch. Filter by entity type, lifecycle, vocabulary concepts, FIBO ontology terms, or whether a dataset has lineage and a published logical model. Autocomplete suggestions in milliseconds.

OpenSearch FIBO Facets Autocomplete Semantic
🏛️

Data Ownership & Governance

Assign accountable owners to every dataset with a structured role model — Administrator, Data Owner, Data Steward, and Data Governance Officer. Ownership transfers go through a proposal-and-approval workflow so accountability is never lost. A governance dashboard surfaces pending tasks, outstanding proposals, and a full activity feed for each user.

Role-Based Transfer Proposals Audit Trail Activity Feed

AI Metadata Enrichment

Beyond natural-language search, ODIN's AI layer actively improves metadata quality. For every logical model element, the AI service suggests a data classification level (Public through Restricted), a plain-English business description, up to five SKOS vocabulary concept mappings from FIBO and schema.org, and PII/direct-identifier indicators — detected using W3C DPV-PD vocabulary IRIs and field name heuristics. Data owners review and accept or reject each suggestion individually or in bulk. Vocabulary concept chips are individually selectable; PII flags use the same owner-gated accept/reject flow.

Classification AI Description Gen Vocab Concepts PII Detection Owner-Gated
🔁

Agentic Metadata Review

For higher-quality enrichment, ODIN runs a two-agent proposer/reviewer loop over a logical model. A proposer drafts a description, classification, vocabulary mappings, and PII flags for every element; a reviewer then audits that draft against the dataset's full DCAT context and returns a verdict — APPROVE or REJECT, with per-issue comments. The proposer revises on each rejection, up to ten iterations, and a long-term review memory carries lessons from past runs into new ones to speed convergence. Progress streams live over Server-Sent Events; the converged result is persisted to the model's elements for the data owner to accept or reject.

Proposer/Reviewer Self-Critique Long-Term Memory SSE Streaming Owner-Gated
📋

ODRL Terms of Use & ODRE Enforcement

Once elements are classified and vocabulary-mapped, ODIN automatically derives a machine-readable ODRL terms-of-use policy for every dataset. The access level — OPEN, INTERNAL_ONLY, RESTRICTED, or HIGHLY_RESTRICTED — follows directly from the most sensitive element classification. Applicable regulatory frameworks (MiFID II, EMIR, GDPR, Basel III, FCRA) are inferred from FIBO vocabulary mappings, dataset keywords, and PII element signals — when any element is flagged as personal data or a direct identifier, the HAS_PII_ELEMENTS signal fires and POLICY_STRICT rules are automatically added. Consumers see terms in plain English; data owners accept and lock the policy with one click. A dedicated policy-service then enforces those policies at request time using the ODRE algorithm — returning a structured UsageDecision (granted / denied / delegated) rather than leaving enforcement to convention.

ODRL ODRE Access Levels FCRA · GDPR · MiFID II Policy Decision Point

No proprietary lock-in.

ODIN's metamodel is grounded in W3C, OMG, and FIBO standards. Your metadata is portable by design.

W3C
DCAT 3.0
Data Catalog Vocabulary. Interoperable catalog and dataset descriptions in JSON-LD. Export your full catalog as machine-readable linked data.
Catalog · Dataset · Distribution
OMG
DPROD
Data Product standard from the Object Management Group. Defines ownership, ports, lifecycle, and access contracts for data products.
Data Products · Ports · Lifecycle
W3C
CSV-W
CSV on the Web. Formally describes the physical schema of tabular data — column names, types, constraints — linked to logical elements.
Physical Schema · Types · Keys
Linux Foundation
OpenLineage
Open standard for data lineage collection. Compatible with Spark, dbt, Airflow, Flink, and 30+ integrations out of the box.
Jobs · Runs · Datasets · Columns
EDM Council
FIBO
Financial Industry Business Ontology. Industry-standard vocabulary for financial instruments, parties, contracts, and processes.
FND · FBC · SEC · MD · BP
W3C
SKOS
Simple Knowledge Organization System. exactMatch, closeMatch, relatedMatch — precise semantic relationships between data elements and concepts.
exactMatch · closeMatch · relatedMatch
W3C
DPV
Data Privacy Vocabulary. A taxonomy of personal data categories, processing purposes, legal bases, and data subject rights. DPV-PD concept IRIs are used to AI-detect PII and direct-identifier fields on logical model elements — without requiring manual annotation.
Personal Data · Processing · Legal Basis
W3C
ODRL
Open Digital Rights Language. Terms-of-use policies — permissions, prohibitions, obligations — derived from element classifications and vocabulary concept mappings. No manual policy authoring required.
Permissions · Prohibitions · Obligations
Academic
ODRE
Open Digital Rights Enforcement (Cimmino et al., 2025). Algorithm 1 evaluates ODRL policies at request time and returns a UsageDecision — granted, denied, or delegated — rather than leaving interpretation to each consumer. ODIN's policy-service implements A-Level (static) and B1-Level (variable injection) enforcement.
A-Level · B1-Level · UsageDecision

Trace every byte from source to report.

ODIN builds a live graph of your data pipelines — automatically. SQL DDL parsing extracts lineage from CREATE VIEW statements without touching your pipelines.

Multi-hop traversal
Query upstream or downstream lineage up to N hops via Apache AGE Cypher queries.
Column-level lineage
Track individual column transformations across jobs — essential for BCBS 239 and GDPR data element tracing.
Impact analysis
Before changing a source table, know every downstream report, model, and data product that will be affected.
Expandable nodes with data elements
Expand any dataset node in the graph to see its logical data elements inline. Hovering an element highlights its incoming edges — instantly showing which upstream sources feed that field.
Upstream lineage · REGULATORY_DB.BCBS239 · depth 4
REGULATORY_DB.BCBS239.RISK_AGGREGATION
3 inputs
RISK_DB.MARKET_RISK.DAILY_POSITIONS
2 inputs
TRADING_DB.BLOTTER.TRADE_BLOTTER
kafka://prices-realtime
RISK_DB.PNL.DAILY_ATTRIBUTION
4 inputs
TRADING_DB.BLOTTER.TRADE_BLOTTER
REFDATA_DB.EQUITIES.SECURITIES_MASTER
RISK_DB.CREDIT.COUNTERPARTY_EXPOSURE
3 inputs
TRADING_DB.BLOTTER.TRADE_BLOTTER
REFDATA_DB.COUNTERPARTY.MASTER
↑ 10 unique nodes · 8 DERIVED_FROM edges · via Apache AGE Cypher

Built for where governance actually matters.

ODIN ships with the Financial Industry Business Ontology (FIBO) pre-loaded. Map your trade and risk data to an industry-standard semantic layer in minutes.

01

BCBS 239 Risk Data Aggregation

Documented lineage from source systems to regulatory reports. Automated tracing of every data element that flows into capital calculations.

02

FRTB Capital Calculation Audit Trail

Column-level lineage from market data feeds through risk positions to SA capital charges. Auditable and reproducible.

03

Semantic Reference Data Management

Map ISIN, LEI, CUSIP, and monetary amounts to FIBO concepts. Eliminate the ambiguity between source systems with a canonical semantic layer.

04

Data Product Marketplaces

Publish governed data products with defined SLAs, access policies, and lineage. Consumers find what they need; owners control who gets it.

FIBO Vocabulary Mappings — Trade Blotter · Logical Model v2.0
Business Name
Match
FIBO Concept
Trade Amount
exact
FND/…/MonetaryAmount
Settlement Currency
exact
FND/…/Currency
Counterparty LEI
exact
FBC/…/LegalEntityIdentifier
Instrument ISIN
exact
FBC/…/ISIN
Market Price
exact
MD/…/MarketPrice
Financial Instrument
exact
FBC/…/FinancialInstrument
Trade Date
close
schema:startDate
7 of 10 elements mapped · 0 unbound · SKOS match types

Meaning is the missing layer
between your data and AI.

LLMs can search for tables. They cannot tell you whether TRADE_AMT is gross or net, in USD or EUR, pre- or post-netting. Standard semantic vocabularies — schema.org and FIBO — close that gap. When every data element carries a machine-readable concept IRI, AI stops guessing and starts reasoning.

🧩

Ambiguity is the root cause of AI failure

RAG pipelines retrieve chunks of text. Without semantic grounding, a question about "settlement amount" returns every table that mentions the word "amount." SKOS exactMatch bindings to fibo-fnd-acc-cur:MonetaryAmount make retrieval precise — the model finds the right element, not the most popular one.

SKOS exactMatch RAG Precision
📖

Standard IRIs are native to foundation models

schema.org and FIBO IRIs appear extensively in the training corpora of every major LLM. Annotating a data element with https://schema.org/price or fibo-md-temx-ex:MarketPrice puts it in semantic proximity to everything the model already understands about that concept — zero prompt engineering required.

schema.org FIBO IRI Grounding
🤝

Agents need contracts, not descriptions

As AI moves from answering questions to taking actions — writing pipelines, generating reports, triggering workflows — it needs to know exactly what data it is handling. A vocabulary mapping is a contract: this column contains a LegalEntityIdentifier, not "some kind of ID." Agents that operate on contracts are auditable; agents that operate on descriptions are not.

Agentic AI Auditability LEI · ISIN · CUSIP
🔗

Your metadata becomes a knowledge graph

ODIN's vocabulary mappings, logical models, and lineage edges form a traversable knowledge graph. AI agents don't just search it — they walk it. From a regulatory report, upstream through lineage to source systems, sideways through vocabulary to equivalent concepts in other datasets. That kind of reasoning is only possible when meaning is explicit.

Knowledge Graph Apache AGE Graph Traversal
🏛️

FIBO: regulatory-grade semantics, pre-loaded

The Financial Industry Business Ontology is the only semantic vocabulary built specifically for financial data with regulatory intent. When an AI model encounters a FIBO-annotated dataset, it has access to the same ontological structure that regulators, risk managers, and auditors use to describe the same concepts. No translation layer. No interpretation gap.

FIBO FND FIBO FBC FIBO SEC · MD
📐

Cross-system equivalence without ETL

Different source systems use different column names for the same concept: trade_ccy, SETTL_CURR, SettlementCurrency. All three mapped to fibo-fnd-acc-cur:Currency with exactMatch become interchangeable to any AI agent — without moving a byte of data. Semantic equivalence is free once vocabulary mappings exist.

Cross-system Equivalence Zero-ETL

The bottom line: every major AI lab is investing in structured data and knowledge graphs because they have discovered the same thing — unstructured text retrieval has a ceiling. The organisations that will get the most from AI in the next decade are the ones who spent the last decade building semantic structure into their data. ODIN gives you that structure today, on top of the data you already have.

Open source. API-first.
Open Standards.

7 microservices. Deploy to Kubernetes, Docker Compose, or your cloud of choice. No managed service required.

Services

inventory-service

DCAT/DPROD/CSV-W metadata. Logical models. Vocabulary mappings. Kafka event publisher.

harvest-service

Spring Batch crawlers for Snowflake, Glue, Teradata, DCAT HTTP. Quartz scheduler.

lineage-service

OpenLineage ingestion. DDL parsing via Apache Calcite. Apache AGE Cypher graph queries.

search-service

OpenSearch indexing with FIBO facets. Autocomplete. Full-text + semantic hybrid search.

ai-service

Spring AI RAG pipeline. pgvector embeddings. Ollama (local) or OpenAI. SSE chat streaming.

identity-service

Keycloak OAuth2/OIDC. Role-based access (Administrator, Data Owner, Steward, Governance). User management with Keycloak sync. API keys. Multi-tenant isolation.

policy-service

ODRL policy registry + ODRE enforcement engine (PDP). Evaluates A-Level and B1-Level policies at request time. Kafka-driven sync from dataset changes. Evaluation audit log.

Data Stores

PostgreSQL 16

Metadata, harvest, identity, and AI conversation stores.

Apache AGE

Lineage graph on PostgreSQL. Cypher queries. No separate graph DB.

pgvector

Embedding vectors for RAG. IVFFlat index. 768 dimensions.

OpenSearch 2.x

Full-text and k-NN vector search. FIBO concept facets.

Apache Kafka

Event backbone. KRaft mode. Log-compacted entity topics.

MinIO

Harvest snapshots, DDL files, DCAT exports. S3-compatible.

The UI ships as a reference app.
Build the experience your users need.

Every capability in ODIN is available over a documented REST API. The bundled producer and consumer interfaces show what's possible — they're a starting point, not a constraint.

REST · Bearer or API key
# Find datasets with FIBO MonetaryAmount elements GET /api/v1/search?q=trade+amount&type=DATASET Authorization: Bearer <token> # Response { "results": [ { "id": "f453e98f-...", "title": "Trade Blotter", "fiboConcepts": [ "fibo-fnd-acc-cur:MonetaryAmount" ], "hasLineage": true, "hasLogicalModel": true, "distributionCount": 3 } ], "totalHits": 11 } # Upstream lineage — 5 hops (UUID from /datasets/lookup) GET /api/v1/datasets/{lineage-uuid}/lineage ?direction=upstream&depth=5 # AI — stream an answer over SSE POST /api/v1/conversations/:id/messages Accept: text/event-stream { "content": "Which datasets feed the P&L report?" }
GET/datasets
GET/search
GET/lineage
POST/conversations
POST/lineage
GET/data-products
POST/sources/:id/trigger
GET/logical-models
GET/vocabularies
OpenAPI/swagger-ui.html

What teams build on top of ODIN

🏢

Internal data portal

A branded, role-tailored portal that surfaces only the datasets and products relevant to each business unit — finance sees FIBO-annotated instruments, operations sees operational tables.

🔌

IDE & notebook plugin

Bring lineage and schema context directly into VS Code, JupyterLab, or DataGrip. Hover over a table name to see its logical model, upstream sources, and vocabulary annotations inline.

💬

Slack or Teams bot

Let analysts ask "who owns the trade positions dataset?" or "what feeds the risk report?" in the tools they already use. The AI API streams back a grounded, cited answer.

🛒

Data product marketplace

A consumer-facing storefront where data products can be browsed, subscribed to, and access-requested — with lifecycle status, SLA, and distribution format surfaced from the API.

"The data governance tools we use today were designed for a world where having metadata was enough. ODIN is designed for a world where understanding metadata is the only thing that matters."
— From the ODIN Catalog design manifesto

Join the alpha.

Alpha software — APIs and schemas may change between releases

We're working with a small group of data engineering and governance teams across financial services, healthcare, and enterprise technology. Alpha participants get direct access to the core team, influence the roadmap, and help shape the product before public launch.

Apply for early access — hi@odin-catalog.com →
7
Microservices, all open source
9
Open standards at the core
0
Vendor lock-in