Skip to main content
Awards 2026 winner

Firmfact wins Most innovative market data project/initiative at the Inside Market Data & Inside Reference Data Awards 2026.

Read about the award

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.

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.

€ SAMPLEBANK-X742@INBOX.FIRMFACT.COM

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.

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.

Firmfact reading a Bloomberg SID report: the source file beside the extracted users, products and mappings
A Bloomberg SID report arrives; firmfact reads it into users, products and contract items, mapped to your organisation

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.

GDPR aligned Hosted in Germany

What the documents feed

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.