Nonprofit & Grants

Capture the receipt once. The packet comes out finished.

A reconciliation system for a nonprofit funded by the City of Detroit. A receipt is photographed at the moment of spend, read automatically, confirmed by a person, and carried through to the month-end packet the approvers already accept. Nobody sorts paper into piles again.

Team Pursuit Global grant expense reconciliation dashboard

Scroll to explore ↓

The problem

Receipts, printed and sorted into piles.

Nonprofits funded by a city, a state or a foundation report every dollar back, usually through a fiduciary in the middle. The reporting is monthly, the format is fixed, and none of it is optional.

  1. 01

    Sorted by hand

    Receipts printed, sorted into piles by budget line item, a cover sheet typed for each pile, bank statement screenshots clipped in.

  2. 02

    Days, every month

    Totals retyped into a master spreadsheet, the whole stack scanned into one PDF. Days of work per month, every month, forever.

  3. 03

    Mistakes found late

    Errors surfaced weeks afterwards during review, when correcting them meant reopening a packet that had already gone out.

  4. 04

    A fiduciary in the middle

    The packet reaches a fiduciary before it reaches the funder. The wrong format means it comes back and the month starts again.

What we built

The work moved from month end to the moment.

This is the pattern we build everywhere: a document arrives, the system reads it, a person confirms what it read, and the finished document comes out the other end. Here the document arriving is a receipt and the document coming out is a reconciliation packet a city will accept.

  1. 1

    Whoever spends, captures it

    The receipt is photographed at the point of purchase, not collected in an envelope for later. Vendor typed with type-ahead, line item and description filled from the vendor library, tax and fees separated so the reimbursable amount is right the first time.

  2. 2

    The system reads it, a person confirms

    Extraction pulls the values off the uploaded receipt and suggests them. Nothing is recorded until someone confirms it. On a packet that reconciles to the dollar, an unchecked number is worse than a typed one.

  3. 3

    Nothing incomplete gets out

    Every expense is checked for its receipt and its proof of payment. The download is blocked while anything is missing and the specific records are named, so the gap is found before the packet leaves rather than during review.

  4. 4

    Reviewed once, then three documents

    A final pass over the month, then the system produces a cover sheet per line item in Word and PDF, an editable Excel summary the fiduciary can annotate, and one merged PDF in submission order with page numbering throughout.

Team Pursuit Global grant expense dashboard, shown on a laptop
What it does

Four things that make it hold up.

Extraction

Reads it, doesn't decide

The receipt is read automatically and its values suggested. A person confirms every one before it becomes a number in a packet.

Vendor library

Typed once, filled after

Each vendor carries its own default line item and description. Recurring entries stop being retyping and become one confirmation.

Format

The one they already accept

The cover sheet was matched line for line against the packet the approvers had already signed off. Nobody on their side had to learn anything new.

Control

Blocked, not warned

A missing receipt stops the download and names the record. An incomplete packet never reaches the fiduciary in the first place.

Built with

Next.jsNode.jsAWSAmazon TextractOpenAIAmazon RDSAmazon SES
The numbers

We measured it.

0
Days spent assembling the packet
Capture happens during the month, so month end is review and download
100%
Expenses with a receipt attached
The download stays blocked until every record is complete
3
Documents generated
Cover sheets, Excel summary, merged packet in submission order
10
Working days to handover
Scoped, built and tested on real data
What we didn't automate

The parts a person still has to do.

Every value read off a receipt is confirmed by a person before it is recorded. That is the design and it is not coming out. Extraction saves the typing; it does not get to decide what a packet says.

What the funder approved or disallowed is still recorded by hand. Disallowances arrive as pen marks on a scan, and no system reads that reliably, so a reviewer supplies those decisions in a structured form.

The organisation shares one login today. Individual user accounts, and a record of who entered each expense, are the next phase rather than this one.

Misty Angelique Smith

Every month we printed receipts, sorted them into piles and typed a cover sheet for each one. It took days, and we still found mistakes afterwards. Now the receipt gets photographed when it happens and the packet comes out of the system already in the format our approvers accept. Nothing had to be renegotiated on their side.

Misty Angelique Smith

Director & COO @ Team Pursuit