{{define "content"}}
Ingest, derive, connect, retrieve — with the reasoning kept and shown at every step.
Every stage is a queued job with a lease rather than a lock, so a worker that dies has its work returned to the queue rather than holding it forever.
The score is the weighted sum of the signals that fired, capped at 1.00, under a versioned scoring model. Each signal is stored with its own value, strength and weight, so the total is arithmetic you can check.
| Signal | Weight | What it means |
|---|---|---|
{{.Signal}} |
{{printf "%.2f" .Weight}} | {{.Means}} |
Repeated signals of one type contribute 1.0, then 0.5, then 0.25, then nothing. Breadth of evidence beats repetition: a document mentioning one company twelve times should not outrank one that relates on several independent grounds.
A query runs through several independent paths — keyword, vector, entity, title, and expansion through relationships — each producing its own ordering. They are fused by reciprocal rank rather than by adding scores, because a keyword score and a cosine distance are not on comparable scales and whichever had the larger range would dominate.
Every result carries its reasons in plain words:
Relevance is normalised against the best result in the same response, so it is comparable within one result set and not across queries. The interface says so rather than leaving you to assume otherwise.
These hold regardless of what the model returns:
S1, S2… — item IDs are never shown to
the model, so a fabricated citation cannot resolve to a real record.Each person who signs in gets a private workspace. No document, entity or relationship is shared with anyone else, and the boundary is enforced in every storage query rather than in a filter that could be forgotten.
The cost is worth stating plainly: relationship discovery never spans users. Two people who upload documents about the same contract get no link between them, because as far as Relata is concerned they are separate corpora.