Jack's Fish Club Operations & software, Miami, FL, USA
Approach

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.

A school of yellowfin tuna
Lychees ripening on the tree
Clay roof tiles with the sea beyond
Principles

Eight rules.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.

07

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.

08

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.

The trust boundary

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.

Read

Model

Scan → structured record. One call. No access to prices or accounts.

Probabilistic, replaceable
Verify

Code

Reference tables, arithmetic, reconciliation, named flags. Same input, same output, forever.

Deterministic, tested
Decide

Person

Reads the flags, approves or holds, fixes a reference row when needed.

Accountable
Tools

Tools.

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.

Book it →See the work