The Product

A Metadata Repository Whose Model Is Data

Trusted Data. Intelligent Decisions.

KRISID catalogs your estate, records who answers for what, traces lineage at three grains and routes changes through declared approvals. The difference is underneath: the model that decides what may exist is rows in a workbook, not classes in the code. Add an asset type and every screen follows — with no migration and no release.

How the configurable metamodel works One workbook declares the asset types, the attribute types, which attributes apply to which type, and which types may be linked to which. Those rows are the metamodel. Every screen in the product — the sidebar sections, the type lists, the estate tree, the lineage bands, saved views and search — is generated from them, so changing a row changes the product. One workbook Asset types — what kinds of thing exist Attribute types — what may be recorded Type attributes — which fields, which kind Relation types — what links to what METAMODEL is data Every screen follows Sidebar Sections Type Lists Estate Tree Lineage Bands Saved Views Ask & Search No migration. No release.
10M

Assets, measured

28

Screens, all generated

77

Verification checks

6

Source connectors

The one claim

A New Asset Type Needs No Migration and No Code

Most catalogs are built the other way round. A table is a table because a developer wrote a table class, so the thing your business actually calls an asset — a reinsurance treaty, a consent record, a model card, a dbt model — waits for a release that may never come.

In KRISID, four tables declare everything that may exist, and three hold what does. A table, a column and a business term are all rows in the same place. There is no table table. Adding an asset type is four inserts — or four rows in a spreadsheet you upload from the screen.

The regression suite does exactly that on every run: it adds a type, creates an instance, puts an attribute on it and links it, then reads all four back through the same API the browser uses. If a type ever needed code again, that check would fail.

What this is not

Not a plugin SDK, and not a scripting hook. Nothing is compiled, nothing is deployed and nobody writes a line. The model is a workbook, and the workbook is the product's own export — so you always start from what is live rather than from a stale copy.

Rename Table to Dataset. One Cell.

A client whose business says dataset changes one cell and uploads it. After that, with no release and nothing else touched:

  • The sidebar entry reads Datasets — headings and plurals come from the model
  • The list screen keeps its description and its origin sentence
  • Choose columns offers the same attributes, roles and relations
  • The estate tree still nests datasets inside schemas, because nesting is read from the relation's cardinality
  • Ask understands which datasets hold customer email, because the question grammar is matched against the model's own words
  • Every filter, saved view, export and workflow condition reads the new name

What it does

Twenty-Eight Screens, One Catalog Behind Them

Every screen has an address, so back, forward, bookmarks and pasted links all work. And every screen reads the same model, which is why none of them disagree.

Ask

One box that takes a word or a question in plain English — which tables hold customer email — ranked by how much a thing is actually used, who owns it and whether it is still live. The question grammar is matched against the metamodel's own words, so it learns your vocabulary rather than ours.

The Estate Tree

Where data actually lives, nested the way the source nests it — source system, database, schema, table, column. The nesting is derived from relation cardinality, so adding a Snowflake stage or a dbt model makes a new level appear on its own.

Lineage at Three Grains

The same graph read at column, object and business level. Which relations carry data is declared on the relation type, never guessed from its label — because derives from and realised by read alike and mean different things. Business lineage is the technical graph lifted, with the unnamed tables in the middle stepped over and counted.

Responsibility That Inherits

Stewards and owners are people and teams, not strings in a text field. Responsibility inherits down the estate, the nearest assignment wins, a domain can decline to pass it down, and a locked one refuses to be overridden below — and says so in a sentence rather than a code.

Declared Approvals

Draw a workflow on a canvas and publish it. A change to a governed type becomes a request instead of a write; the asset does not move until somebody with the right role over that asset decides. Four eyes can refuse the raiser even when they hold the role, and an approval is refused outright if the value moved since it was raised.

Sources and Harvesting

Test a connection, preview what a sync would change, then apply it. A harvest of an unchanged source writes nothing at all, so a nightly run costs you no storage and no audit noise on the nights nothing moved. When an object disappears from the source it is marked missing with a date, not silently deleted.

Bulk Load From Excel

Download the current shape, edit it, upload it. What would change appears field by field — not "27 rows updated" — and nothing is written until you have read it. A load adds and updates but never deletes by omission, and a bad cell is refused with the row and the column named.

Roll-Up by Domain

What each domain answers for, including everything inside the things it owns. Membership follows ownership and inheritance rather than a hand-kept list, so the number on a domain card is the number the domain's own screen will show.

An Audit Trail Nobody Trims

Every change records the attribute, both values and the person — including who was made responsible for what, and by whom. History is never pruned. Tokens, cookies and passwords are stripped from everything written to the logs, and the logs are shown only to the few named as readers.


Sources

A Connector Knows Its Source. It Does Not Know the Repository Exists.

That constraint is why adding the sixth connector cost about what the second one did. A connector yields nodes and edges from its own system and touches no database, knows no asset types and has no side effects. Mapping what it found onto your model happens once, in one place, against the metamodel.

Which means a connector you need and we do not ship is a contained piece of work rather than a change to the product.

Snowflake Databricks Unity Catalog Microsoft Fabric Power BI Tableau OpenLineage

What Comes Back

  • Snowflake — the estate down to columns, with comments and tags, and column-level lineage read out of the SQL
  • Databricks — Unity Catalog down to columns, with tags, comments and volumes
  • Microsoft Fabric — workspaces and every item in them, lakehouses down to tables
  • Power BI — workspaces, reports, dashboards and datasets down to columns and measures
  • Tableau — projects, workbooks, dashboards, sheets and data sources
  • OpenLineage — jobs that report themselves: Airflow, dbt, Spark, Flink

