Capabilities
Everything it does, and what makes each one true.
83 capabilities across 12 areas, each with the thing in the running product that makes the claim checkable — and real screens of the workspace working, on synthetic data.
Derived, not typed
The completeness of this list is checked against a census generated from the product’s own source and compared byte for byte in its build.
Evidence on every item
Each capability names the array, table, rule set or screen that makes it true — the thing you would open to check it, not a restatement.
Status on every item
78 are in the product. 4 are built and not yet connected and say so. 1 is roadmap.
Real screens, synthetic data
Every image is the running workspace, captured from its fixture build. No live client data, no mock-ups, and the marking is in the pixels.
How to read this page
Reachable by a person with a seat today.
The implementation exists and is tested; no adapter is bound to it in a running environment, so it does not run. Said out loud rather than folded into the list above it.
Decided, not built.
The second of those three is why this page is worth reading. Four capabilities below are built, tested and not connected to anything that runs — three of the four ways a case posture can be confirmed, and semantic recall. Folding them in with the rest would make four channels look like four running channels. Leaving them out would make real engineering invisible to a buyer entitled to ask about it.
A desk of specialists, not a model with a prompt
No single discipline can value a contested claim. The medicine says whether the treatment was defensible; the law says whether the security is enforceable and who is prosecuting; the counterparty side says how they behave when it is time to pay; capital says what that is worth today. Four readings, composed — and allowed to disagree.
Four Digital Employees on every file
In the productChiron reads the medicine, Justine the case, Issac the counterparty, Eli the capital. Each is a separate reasoning run with its own budget, its own retrievals and its own conclusion.
Evidence
packages/swarm/src/specialists.ts — the frozen SPECIALISTS arrayAttribution is enforced, not requested
In the productEvery specialist owns named axes. Chiron cannot opine on venue and Justine cannot opine on causation, and a conclusion outside a specialist’s axes is quarantined before it reaches the verdict.
Evidence
packages/swarm/src/types.ts — the Axis union; the per-specialist ownedAxes weightsA composer that may not introduce a finding
In the productEve composes the four readings and explains a band she did not compute. The band is assembled deterministically in code and handed to her, because a composition step that could generate a number could generate a wrong one.
Evidence
packages/swarm/src/valuation.ts assembleBand(); EVE_INSTRUCTIONS in specialists.tsDisagreement widens the band instead of being averaged away
In the productTwo specialists at opposite extremes and four agreeing on neutral produce the same midpoint. They must never produce the same confidence, so tensions are detected, graded and stated.
Evidence
packages/swarm/src/disagreement.ts — detectTensions(), with material and unresolved thresholdsA lane that fails is named, not dropped
In the productA specialist that times out, errors, is cut off by the grounding gate or is cancelled becomes a missing voice: named on the verdict, widening the band. A run only fails outright when none of the four reported.
Evidence
packages/swarm/src/contracts.ts — the LaneFailureReason union; runSwarm() phase 3You can watch it think, and replay it later
In the productThe run streams as it happens — cohort first, then each lane, then the composition — and the same run replays from its recorded trace afterwards at whatever speed you choose.
Evidence
packages/swarm/src/contracts.ts — the StreamFrame union; trace.ts replay()The engine label is the only one that reaches a screen
In the productA disclosure filter fails a lane closed if a foundation-model name would ever reach a customer surface. What appears on screen is the composed engine and nothing beneath it.
Evidence
packages/swarm/src/disclosure.ts — assertNoDisclosure(), and its public engine labelA routed answer cannot become a mark
In the productValuation runs on pinned engines; conversational and summarising work may be routed. Persisting a mark from a trace that contains a routed call is refused, because a mark you cannot reproduce is not a mark.
Evidence
packages/swarm/src/record.ts — toValuationRecord() raises NotReproducibleError


