Guilherme Moreira

All work01

Ledgerline

Billing dashboard

A billing dashboard that lets a six-person finance team reconcile 2,000 freight invoices a month without a spreadsheet.

Client
A freight brokerage (fictional)
Year
2026
Role
Product design, Full-stack engineering
Stack
Next.js, PostgreSQL, Stripe, Tanstack Table

Placeholder case study: a fictional brief that shows the layout until real work replaces it.

Context

The brokerage ran invoicing out of three spreadsheets and a shared inbox. Every month-end, two people spent a week matching carrier invoices to loads by hand, and disputed amounts were tracked in email threads nobody could search.

Idea

Treat every invoice line as a ledger entry with a state machine (received, matched, disputed, approved, paid), and make the table itself the workspace: keyboard-first, filterable, with the matching suggestion inline instead of in a modal.

Craft

The matching view: a load on the left, candidate invoices on the right, a confidence score from amount, date and carrier.
Dispute threads live on the line, not in the inbox; each message carries the amount it argues about.
Month-end close is a checklist generated from the data, not a memory.

Outcome

Shipped as a Next.js app on Postgres with row-level security per customer.