Reference design — not client work

Expense Reports and Reimbursement

How a receipt becomes an approved, posted expense without anyone retyping it — with the failure modes, a typical build cost, and what we leave out.

The workflow: Expense reports and reimbursement
What it does: A receipt arrives by email or upload, its details are extracted, checked against your expense policy, approved by the person who owns the decision, and posted to your accounting tool.
Who it is for: Owner-led consultancies and agencies where one person approves expenses.

This is a reference design: a worked example of how we would structure this workflow. It is not a description of work done for a client. We are a new firm and have no client results to report.

Workflow overview

Receipt in, expense line out. Five stages, one trigger, and a person kept in the loop wherever a rule cannot decide.

  1. Receive — a receipt lands in a dedicated mailbox or upload form
  2. Extract — date, vendor, amount, currency, and category are read from it
  3. Check — the expense is compared with your written policy
  4. Approve — the approver accepts, rejects, or asks a question
  5. Post — the approved expense is created in your accounting tool and the submitter is told

The workflow stays inside our standard scope bound: one trigger, no more than ten steps, no more than three systems. The three systems here are (1) the mailbox or upload form, (2) the tool where approvers respond, and (3) the accounting tool. If approvers respond by email, systems (1) and (2) are the same.

The trigger

A receipt arrives: a consultant forwards it to a dedicated expenses address, or uploads a photo or PDF through a simple form. That is the only trigger. Nothing runs on a schedule and nothing depends on month-end.

The steps

Step 1: Capture the receipt

Failure mode: Receipts arrive as blurry photos, screenshots, or emails with no attachment
Fix: An automatic reply asking for a clearer copy; the record stays open until a readable file exists

Step 2: Extract the details

Failure mode: The extraction reads a field wrongly (a total picked from the wrong line, a date in the wrong format) and nobody notices
Fix: Extraction is treated as a draft. Fields that are missing or implausible send the expense to a person instead of onwards, and the approver always sees the original receipt next to the extracted values

Step 3: Check against policy

Failure mode: The written policy and the real policy differ, so the rules block things the owner would happily approve
Fix: The rules are few and live in one editable list, not buried in the automation. The first weeks of use show which ones to change

Step 4: Route for approval

Failure mode: The approver is away and expenses sit unanswered
Fix: A named backup approver and an escalation after the reminder period. The decision always stays with a person

Step 5: Post to the accounting tool

Failure mode: The posting fails (a category that does not exist, a connection that expired) and the expense is stuck half-done
Fix: Failed postings go to an exceptions list with the error, and the submitter is not told "posted" until the entry exists

Step 6: Keep a log

Failure mode: Expenses are lost between steps and nobody knows
Fix: The weekly open list is the check that nothing has silently stalled

The failure modes

Failure Impact Detection Prevention
Extraction misreads an amount or date Wrong figure posted to the books Approver compares the original receipt with the extracted values Extraction is a draft; missing or implausible fields go to a person
The same receipt is submitted twice Duplicate reimbursement Duplicate check on vendor, amount, and date Flag matches for the approver rather than silently discarding them
Policy rules out of date Legitimate expenses blocked, or limits ignored Approver overrides pile up on one rule Short rule list in one place, reviewed after the first weeks
Approver does not respond Staff wait for reimbursement; month-end gets messy Weekly list of open approvals Reminders, a named backup approver, escalation
Posting to accounting fails Approved expense never reaches the books Exceptions list; "posted" status requires a real entry link Category list kept in sync; connection expiry alerts
Expense assigned to the wrong client or project Billable cost missed or mis-billed Submitter confirms the assignment in Step 1 Required field; choices come from your live project list

Rough build cost

Component Cost Range Notes
Receipt capture $400-$900 Dedicated mailbox rules or upload form, file storage, expense record
Detail extraction $600-$1,500 Reading receipts, handling several formats, confidence rules
Policy check $400-$1,000 Rule list, duplicate detection, plain-language reasons
Approval routing $500-$1,200 Approver message, reminders, backup approver, replies to the submitter
Accounting posting $700-$1,800 Entry creation, category and project mapping, error handling
Testing + handover $300-$800 Test receipts, runbook, walkthrough
Total $2,900-$7,200 Depends on the accounting tool and how varied your receipts are

These are typical market costs to build this reference design. If your version fits our scope bound (at most 3 systems, 10 steps, 1 trigger), our fixed price is $4,500 for a First Workflow Build.

Timeline: our fixed-price build commits to 5 weeks from a signed spec, including testing and handover.

What this excludes

How we'd approach building this

  1. Collect real receipts — A batch of recent receipts, including the ugly ones, shows what the extraction has to handle
  2. Write the policy down — The few rules you actually apply, in plain words, with the owner confirming each
  3. Map the posting — Which accounting entries, categories, and projects an approved expense must create
  4. Build the path end to end — Receipt in, entry out, with every failure going to a person rather than disappearing
  5. Test against the collected receipts — Compare extracted values to the originals and tune the rules
  6. Run it live with the team — Real submissions, with the owner watching the exceptions list in the first weeks
  7. Hand over — Runbook, who owns the rule list, and what to do when a posting fails

Questions this raises (for the client)

  1. Who approves expenses today, and who covers when they are away?
  2. What is your written expense policy, and how much of it do you actually enforce?
  3. Which accounting tool holds the books, and which expense categories and projects exist in it?
  4. Are any expenses re-billed to clients? If so, how do you want that flagged?
  5. Do your receipts include anything sensitive that should never pass through an automation?

Related teardowns

See where you stand

This reference design is one piece of our method. The assessment will tell you whether you're ready to build, or what's missing first.

Take the free assessment