Do the job first. Then build the tool. Let the machine do the arithmetic.
Most business software is designed by people who have never been asked to find a specific 74-pound fish in a cold room at 5:40 in the morning. That's the problem Jack's Fish Club exists to fix, one operation at a time. Big business tools, small business access.



Eight rules.
The operation comes first
Before anything gets written we do the work, or sit next to the person doing it, long enough to know what a normal Tuesday looks like and what a bad one looks like. The tool is shaped by that, not by a feature list. If a process is broken, software makes it faster and still broken; we fix the process first.
A model may read. It may not decide.
Generative models are excellent at turning a messy scan into a structured record. They are not a place to compute a price or a total. So: the model transcribes; deterministic code verifies every value against your reference tables; every disagreement becomes a flag; a person approves. The model never sees the price list, and it's called exactly once.
Nothing is silently resolved
If a quantity doesn't convert cleanly, a price doesn't match the list, or a total doesn't reconcile, the system says so — in plain language, on the document, to the person who forwarded it. Yellow means "read this." Red means "I stopped." Green means "I'd send it." That's the whole vocabulary.
Reference data is the product
The price list, the item-code crosswalk, the account table, the grade price book: digitizing these carefully is most of the value. They live in one place, in a format a person can read, and the code has no prices of its own. A new distributor or supplier is a row, not a release.
You own it
Your accounts, your domains, your database. Secrets in a vault and never in source. A README a successor could follow. If we part ways, everything keeps running and someone else can pick it up. We'd rather be re-hired than indispensable.
Boring infrastructure
Staging before production, every time. Automated tests against real historic documents. Daily backups you can actually restore. Audit rows on anything that touches money or customer data. Two-factor authentication for staff, simple PINs for the floor. Fewer moving parts, lower bills, and no map API invoices if a free tile server will do.
Phone first, then tablet, then desk
The person who needs the tool is on a dock, in a driveway, or in a cold room. Press-and-hold to drag on an iPhone, home-screen icons, big targets, and pages that work on bad wifi are not polish; they're the requirement.
Written down, walked weekly
Every client has one plain-text task list and one memory file per project that says where things stand. We walk the list every Monday. Open questions have a name and a date next to them. This is how we keep a dozen systems honest.
Where the model stops and the code begins.
The interesting decisions in an import business are made by people who know the fish, the roof and the customer. Our job is to make those decisions faster to reach and impossible to lose.
Here's the pattern, using purchase-order intake as the example. A distributor's PO arrives as a scan. The model's only task is to produce a fixed JSON shape: PO number, ship-to, line items with the distributor's own item codes, quantities, the prices they printed, and any charges. That's it.
From there, ordinary code takes over. It matches the account, resolves each item code through a crosswalk to the catalog, prices every line from the list, converts pieces to squares and pallets, applies the company's stripping rule, passes freight through, and reconciles its total against the printed one. Each step either passes or raises a named flag. Fifty automated tests run this against real historic POs and their real invoices before anything ships.
Finally a person reads the flags on the draft and decides. The reply goes back to whoever forwarded the PO with the draft attached. Nothing reaches a customer without that step, and the decisions people make in it — "we don't bill loading on pickups" — get written back into the rules.
Model
Scan → structured record. One call. No access to prices or accounts.
Probabilistic, replaceableCode
Reference tables, arithmetic, reconciliation, named flags. Same input, same output, forever.
Deterministic, testedPerson
Reads the flags, approves or holds, fixes a reference row when needed.
AccountableTools.
- Web apps
- Next.js and plain Node/Express, depending on the job. Postgres — managed, with row-level security where there's customer data. Vite for tablet apps that need to be light.
- Pipelines
- Python with the standard library wherever possible. Headless Chrome for PDFs. Mailbox workers that poll an inbox and reply. Cron for the rest.
- Hosting
- Fly.io, Vercel, Netlify, Supabase — chosen per app for cost and simplicity, always on the client's own account and card.
- Models
- Current frontier models for document transcription and classification, behind a fixed schema, with token budgets and retries measured and logged.
- Development
- We design the systems and write the specifications, business rules and tests, and use AI coding tools as an accelerator under that direction, with CI, secret scanning and a staging gate in front of every production release.
- Integrations
- QuickBooks, Gmail and Microsoft 365, WhatsApp Business, Twilio, Google Drive, Bluetooth label printers, the US Census geocoder.
Sound right?
Ninety minutes. You'll know by the end.

Jack's Fish Club