Document intake · for market data & information teams
Forward it once.
It arrives read and matched.
Every account gets its own inbox address. Forward an invoice, contract or statement, attachments and all, and it is read into line items and amounts, matched to the right contract. No manual entry, and nothing changes until it is published.
One intake
Every document enters through the same door
A vendor invoice and an internal headcount list look nothing alike, and they take the same route in, forwarded or uploaded: one intake, one place to look when you need to know what arrived and what it did.
Before anything is read
Nothing reaches the model without instructions
Handing every incoming file to a model and asking it what to do is quick to build, and a confident guesser is not what should be running licence administration. So each document passes the same checks first, and those checks are plain rules.
Who sent it
The address it arrived from is checked against the senders your account knows, so a document is attributed before anything is read out of it.
What it should contain
An invoice, a contract and a personnel list each have a shape. Firmfact knows which one it is looking at and what has to be present before the contents count as read.
What it may change
Extraction is scoped to the vendor and the contracts it resolves to. A document cannot reach across your account and change entries it has nothing to do with.
What a person confirms
The change is prepared and shown with the reasoning behind it, next to the source document. By default, a person publishes it.
What the AI does
The reading a rule cannot do
Vendor documents do not agree on a layout, and they change it without telling anyone. So firmfact does not look for a value in a fixed spot on the page. It recognises the data points that matter, the vendor, the period, the reference, the amounts, wherever they happen to sit, and matches them to what your account already holds.
Below, a Bloomberg SID report arrives and is read into users, products and contract items, mapped to your organisation. The extraction stands beside the source file, so every value can be traced back to the page it came from.
Who decides
It prepares the change. You publish it.
Automation you cannot overrule is someone else's opinion arriving faster. Every step of intake is shown with its reasoning, next to the document it came from, and none of it changes your data until a person says so: by publishing it, or by switching on auto-import for a sender they trust.
A clean match takes a moment to confirm. A variance comes back as a precise call to action, the line and the amount that disagree with the contract, rather than a month-end research project. The work that is left is the decision.
Kept in Europe
Your documents, processed in Europe
Contracts and invoices are among the most sensitive things a firm holds, so firmfact runs on EU-primary infrastructure hosted in Germany and keeps an audit-ready history of every change. The AI reading is done at an EU regional endpoint, with zero data retention enabled and the provider-side training setting disabled for our account.
Part of the platform
What the documents feed
Market data management
Where every read document lands, contracts and cost together.
Spend management
Invoices read and matched become allocations, budgets and the variance you can act on.
Data rights & usage
The rights in those agreements, kept with the contract and its source document, next to real usage.
Document intake, answered
How do documents get into firmfact?
Every account gets its own inbox address. Forward an invoice, a contract or a statement to it, attachments and all, and it is read into structured data: line items, amounts, periods, matched to the right contract. There is no template to fill in first. You can also drop files on the upload page, or send a folder from a terminal with the firmfact CLI; they are read and matched the same way.
What does the AI actually do with a document?
It does the reading a fixed rule cannot. Rather than looking for a value in a fixed position on the page, it recognises the data points that matter (vendor, period, reference, amounts) wherever they sit in the layout, and matches them to what your account already holds. The checks around it, who sent the document, what it should contain and what it may change, are rules, not model output.
Does firmfact change our data automatically?
Not unless you choose to. By default intake prepares the change, shows its reasoning beside the source document, and a person publishes it. An account admin can switch on auto-import for a sender you trust, per document type: those emailed documents are published only when the publish checks pass, and anything else waits for a person. Clean matches are quick to confirm; a variance arrives as a specific question rather than a research project.
What happens when an invoice does not match the contract?
The difference is surfaced as a variance against the contract it was matched to, with the line items and amounts that caused it. That is the point of reading the document in the first place: the variance points at what changed, so the answer does not have to be reconstructed by hand each month.
Where are our documents processed and stored?
On EU-primary infrastructure hosted in Germany, under Dutch law. The reading itself runs against Mistral AI's EU regional endpoint, served from EU and EFTA data centres, with zero data retention enabled on our account and the provider-side training setting disabled; only the content a request needs is sent, and storage credentials never are. Details are on the European infrastructure and security pages.
Forward your first document
Start for free, with no trial clock. Signup includes a Production account for real setup and a Demo workspace with clearly marked sample data.