No number without the retrieval that produced it
There is no training and no fine-tuning anywhere in this product. Valuation is retrieval-grounded: the reasoning works over comparable settled matters pulled from a corpus, and the band is descriptive statistics over that cohort. The corpus is the model, so the retrieval is pinned as carefully as the engine.
A corpus of settled matters, one document per receivable
In the productComparables are real settled outcomes indexed on the facts that move a recovery — line, jurisdiction, injury class, procedure, counterparty, counsel, posture history and vintage.
Evidence
packages/corpus/src/schema.ts — the CORPUS_FIELDS index definitionZero-recovery outcomes are indexed on purpose
In the productDismissed and dead matters are in the corpus alongside settled ones. A comparable set made only of the ones that paid is a survivorship-biased set, and it flatters every mark struck against it.
Evidence
packages/corpus/src/ingest.ts — the ingested outcome setA cohort that relaxes in a declared order
In the productWhen an exact cohort is too thin the match relaxes one dimension at a time, in a fixed order, and the relaxation is recorded. Line of business is never relaxed.
Evidence
packages/corpus/src/query.ts — the relaxation ladderA digit without a citation does not ship
In the productEvery assertion carrying a number is checked against its citations. Ungrounded assertions are quarantined, and a lane that quarantines past half its output is unusable and says so.
Evidence
packages/swarm/src/grounding.ts — validateGrounding(), laneIsUnusable()The corpus deepens from your own realised outcomes
In the productMatters this product carried to settlement are written back as comparables, de-identified. Your history makes the retrieval better; it does not move any weights, because there are none to move.
Evidence
packages/corpus/src/ingest.ts — the settlement write-back, with assertDeidentified()The corpus cannot answer across a tenant boundary
In the productThe search index has no row-level security of its own, so isolation is composed into every query, asserted before dispatch, and re-checked on every returned row.
Evidence
packages/corpus/src/tenancy.ts — CrossTenantError and FilterTamperError

It refuses to price what the evidence will not carry
A product that always produces a number is a product whose numbers mean nothing. Refusing is a capability here, and it is enforced in the schema rather than left to anyone remembering.
An unpriceable mark has no midpoint and recommends no advance
In the productIt is recorded as indicative, carries no band, and is excluded from book value rather than assumed to zero. The screen renders the absence and the reason for it.
Evidence
packages/capital/src/marks.ts — PRICED versus INDICATIVE partitioningThe database refuses a priced mark with no band
In the productThe honesty is structural. A mark that says it is priced and carries no interval cannot be stored, so there is no path by which one reaches a screen.
Evidence
packages/database/prisma/schema.prisma — the valuation constraintsDepth does not rescue dispersion
In the productConfidence is withheld on three independent grounds — a thin cohort, a band too wide to be a firm number, or no price at all. A mark with two hundred comparables whose band runs four to one is not thin and still may not be shown as confident.
Evidence
packages/core/src/cohort.ts — assessValuation(), assertPresentableAsConfident()How an unpriceable position is treated is a decision, never a default
In the productExclude it, hold it at zero, hold it at cost, or haircut it — four named treatments, and no default anywhere in the code. Somebody chose, and the choice travels with the figure.
Evidence
packages/capital/src/marks.ts — the unpriced-treatment enumerationWhether the book may be called a book value is the server’s answer
In the productPriced coverage below the floor makes the marked value management information and nothing more. The caveats travel with the figure, and the bracket is published beside the midpoint.
Evidence
packages/capital/src/book.ts — assertPresentableAsBookValue(), bracket()A withheld figure is never a zero
In the productWhere a figure cannot be established the cell carries the reason and what would have to exist to produce it. An empty cell and a measured zero are different facts and are rendered differently.
Evidence
apps/workspace/src/components/Absent.tsx; the book response presence fields




What they told you, beside what their own data supports
A counterparty’s stated collection rate is the seller’s estimate of the thing being priced. It is worth having. It is not a measurement, and storing it as one is how a book gets marked on somebody else’s arithmetic.
A claimed figure is stored as claimed, with who said it and when
In the productIt is never silently promoted to a measurement, and the surface that shows it says which it is.
Evidence
packages/contracts/src/intake.ts — the claimed-versus-derived splitThe same figure derived from their own export, beside it
In the productTheir accounts-receivable ageing and cash-posting history are parsed and the rate is re-derived, with the maturity treatment and the denominator named — because a lifetime ratio over a growing book understates recovery and rewards decline.
Evidence
packages/capital/src/derivation.ts — deriveCollectionRate() with an explicit maturity ruleToo thin to rebut is reported as absent, not as zero
In the productThe derivation carries declared floors on cohort size, measured value and history length. Below them it refuses and names the refusal instead of producing a number that looks like a rebuttal.
Evidence
packages/capital/src/derivation.ts — the refusal codes and the derivation policy floorsWhich direction a discrepancy flatters is recorded
In the productFor every reconciled metric the product knows whose interest an overstatement serves. A difference is reported with that direction attached rather than as a neutral variance.
Evidence
packages/capital/src/intake.ts — the flattered-by mapping and comparison verdictsDocuments are read and cross-checked against each other
In the productBills, records, letters of protection, lien agreements, demand letters, settlement statements, filing proofs and corporate documents are classified, extracted and reconciled — a service dated before the injury, a lien that disagrees with the billed amount, a provider not on the case.
Evidence
packages/documents/src/types.ts DOCUMENT_KINDS; reconcile/rules.ts ALL_RULESThe entity on the packet is corroborated, not taken on trust
In the productName, tax identifier and address are checked against the documents supplied — including whether the business address is a post-office box or a principal’s home, and whether the incorporation documents are in the packet at all.
Evidence
packages/documents/src/corroborate/checks.ts — the entity check identifiers

