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.
offeredtruewhen 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.