Budget · Expenses

Photograph it at the counter.

Your PM stops at the supply house four or five times a week. Ten seconds with a camera at the register replaces ten minutes with a keyboard at nine at night — and the receipt is on a phase before the tailgate is closed.

Start for free See the ledger
Receipt photographed on a desk beside a set of paper plans
Extracted by BLT 7:52 AM
Ferguson Plumbing Supply
Photographed at the counter · queued offline
3/4" PEX-A coil, 300 ft ×2418.00
PEX expansion rings 3/4" ×10062.00
Toilet flange, cast iron ×496.40
ABS closet bend 3"×4" ×471.60
Shower valve rough-in body ×3387.00
Pipe dope & primer24.18
Total$1,059.18
Cedar StreetRough-inPlumbing materials
Receipt OCR

Six line items, one photo, no typing.

BLT reads the vendor, the date, the tax, and every line on the paper. It proposes a project, a phase, and a category from what was bought and where the phone was standing. The human confirms — and the confirmation is the only keystroke in the whole loop.

MaterialsRough-in FuelOverhead Tool rentalFoundation Dump feesSite prep PermitsPre-con Sub materialsElectrical
The photograph stays attached forever. “What was this for?” is answered by looking, not asking.
From paper to phase

What happens between the register and the ledger.

Step 01

Shoot

One tap from the home screen. The camera opens straight to the receipt frame, gloves on, in the sun.

Step 02

Read

Vendor, date, subtotal, tax, and each line item come off the paper. Faded thermal print and a folded corner are the normal case, not the edge case.

Step 03

Assign

Project, phase, and category proposed from the contents and the GPS. The PM taps to confirm or changes one field.

Step 04

Review

It lands in the weekly queue with the photo attached. The office approves, reassigns, flags, or rejects.

Step 05

Post

Approved, it becomes actual on the line. Nobody retyped a number anywhere in the chain.

No signal at the yard? Steps 01 through 03 run on the phone. The upload happens when you hit the highway.
Weekly review

One screen, four verbs, forty receipts.

Thursday afternoon, the office opens the queue. Every expense from the week sits in one list with its photograph, its extracted lines, and the phase it wants to land on. Keyboard down the list, decision on each.

Approve

The extraction is right and the phase is right. It posts to actual and joins the settlement run.

Reassign

Right receipt, wrong bucket. Move it to another project, phase, or category and the totals on both sides correct themselves.

Flag

Something needs an answer before it posts. Flagging opens a thread on the expense itself and pings whoever submitted it.

Reject

Personal, duplicated, or belongs to another company. It leaves the ledger with a written reason and stays in the record.

A receipt that has been approved is not a receipt anyone opens again. That is the whole point of doing it once a week, on the same afternoon, with the photographs in front of you.
Bank import & matching

Every card charge finds its receipt.

Pull the statement in as CSV, OFX, or QFX. BLT matches each charge to a photographed receipt on amount, vendor, and date, then shows you only the ones that didn’t pair.

Statement · card ••4417 · week of Mar 10
MAR 10MatchedFerguson Plumbing Supply — paired to receipt photographed 7:52 AM, Cedar Street rough-in.1,059.18
MAR 11MatchedHome Depot #4821 — paired to receipt photographed 2:14 PM, Cedar Street framing.386.40
MAR 11No receiptShell #2290, Route 9. Waiting on a photo or a written reason from M. Ortiz.94.62
MAR 12MatchedUnited Rentals — paired to the trencher rental raised as a purchase request on Monday.412.00
MAR 13Amount differsWhite Cap posted $18.40 above the photographed total. Restocking fee on the returned anchors.744.30
MAR 14MatchedAce Hardware #118 — paired to receipt photographed 4:41 PM, Cedar Street punch.61.09
Four of six paired without a human. The other two are the only rows anyone reads.
Two things that decide whether it gets used

Dead zones and unanswered questions.

Expense tracking dies for two reasons: the app failed at the one moment it was needed, or nobody could remember what a charge was for. Both are handled at the level of the product, not the policy.

Offline capture

A dead zone is a state, not an error.

  • Shoot, extract, and assign with no bars — the reading happens on the phone
  • Queued items show a count, not a warning, and never block the next capture
  • Upload resumes the moment signal returns, in order, without a tap
  • Photos are kept full resolution locally and compressed on the way up
  • A phone that dies at 4 p.m. still has the morning’s receipts when it charges
Comment threads

The question lives on the expense.

  • Every expense carries its own thread — ask on the row, not in a group text
  • Flagging an expense starts the thread and notifies the person who submitted it
  • The answer is attached forever, so the same charge is never queried twice
  • Photos, purchase requests, and time entries all carry threads the same way
  • Six months later the reason is one tap from the number. See messaging

Stop reconstructing the week on Sunday night.

Photograph the receipt at the counter and let the ledger keep itself. Free on one project, full AI, no card.