Data

Data model

Data in TRIVDA belongs to an organisation, is grouped into datasets, and is searched as passages. Rights and royalties attach to the dataset.

Organisation

Everything belongs to an organisation: its members, API keys, wallet, datasets, usage and earnings. An API key acts for its organisation; a connector user acts for the organisation they signed in to.

Dataset

A dataset is the unit of ownership, rights and royalty. It has an id (a short slug, for example labour-law-handbook), an owner organisation, and its chain of title:

dataset_id
Unique across TRIVDA. The first organisation to upload to an id owns it.
data_owner
Who holds the rights, as stated by the uploader.
license_basis, granted_uses
The basis of the licence and the uses it allows (search, rag, ...).
jurisdiction
Where the rights were granted.
offered
true when the dataset is published on the marketplace. Every paying organisation can then search it. false (the default) keeps it private to its owner.
indexed_points
How many passages it holds in the index.

GET /api/v1/datasets lists the datasets you can see, your own and the ones on offer, in dataset_id order. It is paged: limit sets the page size (default 500, at most 1,000), and when there are more the response carries next_cursor; pass it back as cursor for the next page. Access is flat: an organisation that can search the marketplace can search every offered dataset, with no per-dataset grants.

Document

A document is one uploaded file (or one file inside an uploaded .zip). Its id is the SHA-256 of its bytes, so the same file uploaded twice is the same document. A document keeps its source, licence and provenance; the original is stored so it can be deleted with the dataset.

Passage

A passage (a chunk) is what a search returns: a few hundred tokens of a document, split along its structure (sections, table rows, speaker turns), with the document's metadata, its licence and its readiness tier. Only passages that pass the quality gate are indexed; the rest are held back and counted as quarantined on the upload. Table rows can also be indexed as row facts, so a question about one row finds that row.

Index

Passages live in search indexes, one per embedding model family. GET /api/v1/search/collections lists the ones your key can search, with counts. A search with the default content_type of general uses the main index; another content_type can route it to a specialised one.

Collections (coming soon)

Today every uploaded file or archive becomes its own dataset. Before the pilot, collections become the product unit: a collection groups many documents (a whole archive or source) under one title, one data card and one set of terms, and a listing is how a collection is offered on the marketplace.

Existing datasets will be moved into collections without changing what you can search, what you earn or how erasure works. A scope parameter on search will let you search only your own data, only the marketplace, or one listing.