All case studies
AviationJMC Billing

The Invoice That Builds Itself

A personal contract-pilot billing tool — not a generic small-business bookkeeping product — that pulls flight data automatically, reconstructs the month into billable days, and generates per-owner invoices without an evening of spreadsheet archaeology.

Billing AutomationFlight Data SyncAviation
The Challenge

This one's personal: the founder flies as a contract pilot, and billing an aircraft owner meant reconstructing the month by hand from flight logs — which days were flown, which were standby or travel, the daily rate, per-diem days, fuel and hotel receipts. Spreadsheet archaeology, every month, with something missed almost every time.

The tracking data already existed — an aviation tracking API knew exactly where and when the aircraft flew — but nothing turned it into an invoice. Every month started from zero.

What We Built

So we built a tool that treats the invoice as something that assembles itself from real flight data, with a human reviewing the result instead of reconstructing it.

  • A scheduled job pulls flight data from an aviation tracking API three times a day and files each leg under the right aircraft; every leg stores the provider's ID so re-running a sync can never create a duplicate.
  • Legs are dated by Eastern-time calendar day, not UTC, so a late-night departure doesn't accidentally bill as the next day.
  • Flights group into billable days, re-ordered into a coherent itinerary instead of trusting raw storage order — and days the tracker can't see, like standby or repositioning, get added manually and flow through the same pipeline.
  • Each day moves through a review state machine — imported, assigned, reviewed, ready, invoiced — with the ability to override a rate, adjust per diem, attach receipts, mark a day non-billable, or split a day between two owners who shared the aircraft, each at their own rate.
  • Days that receive new flight data after being invoiced get flagged, never silently changed.
  • Invoices generate per owner per month with pilot services, per diem, and expense reimbursement as separate, normalized line items; owners pay via a Stripe checkout link or by check or ACH with manual tracking, and receipts are downloadable through tokenized links so an owner's bookkeeper never needs an account.

The Stack

React 18ViteSupabaseStripeResend
Results

3x daily

Automated flight-data sync, deduplicated by provider ID

48 commits

Spec to a working invoice, over about three weeks

9 edge functions

Handling sync, invoicing, payments, and receipt access

Zero reconstruction

The first fully self-built invoice was reviewed and sent as-is

More pilots, more aircraft — that's a config change, not a rewrite.

Read the full build story

Want something like this for your business?

Tell us about your business and we'll show you exactly where a system like this fits — no pressure, no jargon.