Internal operations

Expense approvals for a 50-person company

An employee photographs a receipt and submits an expense against a project. It goes to their manager, then to finance above a threshold. Approved expenses export to the accounting system. Everyone can see where their own claim is stuck.

Automatically generated draft

Written by machine against our own engineering playbook. The company is invented; the decisions are the ones we would make on a real build. A reviewed blueprint goes further — nine sections, agreed line by line, and it is what the build is tested against.

Section 01 · What has to work

An employee photographs a receipt, routes it through manager and threshold finance approvals, and tracks where the claim is stuck.

Section 03 · Screens

Every screen, and what it is for.

  • ›Expense Capture — Employee photographs receipt and inputs project, amount, and currency; instant camera launch.
  • ›Claim Tracker — Employee views their submitted claims and exact approval status; instant load from cache.
  • ›Manager Queue — Manager reviews and approves pending reports; instant row action.
  • ›Finance Review — Finance reviews claims exceeding threshold; instant sorting by amount.
  • ›Export Log — Finance views exported batch history to accounting system; instant status filter.

Anything not on this list is not in version one. That is what keeps a fixed price fixed.

Section 04 · The data model

What it stores, and who can read a row.

expense_claim

id uuid, employee_id uuid, project_id uuid, amount numeric(10,2), currency text, receipt_url text, status enum(draft, pending_manager, pending_finance, approved, rejected, exported), created_at timestamptz

Access · Employee reads own claims; manager reads report chain; finance reads all.

audit_log

id uuid, claim_id uuid, actor_id uuid, action text, comment text, performed_at timestamptz

Access · Employee reads own claim logs; finance reads all logs.

approval_rule

id uuid, threshold_amount numeric(10,2), currency text, approver_role enum(manager, finance), active boolean

Access · Finance reads and writes; employees read active rules.

Those access rules belong in the database, not in the screens. Someone who edits the address bar still cannot read a row that is not theirs — and the test that proves it blocks delivery if it fails.

Section 05 · States

draft → pending_manager → pending_finance → approved → exported | rejected

Most scope arguments three weeks into a build are really arguments about a state nobody named at the start.

Section 06 · Where this breaks

What bites products like this one.

Poor cellular connectivity during field capture leaves employees unable to photograph and submit receipts.

Queue submissions in local device storage and sync automatically when network connectivity returns.

Manager reassignment mid-approval leaves claims permanently stuck in an inactive approval queue.

Derive approval routing dynamically from the current active organization chart at evaluation time.

Section 08 · Deliberately left out

What version one does not do.

  • ×Multi-currency conversion rates via live API — Manual currency entry with static monthly rates is faster; add live FX in v2.
  • ×Direct accounting system API sync — CSV export to download and upload manually avoids fragile API integrations in v1.

This is the section that protects the date, and the only place in the document where somebody says no. It is also why clients trust the rest of it.

Still open

What we would ask before quoting.

  • Which accounting system must the export format match?
  • What is the exact monetary threshold that triggers finance approval?

Half of this already exists

Doc Intake

The paperwork half of this is a solved problem: documents read on arrival, validated against your rules, and a person asked only about what does not add up.

It is one of our pre-built products: the code is handed over to you, adapted to your own wording and rules, and the rest of the specification above is built on top of it rather than from scratch.

Your product, not this one

Get this written for what you are actually building.

Describe it in a sentence and the generator returns the same sections for your own product. Free, no email, nothing saved to a list.

Next step

Find out if your idea fits in 10 working days.

Tell us what you want to build. We reply the same day with a straight yes, no, or here is what we would cut.

NDA available on request