The controls are in the ledger, not in the process
A gate that reads a field the same statement can set is not a gate. Everything here is enforced where the money moves, so a control cannot be satisfied by remembering to satisfy it.
Money cannot leave before the claim is enforceable
In the productFunding checks the verified filing itself, not a nullable column. A position whose perfection has not been recorded and verified cannot be funded, and the refusal names what is missing.
Evidence
packages/core/src/position-state-machine.ts — the funding preconditionA concentration breach refuses the funding at the moment of funding
In the productNot a report run afterwards. The refusal names the breached dimension, the share, the limit, and the largest advance that would still fit.
Evidence
packages/capital/src/concentration.ts checkAllocation(); the API funding precheckThe seat that funds cannot raise the limit it is measured against
In the productSetting a concentration limit and funding a position are held by different seats on purpose, so a position being booked cannot be made to fit by moving the line.
Evidence
apps/api/src/common/roles.ts — the capability sets for funding and for limitsEvidence cannot arrive before permission does
In the productA clinical document cannot be attached to a counterparty file before the agreement permitting it exists — and cannot be back-dated before it either.
Evidence
The intake agreement precondition on document attachmentSeparations of duty are shown, not greyed out
In the productA seat that does not hold a capability is not given a disabled button. It is told which seat holds it and why the two are deliberately not the same person.
Evidence
apps/workspace/src/roles/separations.ts — each entry carries who holds it and whyThe rules the book is run by are governed, layered and visible
In the productLimits, reserve terms and retention windows resolve over a five-layer precedence, and the settings screen shows which layer won, when it took effect, and what it shadowed.
Evidence
packages/contracts/src/settings.ts — the setting catalogue and governance classesTenant isolation is a database policy, not a where-clause
In the productEvery table carries forced row-level security keyed on the session tenant, and no application role can bypass it. A cross-tenant read is invisible to the query rather than refused by a route.
Evidence
packages/database/prisma/migrations/rls.sql — FORCE ROW LEVEL SECURITY, no BYPASSRLS


Reconstructable, not merely retrievable
Retrievable means we can show you what we saved. Reconstructable means you can re-derive it. A committee, an auditor or a trustee asking why a mark was struck three years ago needs the second one.
A valuation is an artefact, not a number
In the productThe reasoning, the cohort, the comparables, the query, the pinned engine versions and the simulation seed are all recorded, so the same inputs produce the same answer years later.
Evidence
packages/swarm/src/trace.ts — the versioned trace record and replay()Marks are superseded, never overwritten
In the productRe-marking a position adds a valuation. The one it replaced stays readable, with the evidence it rested on.
Evidence
The valuation history on the position timelineAn append-only event spine, hash-chained
In the productEvery material act is an event on a ledger partitioned by aggregate. The chain is sequenced, so altering one row invalidates every row after it.
Evidence
packages/contracts/src/events.ts — the domain-event discriminated union; the audit chainA decision records a coded reason, not free text
In the productApproving, adjusting or declining captures the exact mark it was taken on, a coded reason and a note, and cannot be rewritten afterwards — which is what makes the record answer the question a trustee actually asks.
Evidence
The decision receipt written by the position command handlersEvery figure on screen names where it came from
In the productThe surfaces do not present derived numbers bare. Each carries the served field or the endpoint it was read from, so a figure can be traced without opening the code.
Evidence
apps/workspace/src/roles/standing.ts — each standing figure carries its source fieldThe book leaves the building with its provenance attached
In the productThe positions export names the source of every column in its second row, and a figure that could not be established is an empty cell with its reason — never a zero.
Evidence
apps/api/src/exports — the export basis rows

