Month-end reconciliation · construction

Send the month's tickets and invoices. Get back the close — matched, flagged, and ready to load.

We read every delivery ticket your foreman signed — not just the invoice. Every line matched to its PO and cost code, every quantity or price over tolerance flagged with the evidence behind it — the 18 yards on the ticket against 14 on the PO, the overbill that would've ridden into your WIP. You approve the lines we flag — not every line in the close. Nothing posts to job costing until you do.

Early access Send the month however your team keeps it · a reconciled workbook back, ready to load · you're buying a reconciled close, not a software license · no price until we've scoped your close.
Your review · Invoice 3 of 9sample data
VendorLehigh Hanson Ready Mix✓ matched to PO-20104
PO line14.0 CY · cost code 03-310✓ from the PO
Received18.0 CY on ticket⚑ +4.0 CY vs PO — needs you
PackFields flagged 1 of 3 fields for your review
nothing posts to job costing until you approve it
  1. 1Send the pile
  2. 2We read the tickets
  3. 3We match to your POs
  4. 4We flag what's over
  5. 5You approve the flagged lines
  6. 6Reconciled workbook
  7. 7Load and close
The line you didn't catch

It doesn't stay a small error. It rides into the job.

A broken VLOOKUP matched the wrong PO. The overbill rode through three pay runs into committed cost. The job looked fine until the WIP report — and by then it was underwater, in front of the lender, with your name on it.

Every mismatch we flag is a dollar you decide on before it posts — instead of finding it next quarter. The ones that are real overbills, you catch before you pay.

job-4471 · this month's closeexample · sample data
No software to learn

You don't need another login. You don't need to train your team on a portal. You don't need to connect your Procore instance.

Your admin emails the pile the same way she'd hand it to you. We read it, match it, and flag what's over tolerance. You open the flagged lines in your browser, approve or kick back, and load the workbook. That's the entire workflow.

You send us — however your team keeps it
📷 ticket
photo
MAY — LEHIGH
what you receive
.xlsx
reconciliation.xlsx
Job 4471 · Riverside Pump Station · May close
20 lines reconciled
8 matched 8 flagged 4 open
#DescriptionPOPO qInvVarStatus
57#5 rebar 60ft20097480480
593000psi mix201041418+4⚑ qty
60Pump service1 dayno PO
ReconciliationExceptionsEvidence indexMappings
Formatted to load into your system — we map the columns to your import template
sample data

You send the month. We send back the close.

How we check

We read the ticket, not just the invoice — and match against YOUR POs and cost codes.

Most matching tools compare the invoice to the PO. We compare the invoice to the PO AND to the delivery ticket your foreman signed. That's how we catch the 8.5 yards on the ticket against 10 on the invoice — an overbill no invoice-only tool would flag. Your purchase orders, your vendor names, your cost-code structure, your tolerances.

A line, checked against your PO

Matched, flagged, or open — never auto-posted.

a line off the ticket & invoicevendor, quantity, unit price, read off the delivery ticket and the supplier invoice
quantity matches the PO within tolerancematched to the purchase order and cost code — accepted, done
invoiced quantity exceeds receivedover your tolerance — flagged for your review, never auto-approved
unit price above the POflagged with both numbers — you see the delta, you decide
into your reconciliation — matched, flagged, or unmatchednever a forced match. Every line links back to its ticket, invoice, and PO

You approve what we flag. We do the rest.

Your 15 minutes

This is the only screen you open. We did the rest.

The lines that match the PO within tolerance are already done. You open the ones we flagged, see the ticket and invoice side by side, and approve or kick back each one. Your name goes on the close.

Job 4471 · month-end close · 3 of 6 lines flaggedsample data
#DescriptionCCPO qtyRecv'dInv qtyPO $/uInv $/uVarStatus
57#5 rebar, 60 ft03-200480 lf480 lf480 lf0.920.92✓ matched
58#4 rebar, 40 ft03-200320 lf320 lf360 lf0.880.88+40 lf⚑ QTY — needs you
593000 psi 3/4 mix03-310141818142.00151.00+4 CY, +$9⚑ QTY+PRICE — needs you
60Pump service03-3101 day450.00no PO⚑ OPEN — needs you
61Tie wire, 16 ga03-20012121218.5018.50✓ matched
62Chairs, 4 in (1000ct)03-20022264.0064.00✓ matched
The matched lines are done. You only open the 3 we flagged.
58#4 rebar, 40 ft · 03-200 — invoice vs purchase ordersample data
Harris Rebar · PO-20097⚑ QTY
Invoice 360 lf × $0.88/lf = $316.80
Purchase order PO-20097 320 lf × $0.88/lf = $281.60
+40 lf overbilled · $35.20 over PO — price matches, qty doesn't
593000 psi 3/4 mix · 03-310 — invoice vs purchase ordersample data
Invoice INV-9981 · Lehigh Hanson 18.0 CY ⚑ +4 vs PO × $151.00/CY ⚑ +$9 $2,718.00
PO-20104 · CL-1 General 14.0 CY × $142.00/CY $1,988.00
Supplier invoice INV-9981 18.0 CY · $151.00/CY ⚑ +$9/CY vs PO cost code 03-310 · verified against PO
Purchase order PO-20104 14.0 CY · $142.00/CY ⚑ 4 CY under ticket
Ticket18.0 CY received · signed by R. Gutierrez
Invoice18.0 CY × $151.00 = $2,718⚑ +$9/CY
PO14.0 CY × $142.00 = $1,988⚑ +4 CY
$730 over PO — 4 extra CY at PO price ($568) + $9/CY price bump ($162)
60Pump service · 03-310 — no purchase order on filesample data
CemenTech · INV-3382⚑ OPEN
Invoice INV-3382 1 day × $450.00 = $450.00
No purchase order
on file
Can't match — needs a PO or approval before it posts

