Messy file in. Clean data
anywhere you need it.
Drop a spreadsheet, a PDF, or a photo of a bill. Sift models it, catches the bad rows, and grades the result. Then it delivers: clean rows into a table you own, or filed records in your ledger.
The status quo
The messy-file loop you keep re-running.
Every export drags you through the same detour before the numbers are anywhere near your books.
- 1Export the file
Another CSV lands in your downloads.
- 2Fix it in Excel
Dates, dupes and stray headers, cell by cell.
- 3Fight the importer
Every system wants its own template, and rejects yours.
- 4Hope nothing slipped
Ship it and trust the numbers held up.
…then do it all again for the next file.
Hours per file
Slow, hand-done work you repeat for every single file.
Silent bad data
One malformed date or duplicate slips straight into your books.
No receipt
Nothing tells you what actually landed, or how good it is.
The model layer
Model the file once. Deliver it anywhere.
Sift turns any messy file into one clean, validated model of your data. Tables, CRMs and ledgers all plug into the model, not the file.
Typed columns, validated rows, a grade you can trust. This is what every destination receives, however messy the file was.
Customers, invoices, and more, matched and deduplicated into your books.
Contacts, invoices, payments, and journals, drafted and ready to approve in Xero.
Supplier invoices matched against your Fortnox company, posted once the totals reconcile.
Prefer to own the data? Land clean, validated rows in a real Postgres table you can query.
Companies matched on domain, people matched on email, upserted into your Attio workspace rather than duplicated.
Contacts, companies, and deals, matched into HubSpot.
How it works
Two jobs, one engine.
Every file is modeled the same way. What happens next depends on what you dropped in.
Spreadsheets, into anything you run on
- 1
Drop the file. A CSV or an Excel export, however messy.
- 2
Sift maps it. Every column matched and typed, with a confidence you can override.
- 3
Bad rows are held. Nothing lands dirty, and Sift never invents a value.
- 4
It lands. QuickBooks, Xero, Fortnox, Attio, or a Postgres table you own. With a quality grade.
Documents, into your ledger
Today you key these in by hand.
- 1
Drop the document. A PDF or a photo of a supplier bill.
- 2
Sift reads it. Vendor, dates, document number, currency and totals, into typed columns.
- 3
Check before posting. Say which column is the total and which is the tax. Sift reconciles every row and holds the ones that do not add up.
- 4
Post it. Reconciled rows post as a Bill, an Expense or a Vendor Credit into QuickBooks, Xero or Fortnox.
Why Sift
Five reasons the loop never comes back.
No import code, ever
AI proposes a mapping for every column with a confidence score you can see and override. You confirm with a click, and nobody writes a script.
Bad data stops at the door
Every cell is checked against the model, and every document row against its own arithmetic. If the parts do not add up to the total, it does not post.
ACME Ltd,4 Mar 2025,1 234,56
name, signup , amount
A quality grade for every import
Six scored dimensions and a letter grade, so you know exactly how trustworthy an import is. The receipt the old loop never gave you.
Do it once, repeat forever
Save a mapping as a reusable template. The next file of the same shape maps itself.
Delivered into systems you already use
The model is the asset; destinations plug into it. QuickBooks, Xero, Fortnox, Attio, or a Postgres table you own. Spreadsheets and documents both end up in the same places.
Who it's for
If messy exports keep landing between you and your systems, Sift is for you.
An import studio, not an ETL platform, not another spreadsheet. Sift is the step that makes any file trustworthy before it reaches the systems you run on.
Give your next messy file a clean landing.
Drop it in, confirm the model, and let Sift deliver it where it belongs. Free to start, no card, no setup.