The book marks itself
A position whose status is checked when somebody remembers is a position that is wrong between checks. Staleness here is measured from the last time a posture was confirmed, not the last time a row was touched.
A re-verification queue ranked by exposure against drift
In the productWhat needs attention today, ordered by the money riding on the answer and how far past its cadence the case has gone — not by whichever row was edited last.
Evidence
packages/status/src/staleness.ts — rankStaleness(), selectForSweep()Every arrival re-marks the position it touches
In the productA posture change is an event on the spine, and an event on the spine re-values the position. The book is not re-marked on a schedule; it is re-marked on arrival.
Evidence
The status events on the domain spine and the valuation projectorsA posture conflict is modelled, not last-write-wins
In the productTwo sources disagreeing about where a matter stands is a fact worth keeping. Transitions are classified and material disagreements are raised rather than silently resolved.
Evidence
packages/status/src/conflict.ts; posture.ts isMaterialDisagreement()Confirmation from inbound documents
In the productA document that arrives and establishes where a matter stands confirms the posture as a side effect of being read.
Evidence
The document-derived status channel in packages/documentsConfirmation from court records
Built, not yet connectedA docket channel that reads the record and confirms or corrects the posture. Implemented and tested; no provider is bound in a running environment, so it does not run today.
Evidence
packages/status/src/channels/docket.ts — implemented; apps/api/src/status/status-channels.ts binds the channel array emptyConfirmation from permitted counterparty integrations
Built, not yet connectedFirm and carrier portals, where a client has granted access. Implemented and tested; no profile is bound in a running environment, so it does not run today.
Evidence
packages/status/src/channels/integration.ts — implemented, unbound in the APIConfirmation by telephone, conducted by an agent
Built, not yet connectedAn agentic voice channel that calls the office, asks the scripted question, records the answer as an event, and carries no personal data in the script. Implemented, with recording-consent handling; the realtime transport is not wired, and the workspace says so on screen rather than pretending otherwise.
Evidence
packages/status/src/channels/voice.ts and its five supporting modules; the workspace renders “transport not wired”A verification that cannot run says so, per case
In the productWith no channel bound the queue is still the truthful measure of what has not been confirmed. Each row states that it would answer “no channel”, rather than appearing actionable.
Evidence
packages/status/src/verifier.ts — the no-channel outcome; the workspace queue rows

The arithmetic underneath, done properly
Deterministic, integer-minor-unit money with no clock and no randomness anywhere in it. Every model is versioned, every run is digested, and the same inputs give the same answer in any language.
Money is integers, and rounding has a declared direction
In the productNo floating point anywhere. Every division states which way it rounds and by which day-count convention, because a rounding direction nobody chose is a rounding direction that favours whoever wrote the line.
Evidence
packages/capital/src/rounding.ts; packages/core/src/money.tsBook valuation in three separate compartments
In the productPriced value, the contribution of unpriced positions, and never-marked cost are kept apart and reported apart, with an honest bracket around the total.
Evidence
packages/capital/src/book.ts — valueBook()Reserve assessment and breach projection
In the productWhat is required, what is held, and where the ledger is going — on any of three declared bases, with the drivers named.
Evidence
packages/capital/src/reserve.ts — requiredReserve(), projectReserveBreach()A full distribution waterfall
In the productFees, then interest, then principal, then reserve, then equity, across debt and equity tranches, sequential or pro-rata, with a declared treatment for a shortfall — and the next period’s terms derived from the result.
Evidence
packages/capital/src/waterfall.ts — runWaterfall(), rollForward()Reproducible Monte Carlo
In the productBook-level simulation on a seeded generator, with the seed, the iteration count and the sorted sample recorded — so the distribution behind a mark is re-derivable rather than re-runnable-and-hopefully-similar.
Evidence
packages/capital/src/simulation.ts and prng.tsSecondary-market pricing
In the productWhat a third-party buyer would pay for a strip or a pool, at a stated discount convention, with its own caveats.
Evidence
packages/capital/src/secondary.ts — priceStrip(), pricePool()Every model carries a version, and every run a digest
In the productBook, derivation, intake, reserve, simulation, secondary and waterfall are separately versioned, and each run records a canonical digest of its inputs.
Evidence
The model-version constants in packages/capital; digest.ts inputsDigest()