Nothing posts to job costing until you approve it. Every line in your close was either matched to the PO within tolerance, or approved by you.

Your team

Your team doesn't change a thing.

You've bought construction software before. Your AP clerk didn't use it. Your foremen didn't upload to it. It sat on the shelf and you went back to the spreadsheet. We know, because that's who we built this for.

Your foremen keep texting photos.They text the ticket photo to the PM, the PM forwards it. That's the intake. We read it from there.
Your AP clerk keeps her spreadsheet.She emails the invoices and the PO export. Same thing she does now, same folder, same routine.
You open the flagged lines, not the whole close.We match the month. You review the exceptions in a browser — the evidence behind each one, side by side. Approve or kick back. Load the file.

You're buying a reconciled close — not a software license your team has to learn.

Every close flags cleaner than the last.

The vendor names, the cost-code routing, the tolerances you approve become the rules we match against next month. So the pile of lines that need your review keeps shrinking, and the matches keep tightening — close after close, your reconciliation gets sharper.

April
14 flagged
May
5 flagged
corrections from April became standing rules in May · sample data

And it stays yours. You keep the workbook every month — the matched ledger, the evidence, the decisions.
Month-to-month, stop after any month, walk out with all of it.

Early access

Get on the early-access list.

Leave your email and a couple of details about your close — we'll add you to the list and email you as we open spots. No price until we've scoped your month, no charge to find out. Want to preview how you'll review the flagged lines? See a sample close → — it's live, no waiting.

Ready to see it on your data?

Send a few redacted docs — a couple of delivery tickets, the matching invoices, and one PO — and we'll run a sample reconciliation on your data, not a canned demo. A few documents, not your production month; redact whatever you want. Optional — most people start with just the email above. We use your sample only to build your reconciliation and delete it on request — we don't train on your data.

What we do — and what we don't
We flag, we never guess.A line that doesn't match gets an “unmatched” flag — never a forced match to the nearest PO.
Nothing posts to job costing until you approve it.Every matched line was within tolerance, or approved by you.
Every matched line carries its evidence.The delivery ticket, the invoice, and the PO behind it — so you can stand behind it at close.
If it doesn't reconcile, we re-run it.You never get a half-matched mess back.
The work ends when you have the file.We prepare the reconciliation — you approve it, your system pays it. We don't touch your AP and we don't post anything.
We don't invent a PO that isn't there.A line with no PO gets an “open” flag — never a forced match. We don't post to your GL; you load the file.
Questions

Common questions.

Our POs are a mess and our cost codes aren't clean. Can you still match?

That's the point — send it the way your team keeps it. We match what reconciles, flag what's over tolerance, and surface what has no PO at all. You never get a false "all good" on a line we couldn't actually match.

Do you connect to my Procore / Sage / Foundation?

We export a job-cost import file formatted to load straight into your system — no re-keying. You load it; we don't touch your GL and nothing posts until you do. It's a clean hand-off, not a live two-way sync.

If I send a sample, what happens to my documents?

We use them only to build your sample reconciliation, and delete them on request. We don't train on your data, and we don't share it. Send only what you're comfortable with — redact whatever you want; a sample is a few documents, not your production month. And you don't have to send anything to get on the list — the email is enough.

Am I locked into a monthly contract?

No. Month-to-month, stop after any close. You keep every reconciled workbook — the matched ledger, the evidence, the decisions — even if you walk away.

Why not just use AP automation software?

AP automation gives you the matching engine — your team uploads the documents, configures the rules, maps the vendors, and operates the software. We do the processing: we read your tickets and invoices, match them to your POs, and prepare the reconciliation with the evidence behind every line. You open the review room, approve the flagged lines, and download the workbook. You don't operate the software — you approve the result.

Is this AI?

We use AI to read the tickets and invoices and propose the matches. But you're buying a reconciliation you approve — not an AI subscription. When a line is over tolerance or has no PO, it flags it for your review. It never auto-posts to your job costing.