Scale and cost

Measured on Ten Million Assets, Not Estimated

Every figure here came out of a real repository rather than a sizing spreadsheet, and the arithmetic behind the storage number is written down so your infrastructure team can redo it with your own shape.

Response Times

At ten million assets: the front page in 1.8 seconds, a filtered search in half a second, a page of fifty assets in 0.04. Deep walks are bounded by breadth rather than by depth, so a diamond in the graph is visited once and a cycle terminates instead of hanging.

Storage

About 8.5 KB per catalogued asset, all-in — the asset, its values, its links, its arrival in History and its search text, indexes included. A hundred thousand assets is roughly a gigabyte after three years. This holds descriptions of data, not data.

No Platform Approvals

Plain Postgres. No pgvector, no AGE, no pg_trgm — nothing that needs a platform team to approve an extension, which is usually the longest pole in a catalog deployment. Any managed Postgres will run it.


Deployment

It Runs Where Your Data Already Is

KRISID installs inside your own estate — your cloud account, your VPC, your Postgres. Metadata about regulated data is often itself regulated, and a catalog that forces it into somebody else's tenancy is a conversation with your risk function that you do not need to have.

A single service behind nginx or Caddy, a managed Postgres beside it, and systemd to keep it up. Upgrades are a migration path that is proven to land a fresh install and an upgraded one on an identical database — the same columns, constraints and indexes, checked rather than asserted.

Ask For the Hosting Runbook →

What It Needs

  • Postgres 16 or later — same box or managed, RDS and Cloud SQL both fine
  • Linux — any current release; Ubuntu 24.04 and RHEL 9 are what we run
  • Python 3.12, as a systemd service
  • TLS terminated by nginx or Caddy in front; the application speaks plain HTTP on loopback and should keep doing so
  • Email any SMTP server you already have, for invitations and notifications — the credentials are encrypted with a key held outside the database and are not readable through the API

Licensing

Each installation carries a signed licence naming your organisation and the addresses this copy may serve. An expired licence warns and keeps working — taking your repository down over a slow purchase order is not a thing we are willing to do.


Being straight with you

What KRISID Is Deliberately Not

Every product document should have this section and almost none does. Each of these is a no with a reason behind it, and each becomes a piece of work the day the reason stops holding.

Not a Query Engine

KRISID composes SQL from the semantic model and shows it to you. It never runs it. Your warehouse stays the only thing that touches your data, and its access controls stay the only ones that matter.

Not a BPMN Engine

Approvals are declared, and the canvas offers only what the engine actually runs — a palette that can draw a parallel gateway which quietly never fires is worse than a smaller palette. Parallel approval with a join is the point at which we would embed a real engine rather than grow this one.

Not a Quality Tool

It records rules, owners, breaches and the obligations an asset must meet. It does not profile your data or run the checks itself. Where you already have a quality platform, its results belong here as attributes and lineage rather than as a second home.

Not Guessing at Lineage

SQL is read into proposed lineage that somebody accepts. Names that resolve to two objects are refused rather than picked between, and names that resolve to nothing are reported by name. No asset is ever invented to cover a gap.

Not a Glossary Beside the Catalog

A definition is attached to the harvested column it describes. When that column goes, the definition is visibly orphaned instead of invisibly wrong — which is the failure mode of every standalone glossary we have been asked to rescue.

Not Shipped Full of Samples

A fresh install has no assets, no sample model, no connections and one way in. Nothing is invented on your behalf, and everything the product itself supplies is marked as such, so your content and ours never become hard to tell apart.


Getting live

Install, Model, Harvest, Govern

The product is ours and the implementation is ours, so there is no vendor pointing at a partner. Most clients are looking at their own estate inside the first fortnight.

  1. Install

    Into your own cloud account, against a Postgres you control. One service, one database, TLS in front. We bring the runbook and your platform team keeps the keys.

  2. Model

    We start from the starter metamodel and bend it to your vocabulary — your type names, your attributes, your domains. This is a workbook session with your stewards, not a development sprint.

  3. Harvest

    Connect a source, preview exactly what the first sync would create, then apply it. Your estate arrives with its comments and tags, and lineage is read out of the SQL for you to accept.

  4. Govern

    Owners and stewards on real people, approvals declared for the types that need them, and the stewardship rhythm to keep it true. This is the part that decides whether any of it is still used in a year, and it is the part we have spent twenty years on.


Already own a platform

We Will Say So If KRISID Is the Wrong Answer

Plenty of organisations have already bought Collibra, Microsoft Purview, Informatica CDGC, Atlan or Alation. If the licence is signed and the programme is stuck on adoption rather than on tooling, replacing the platform fixes nothing — and we would rather do the work that helps than the work that sells.

Our Platform Services →

Where KRISID Usually Wins

  • Your assets are not tables, reports and terms — and bending a fixed model to fit them has already failed once
  • Metadata about regulated data cannot leave your tenancy
  • Per-seat pricing has priced out the people who most need to read the catalog
  • You need the model to keep moving, not to be frozen at go-live
  • A previous catalog went stale because keeping it current was somebody's second job

See It Against Your Own Estate

A demo on your vocabulary rather than ours — bring a handful of the asset types your business actually argues about, and we will model them live.

Book a Demo