Deletion, inside a ledger that cannot be edited
An append-only spine and a real erasure obligation are not usually compatible. Here they are, and the mechanism is the reason.
Personal data is sealed on the way in, per subject
In the productClaimants, intake principals and intake entities each get their own key. Sealed values are bound to their context, so a sealed field cannot be replayed into a different record.
Evidence
packages/crypto/src/envelope.ts and subject.tsDestroying the key is the deletion
In the productImmediate, per-subject, and provable — without rewriting a single row of an append-only ledger.
Evidence
packages/crypto/src/keyring.ts — the shred pathThe certificate says what survives, not only what went
In the productIt enumerates what was destroyed and what deliberately remains — the financial skeleton a trustee needs — rather than implying the remainder is not there.
Evidence
packages/crypto/src/shred.ts — the certificate assertionsWhich columns are personal data is a registry, not a convention
In the productEvery field carries a declared decision: seal it, clear it on shred, or retain it. A new column with no decision is a build failure rather than an oversight.
Evidence
packages/crypto/src/fields.ts — the per-column policy registryDuplicate claimants are found without storing an identity
In the productA tenant-scoped keyed digest lets the same person be recognised across matters without their identifiers being held in a form that could be searched.
Evidence
packages/crypto/src/identity.ts — the claimant identity keyIf sealing is not configured, the write is refused
In the productWithout key material the product does not fall back to plaintext. The event refuses to record the sealed fields at all.
Evidence
The crypto module binding in apps/api — the refusal when no key is configured
Seven seats, and each one lands somewhere it can work
A workspace that shows everyone the same screen is a workspace built for whoever specified it. Each seat here has its own landing surface, its own navigation and its own composition of every screen it can reach.
The underwriting bench
In the productThe queue sorted by materiality, the position, the band, the cohort depth, the reasoning, and the decision — on one screen, in that order.
Evidence
apps/workspace — the bench surfaceThe book
In the productPools, deployment, marked value, coverage, reserve, concentration and what may be said outside the firm.
Evidence
apps/workspace — the book surfaceThe servicing day
In the productWhat needs confirming, ranked, with the exposure riding on each answer.
Evidence
apps/workspace — the today surfaceProvider intake, run from a phone call
In the productEight sections an advisor fills while talking, saved as they go, with what is still missing always on screen and the agreements gate in the path rather than beside it.
Evidence
apps/workspace — the intake packet sectionsA door a provider can be sent through themselves
In the productA revocable, expiring link that lets a counterparty fill and submit their own packet and attach their own documents — carrying only the four capabilities it needs and explicitly withholding the rest.
Evidence
packages/contracts/src/provider-access.ts — the granted and withheld capability listsThe matter record
In the productA claimant’s matter as one object: posture, counsel, carrier, limits, and when any of it was last confirmed.
Evidence
apps/workspace — the cases surfaceEvery screen is composed for the seat reading it
In the productA controller and a portfolio manager open the same book and are shown different sections in a different order, because reserve-first and concentration-first are different jobs.
Evidence
apps/workspace/src/roles/composition.ts — the per-surface section mapsA role the build does not know fails closed
In the productIf the server sends a role this workspace has no surfaces for, it refuses rather than rendering a default screen for somebody whose permissions it does not understand.
Evidence
apps/workspace/src/session — the unsupported-role refusalNotifications that report their own delivery failures
In the productDelivery is a state, not a flag. An undelivered notice renders as a failure naming the channel and the server’s reason, rather than sitting in a feed looking delivered.
Evidence
apps/workspace/src/notifications — the delivery discriminated union



It explains itself, in place, to the seat reading it
A product with this many refusals in it has to say why, where the refusal happens. Help here is filtered on the server by surface and by seat, so an underwriter’s browser never receives the controller’s prose.
Contextual help scoped to the screen and the seat
In the productWhat this screen is, what is deliberately NOT here, the controls, the articles, and what other seats see — in that order, because “not here” is the question this product generates most.
Evidence
packages/help/src/articles.ts, scoped by surface and roleA glossary written for this business
In the productLien, perfection, cohort depth, posture, reserve basis — defined, and then defined again as they are used here specifically.
Evidence
packages/help/src/glossary.tsGuided walkthroughs of the jobs that span seats
In the productOriginating a position, approving a thin-cohort valuation, perfecting a lien before funding, closing a pool period.
Evidence
packages/help/src/walkthroughs.tsSupport tickets that carry no personal data
In the productThe ticket path redacts before it sends, and the redaction is checked rather than assumed.
Evidence
packages/help/src/redaction.ts and support.tsGrounded answers over your own records
In the productAsk a question of the ledger and get an answer whose every sentence passed a grounding gate against your own events, with the evidence attached — and a refusal, with a reason, where it cannot ground one.
Evidence
packages/memory — the three memory tiers and the grounding gate; the ask surfaceSemantic recall across conversations, documents and traces
Built, not yet connectedRetrieval over what this tenant has already said, filed and reasoned about. Implemented; the index is not provisioned in a running environment, so the product answers a truthful refusal instead.
Evidence
packages/memory/src/semantic.ts — implemented; apps/api/src/conversation/unavailable.ts refuses by design until provisioned

What it takes to run it
A product sold to a firm has to be administrable by that firm, and operable by us, without either one reaching into the other.
Your firm resolves from your own address
In the productEach tenant is reached at its own hostname and the workspace names the firm it resolved before a credential is typed. The tenant is decided server-side; a request body cannot select one.
Evidence
The tenant-resolution service and the edge host bindingSession in a cookie, never a token in the page
In the productNo access token is ever held in JavaScript. One refresh is shared by every request in flight, and an expired session is retried once and then ends cleanly.
Evidence
apps/workspace/src/transport/apiClient.ts — the single 401 policyAccount lockout in front of rate limiting
In the productRepeated failures lock the account for a declared window, which is a different control from throttling an address and is applied before it.
Evidence
The login attempt and lockout configuration in apps/apiTenant administration by the firm, not by us
In the productSeats, invitations, role changes and separations are the firm’s own administrator’s job, and the role matrix is read from the table that decides it at runtime.
Evidence
apps/workspace — the admin surface; apps/api users controllerEdition entitlements and quotas
In the productFive capability switches and three quotas per tenant, resolved against a declared ceiling, with two settings locked at the platform layer and not overridable by anyone.
Evidence
apps/admin/src/lib/editions/mrf.ts — the entitlement and setting definitionsWrites are idempotent by key
In the productEvery mutating request carries an idempotency key, so a retry after a timeout does not fund a position twice.
Evidence
The idempotency key header on the API contract and the workspace transportAn unconfigured dependency refuses; it does not stub
In the productStorage, the valuation engine and document analysis each bind an explicit unavailable implementation when unconfigured, and answer a service-unavailable with the reason — rather than a plausible empty result.
Evidence
The unavailable implementations bound in apps/apiA second edition of the same operating system
RoadmapMedical receivables finance is the first edition, chosen because it is the hardest. The edition machinery — catalogue, entitlements, per-edition data scope, provisioning — is built and carries exactly one edition today.
Evidence
apps/admin/src/lib/editions — the catalogue currently holds one edition

Why this list can be trusted to be complete
A hand-written inventory has one guaranteed property: it agrees with itself. Nothing reads the code, so it cannot disagree with the code, so it drifts — and the first thing that can falsify it is a customer.
So the denominator here is not typed by a person. A generator in the product repository extracts every number in a capability census from a named array, union, enum or decorator in the source, and the build regenerates it and compares it byte for byte. Landing a specialist, a document kind, a ledger event or a help article without regenerating the census is a failed build.
Measured on the transcription below: 43 dimensions and 539 declared capabilities in the source — 4 specialists, 10 owned reasoning axes, 17 document kinds, 11 cross-document reconciliation rules, 14 entity corroboration checks, 36 indexed fields on a comparable, 54 ledger events, 27 named authorisation capabilities, 13 separations of duty, 18 governed settings and 57 help articles.
That census is evidence, not a catalogue, and it is not published. It also counts HTTP routes and database models, which are plumbing a buyer neither sees nor wants enumerated. What is published is the 83 items above: the ones a person uses.
Census figures transcribed by hand from EliAI-MRF PR 337, master on 2026-09-23, because the two repositories do not share a build. Where they disagree, the generated census is right and this page is stale.
If any of this is unfamiliar, it is the wrong list to start with
This page assumes you already commit capital against evidence somebody has to read. If you are not sure that is you, the shorter question is whether your desk looks like this one.
Pricing
Priced against the book, not against the feature list.
Nothing above is an upsell tier. Every capability marked as being in the product is in the product, for every seat entitled to it. What shapes a number is the size of the book, the seats, and how much of the corpus has to be built before the first mark is worth striking.
- Every capability listed as in the product is included; none of them is a module.
- Seats are per person, and the seven roles are not priced differently from one another.
- Quotas on positions and documents are set per tenant against a declared ceiling.
- There is no published list price for this edition; the pricing page says what shapes a quote.
Bring us a file and we will show you the reasoning on it.
Not a demonstration tenant with our data in it — one of your own matters, with the specialists reading it and the band they arrive at, including the part where it declines to price something.
EliAI™ MRF is generally available. Screens on this page are the real workspace on synthetic data.