Your Clean Plan · Fundy Freight Co.
Read this, then approve it or ask me anything. Your call.
the Clean Plan · private link · prepared for one reader

New customer order → shipped, cleaned up.

Six steps, six flags. About $10,920 a year comes back in hours alone, plus two invoices a quarter that quietly go unpaid.

Written in plain language on purpose. If anything in here needs a dictionary, that's my mistake, tell me. The technical version lives in the appendix, for whoever builds it.

Open chat →

It pays for itself in month 8.3, and keeps paying after that.

Six steps, six flags. The retyping and the chasing go to software; Dana keeps only the judgment calls. The hours go back into the work that brings money in.

Every month this sits unapproved costs about $871, roughly $201 a week, already net of running the build. If it hasn't paid for itself inside 12 months, your $997 comes back.

what you run today · 7 places
  • Squarespace
  • QuickBooks Online
  • Your inventory system
  • The warehouse inbox
  • The master spreadsheet (goes away in the build)
  • Google Sheets
  • Email
↓ after the build · what Dana touches · 7 places
  • Squarespace
  • QuickBooks Online
  • Your inventory system
  • The warehouse inbox
  • Google Sheets
  • Email
  • Make (new in the build)

Your move, at the bottom: approve it, or ask me anything → Either is fine. Everything below is the proof, open what you want to check.

Prepared forFundy Freight Co.Jane · Saint John, NB
Process mappedNew customer order~25 orders / week
DateSeptember 5, 2026Pricing holds until September 19, 2026
StatusAwaiting your approvalOne click, at the end
01 — Summary

You don't have six problems.

You have one broken chain creating six symptoms.

ExaminedYour 6-step map, the master spreadsheet, QuickBooks, and how orders actually arrive.
SampledThree weeks of order volume, from your own count in June.
Talked toJane, in the mapping interview: 11 questions, answered July 16.
$10,920
/ year back in hours, at your $30/hr
estimate · from your pay data
2
unpaid invoices nobody noticed last quarter
you told me
overnight
typical wait for a stock answer
you told me
$0
to switch on the invoice chasing QuickBooks already has
fixed

You drew six steps. Every one of them is carrying a flag. The pattern is simple: the order arrives clean in your web form, then people spend the rest of the week moving it by hand between a spreadsheet, an inbox, and QuickBooks.

The hours are the easy part to see: this workflow costs the office about 8 hours a week, roughly $12,480 a year at the $30 an hour you gave me. The build gives 7 hours a week of that back, $10,920 a year. The quieter cost is step 5: nobody follows up unpaid invoices, and you told me two went unnoticed last quarter. And one of the fixes isn't a build at all: QuickBooks can already chase unpaid invoices, it's just switched off.

What I did not find

No software gap. You own an order form, an inventory system, and QuickBooks, and none of them talk to each other. That's why this is a wiring job and not a systems replacement, and it's why a full ERP system is marked skip in the build / use what you own / skip table.

What I assumed. That an hour of your team's time costs $30 all-in, wages plus taxes and overhead. That about 25 orders arrive a week. That a person touches each order for about 45 minutes across the whole chain. All three from what you told me in the interview. If any of those are wrong, tell me, the ranking of the fixes changes before the numbers do.
02 — Your map, and where it sticks

Before

6 steps · 4 handoffs · 6 flags. Open any flagged step for what it costs and the fix.

Your map, redrawn so the whole team can read it. Every step carrying a flag opens: click its number for what that one costs you, and what I'd do about it.

Who holds the work today · 6 steps · 4 handoffs · 6 flags · every dashed crossing is a wait
SamWarehouseDananobody's job010203040506

01The master spreadsheet is the real system of record, and only Sam fully understands it. If Sam is out, orders stop.

02A hand-written email per order, asking a question the inventory system already knows the answer to.

03Orders placed Friday afternoon sit until Monday. Nothing moves until someone checks the inbox.

04The same order details, typed a second time. This is where the wrong-amount invoices come from.

05No reminder, no alert, no report. Two invoices went unpaid and unnoticed last quarter.

06The warehouse waits for Dana to forward a payment confirmation the payment system could send itself.

Steps 2, 3, and 4 exist because step 1 puts the order in a spreadsheet instead of a system. Fix where the order lands and half the waiting disappears on its own.
what you run today
  • SquarespaceYour order form
  • QuickBooks Online
  • Your inventory system
  • The warehouse inbox
  • The master spreadsheet
  • Google Sheets
  • Email
Tools in play · everything your process touches today, and its verdict
Toolverdictwhy
Your order formwire upThe details arrive clean, then Sam re-types them. It becomes the front door of the whole chain.
QuickBookswire upGood software doing half its job. Invoices and reminders can run themselves from the order data.
Your inventory systemwire upIt already knows the stock answer the warehouse email is asking for.
The piece that connects themaddThe one new thing you'd pay for: it carries orders between the form, the list and QuickBooks. $39/mo.
The warehouse inboxdemoteStops being the queue, becomes an archive. Pick tickets arrive on their own.
The master spreadsheetretireArchived as-is on switch day, findable but frozen. Its job moves to one shared order list.
Google SheetskeepThe sheet software stays and does more: the shared order list is built here, written by the system and read by everyone.
EmailkeepUnchanged. It carries the summaries and reminders, it stops being the workflow.
03 — The clean path

After

The same job in five steps, one straight line, with the same software you already pay for.

Same job, same start, same finish, same software you already pay for. Software carries the information. Your people keep the judgment.

The same job, after · the work flows in one straight line · click a step to see what it replaces
automaticDana0102030405
what the build runs on
  • SquarespaceYour order form
  • QuickBooks Online
  • Your inventory system
  • MakeThe piece that connects themnew
  • The warehouse inbox
  • Google Sheets
  • Email
  • The master spreadsheetretired
Steps
65
Handoffs
41
Flags
60
Office hrs / wk
~8~1

01was 01The form writes the order straight into one shared list. No spreadsheet.

02was 02 · 03Checked against live inventory the moment the order lands. Nobody emails the warehouse and nobody waits on the inbox reply.

03was 04 · 05Created and sent the same minute instead of typed into QuickBooks, chased politely until paid, stopped the moment payment lands.

04newNew step, on purpose: big orders and flagged customers wait for a person.

05was 06Payment tells the warehouse itself, no forwarded email. You get one summary of every order at 5pm.

Can it actually do this? One of the four automatic steps above is backed by the makers' own documentation. Where I could not confirm something, it says so: that is the honest state, and confirming it is the first thing the build does.

  • 01Order lands in the order listnot confirmed · A1 Type it onceNot confirmed against documentation yet. I check this first, before anything is built on it.
  • 02Stock answers itselfnot confirmed · A2 Stock answers itselfNot confirmed against documentation yet. I check this first, before anything is built on it.
  • 03Invoices send themselvesnot confirmed · A3 Invoices send themselvesNot confirmed against documentation yet. I check this first, before anything is built on it.
  • 05Paid → shipped → daily summaryone limit · A4 Retire the master spreadsheetThe limit: One account can make 60 changes a minute to the shared list. At about 25 orders a week you will never reach it; a one-off bulk import of thousands of rows would queue and take a few minutes rather than fail.Google Sheets API, Usage limits
What doesn't change. QuickBooks, your order form, your inventory system, and how the warehouse picks. This plan wires together what you already pay for, plus one small piece that carries orders between them. If a fix needed you to replace a tool, I'd have said so and priced the tool.
04 — The numbers

What the build gives back

$10,920 a year back. The arithmetic, fix by fix.

Here's what each piece gives back, in the currency that's easiest to check: hours. The strongest number pays back on top, and I've deliberately kept it out of the totals.

What 7 hours a week is worth

$10,920 / yr
back every year, at $30/hr, what an hour really costs you estimate
$39 / mo
/ mo of new software to keep it running
When it pays for itself · hours only, the upside not included
month 12, my bar$0$7k$14knowmonth 4month 8month 12month 16everything you pay me, $7,200 oncepays for itself, about month 8.3

$24,156 is what it has handed back after three years of still running, after everything it cost to build and everything it cost to keep going. estimate
That number is not part of the promise above. I guarantee the first year because the first year is what I'll refund against. The build doesn't stop working at month twelve.

That's the boring version of the payback story, using hours only, at the pay figure you gave me. The invoices that stop going unpaid sit on top of this, and I've kept them out of every number on this page on purpose. If the boring version already clears the bar, the decision is made.

FixTime savedWhat you'll notice
The reminder switch
Already in QuickBooks, switch it on
Unpaid invoices get chased this week, before you spend anything with me.
Type it once→ step 01
The form becomes the order record
3.0Nobody re-types an order again. Wrong-amount invoices stop.
Stock answers itself→ step 02
Live inventory check, instant pick ticket
2.0The overnight stock wait becomes seconds, Friday orders included.
Invoices send themselves→ step 03
Sent on order, chased day 3 and 7
1.5Dana stops typing invoices, and no invoice goes quiet again.
Retire the master spreadsheet→ step 05
One shared order list replaces it
0.5One answer to "where's that order?", always current.
Together7.0Nearly a full working day, every week, back.

Hours are estimates from your map and interview, not measurements. We measure for real after launch, on the status page.

The two invoices, on their own

Two unpaid invoices went unnoticed last quarter, by your own count. At your average order size, catching just those two pays for a quarter of this build, every quarter, forever.

I've kept that out of the payback numbers on purpose. It's the strongest number on this page and the one built on the fewest data points. I'd rather you approve this on the hours and be pleasantly surprised.

05 — Build / use what you own / skip

Not everything here is mine to build

five built, one you already own, two I'm telling you not to buy.

Some of these lines make me no money. They're still the right call.

already yours, just switch it on1 item · costs you nothing, earns me nothing
The reminder switch
QuickBooks ships with payment reminders. They're off. Turning them on costs nothing and catches the silent leak this week.
mine to build5 items · the quoted work
The piece that connects them
Rented, not written: $39 a month for the part that carries orders between your form, the list and QuickBooks. Writing that by hand would add days to this build and leave you owning a piece of software that needs looking after. This is the one thing here worth renting.
Type it once→ step 01
The connection between your form and your systems doesn't exist off the shelf. Small, genuinely custom, and it kills the re-typing.
Stock answers itself→ step 02
Your inventory system has the answer; nothing you own asks it the question. About a day of work.
Invoices send themselves→ step 03
The sending is easy; the part no product gives you is the alert when an invoice has no next reminder.
Retire the master spreadsheet→ step 05
Light build. The shared list keeps everything the sheet did, without a person holding it up.
not worth buying2 items · what I'd charge you for if I were less honest
A full ERP system
You don't have a systems problem, you have a wiring problem. An ERP migration costs more than this plan and fixes none of the six flags. Revisit past 25 staff.
An AI agent answering order emails
You asked, so: not yet. Your volume doesn't justify it, and your orders already arrive through a form. Fix the wiring first and revisit next year.

Three of the eight lines here are yours to switch on or not worth buying. I'd rather tell you that now than have you find it after the invoice.

06 — Sequence

The build order

five fixes over about three weeks, the fastest payback first.

Ordered by impact over effort, not by what's satisfying to build. Each week you'll see something working.

The same order, week by week · then 30 days watched
week 1
  1. Flip the reminder switch, this week, without me

    QuickBooks → Payments → Reminders. Ten minutes. The silent leak stops before you approve anything.

    Do it before you approve anything
    yours, free
  2. Build the invoice sender: raised on order, chased on day 3 and 7→ step 03

    When an order lands, its invoice goes out with it, and the chase emails follow on day 3 and day 7 on their own. I also build the alert no product ships with: a flag when an invoice has no next reminder scheduled. Smallest build on the list, and first because it is the one attached to revenue.

    The revenue fix ships first
    in the build
  3. Build the order record: the form feeds the list and QuickBooks→ step 01

    An order arrives once, through your form, and lands everywhere it is needed: the shared order list and QuickBooks, carried by the rented piece that connects them. It goes in before the stock check because that fix reads its orders from the list, so what the record holds decides what the stock check has to handle.

    The record the other fixes read · runs into week 2
    in the build

By Friday: Nobody re-types an order again. Wrong-amount invoices stop.

week 2
  1. Wire up the stock check: the order asks, the inventory system answers→ step 02

    When an order lands on the list, the inventory system is asked about each line and the answer comes straight back, with the pick ticket made up at the same time. Your system already holds the answer; this is the piece that finally asks it the question. Straightforward once orders land in a system instead of a sheet.

    Needs the order record in place · runs into week 3
    in the build

By Friday: The overnight stock wait becomes seconds, Friday orders included.

week 3
  1. Retire the master spreadsheet→ step 05

    The sheet is exported and archived read-only, findable forever, never deleted. By this point the shared list already holds everything the sheet was tracking, so the job left is small: point the last lookups at the list, and keep both running side by side until you have seen them agree.

    Usually shrinks by the time we get here
    in the build

By Friday: One answer to "where's that order?", always current.

then
30 days

Watched for 30 days, fixes included. You don't file anything, I'm looking. On day 30 you get a scorecard putting the real numbers next to the ones on this page.

07 — The switch

Nothing turns off until the new way has proven itself

The old way keeps running beside the new one, and every switch has a way back.

The part most plans skip: what happens to your business while I build. Short version, your team keeps working exactly as they do now, and every switch is reversible.

Failure mode: the old way. Never silence.

If a new connection fails, that step falls back to the way you work today, visibly, instead of disappearing. The appendix spells this out fix by fix.

  1. Built beside, not on top

    Everything is built alongside the current process. Sam keeps the sheet, Dana keeps invoicing. Nobody learns anything new while I build.

    weeks 1–2 · zero change to how your team works
  2. Old way and new way, side by side

    Each fix runs beside the old way on live orders until you've seen it be right. You compare, you call it.

    a few days per fix · you decide when it's proven
  3. Switch one step at a time, with a way back

    The old way isn't deleted, it's retired. If anything feels off, we switch back in minutes while I fix it. The sheet is archived, never destroyed.

    going back takes minutes, not a rebuild
  4. Thirty days of me watching it

    After launch I watch it run for 30 days. Anything that breaks in that window, I fix, included in the price. Then the handoff: docs, passwords, every account already in your name.

    included · you own all of it from day one
08 — How we'll know it worked

The targets, written down before I build

three numbers agreed now, measured for real on day 30.

Agreed now, measured after launch on your build-status page. Not a testimonial, a scoreboard. If we miss them, you'll see that too.

Orders re-typed by a person
all ~25 /wkzero
Day 30, counted from the order list itself. today: from your map
Time from order to pick ticket
overnight< 1 min
Week 1, from the system's own log. today: you told me
Unpaid invoices going unnoticed
2 / quarterzero
None without an alert firing first. First real count on day 30. today: you told me

The "today" column is estimates and your own reports. Part of week 1 is measuring the real baselines, so the after numbers mean something.

09 — Your call

Approve, or ask

Two ways this can go, and the Clean Plan is yours either way.

What this costs

One build, one fixed price. The $997 for this plan comes off it in full.

The whole build, all four fixes, one fixed price$7,200
Less your Clean Plan fee, credited in full− $997
What you pay$6,203
The build pays for itself in about 8.3 months. That's inside my one-year bar: about 8.3 months, counting the $997 for this plan and the $39 a month to run it. The arithmetic is on this page so you can check it against what you know. If it hadn't cleared a year I'd have told you before taking your money, because a build that takes longer than that to pay you back isn't worth doing and I'd rather say so. And if you read it and think I've missed the mark anyway, say so and I'll refund it the same day. There's a button at the bottom of this page; no case to make, just tell me what I got wrong.
what it costs to run, every month
The piece that connects themcarries orders between the form, the list and QuickBooks$39
Every month, all in$39
included in the price
  • the price and the fix list don't change
  • 30 days of me watching it run after launch, fixes included
  • every account in your name, you own all of it · adds about $39/mo of new software, everything else runs on what you already pay for

How you'd like to proceed

ApproveApprove the build: $6,203 after your Clean Plan credit, built in the order set out in the build order. The price is the price, the fix list doesn't change. I confirm your start date within one working day and send the next steps by email. Nothing is charged until we've talked.
AskSend questions by email, as many as you want, at any length. I answer them in writing within two working days. Questions don't cost you your build slot.
I have questions

This is one build, not a menu, the fixes depend on each other and I stand behind the numbers as a whole. Nothing here expires quietly: the pricing holds until September 19, 2026; after that I'd want to re-check the volumes before I'd stand behind them.

Appendix A — for whoever builds this

The spec

The one technical section on this page, written for whoever builds it. You never need to open it. Inside: every rule each fix follows, written out, four claims quoted from the makers' own documentation.

This plan is yours, whoever implements it. If that's your IT person or another builder, this section is for them and it's the one place on this page where their language is allowed. Each fix keeps its plain name from above, with the technical translation underneath. If I build it, this is what I hold myself to. Every fix is written out rule by rule, including what happens when something goes wrong, so nothing about how it behaves is left to be discovered later. Where a fix depends on one of your systems being able to do something, I've quoted the makers' own documentation and linked it, so nobody has to take my word for it.

A1 · Type it once

aka: form → order-record capture · systems: order form · shared order list · QuickBooks · behind step 01 of the after map
not confirmed yet
The order form's notification arrives with a signature that can be checked before any field is trusted, and a JSON body.
The request always contains headers, including a signature, and a JSON payload.
Squarespace Developers, Webhooks overview · read August 12, 2026
The order record can be added to the shared order list as one appended row, never by row number, so two orders arriving in the same second cannot overwrite each other.
Appends values to a spreadsheet.
Google Sheets API, spreadsheets.values.append · read August 12, 2026
TriggerA new order form submission.DataCustomer, items, quantities, addresses, order value, submitted-at timestamp.BehaviorCreate the order record in the shared list and a draft invoice from the same fields. Field mapping signed off by Sam in week 1. Anything malformed lands in an exceptions view, never dropped.On failureIf the list is unreachable, the form falls back to its current email behavior and Paul + Sam get an alert. Failure mode is the old way, never silence.Done whenA week of live orders with zero re-typed fields, and the invoice amount always matches the form.
How it works, rule by rule
  1. The order form's notification is signed. Check the signature against the signing secret from the deploy environment before reading a single field; a bad signature is rejected and logged, never processed.
  2. Append one row to the shared order list: submitted-at, customer, items, order value, status "new", and an empty invoice id.
  3. Append, never write to a row number, so two orders arriving in the same second cannot land on top of each other.
  4. Create the draft invoice in QuickBooks from those same fields, then write its id back to the order's row so the two are tied together.
  5. Anything malformed (no customer, no items, an unreadable total) goes to an exceptions view and Sam gets one email. Nothing is dropped silently.
  6. Answer the form immediately, before any of the slow work, so a slow step here can never look to a customer like a failed submission.
  7. If the list or QuickBooks cannot be reached, keep the submission and retry every 5 minutes for an hour, then alert Paul and Sam.
Where it hands over, and what is settled
  • The order record → one appended row on the shared order list, never by row numberchecked
  • The order form's submission notification → the order fields the record needs (customer, items, quantities, total)confirmed on day 1
  • The order fields → the draft invoice's own field names in QuickBooksconfirmed on day 1

A2 · Stock answers itself

aka: live inventory check + pick ticket · systems: shared order list · inventory system · warehouse printer/inbox · behind step 02 of the after map
not confirmed yet
TriggerAn order record is created.DataItems and quantities against live stock levels.BehaviorCheck stock, mark the order in-stock or backorder, and send the warehouse a pick ticket immediately. Backorders route to Dana for a human call.On failureIf the inventory system doesn't answer, the order is marked "stock unknown" and the old email path is used for that order. Visible, not silent.Done whenTen consecutive live orders produce a correct pick ticket with zero emails sent by a person.
How it works, rule by rule
  1. A new row in the order list starts the stock check within a minute.
  2. Check every item and quantity on the order against live stock levels.
  3. All available: mark the order in-stock and send the warehouse one pick ticket with the order, the items and the address.
  4. Anything short: mark the whole order backorder and ask Dana to call the customer. A partly available order is a backorder, because a half-right pick ticket is worse than none.
  5. If inventory cannot be reached, leave the order "new", send no pick ticket, and tell Sam within 5 minutes so the old way (an email to the warehouse) can carry it. The failure mode is the old way, never silence.
Where it hands over, and what is settled
  • The order record → the inventory system's stock levels for those items and quantitiesconfirmed on day 1
  • The stock answer → the warehouse's pick ticket, with the order and the address on itconfirmed on day 1

A3 · Invoices send themselves

aka: invoice automation + reminder sequence + miss alert · systems: QuickBooks · email · behind step 03 of the after map
not confirmed yet
TriggerAn order record is confirmed (or passes Dana's review for flagged ones).DataInvoice id, sent-at, due date, payment status.BehaviorCreate and send the invoice from the order record. Reminders at day 3 and day 7 from a template Jane approves, stopping the moment payment lands. Replies land with Dana, a person.On failureThe invariant, checked daily: no unpaid invoice may exist without a next scheduled reminder. Any invoice that violates it raises an alert to Dana + Paul.Done whenThirty days after launch, zero unpaid invoices without a next reminder, and the monthly "invoices gone quiet" count exists for the first time.
How it works, rule by rule
  1. When an order is confirmed, send the draft invoice that was created with it. Flagged customers and orders over Dana's threshold wait for her review first.
  2. Reminders go out on business day 3 and business day 7 after sending, from the templates Jane approves in week 2. Weekends are skipped.
  3. Check both conditions at SEND time, not when the reminder is queued: an invoice paid overnight must not be chased in the morning.
  4. Record a reminder only after the send succeeds, so re-running the morning job can never double-send.
  5. When payment lands, mark the order's row in the shared list paid the same minute. That row is what tells the warehouse to ship (the shared list's own rules take it from there) and what stops the reminders.
  6. An invoice that is unpaid with no reminder left to send becomes an alert to Dana. That silence is the thing that cost you two invoices last quarter.
  7. Customer replies go to Dana, a person, not to an automated inbox.
Where it hands over, and what is settled
  • The order record → the QuickBooks invoice it belongs to, tied by the invoice id written back to the order's rowconfirmed on day 1
  • A QuickBooks payment → the order's row marked paid on the shared order listconfirmed on day 1

A4 · Retire the master spreadsheet

aka: shared order list + read-only board · systems: shared order list · behind step 05 of the after map
checked, with one limit

The limit. One account can make 60 changes a minute to the shared list. At about 25 orders a week you will never reach it; a one-off bulk import of thousands of rows would queue and take a few minutes rather than fail.

The shared list can carry this workflow's write volume with room to spare: 25 orders a week is nowhere near the ceiling.
Write requests: Per minute per project: 300
Google Sheets API, Usage limits · read August 12, 2026
The per-account ceiling is the one a bulk import could reach, so it is the number stated as this fix's limit.
Write requests: Per minute per user per project: 60
Google Sheets API, Usage limits · read August 12, 2026
TriggerAny order status change.DataOrder, customer, status (new / picking / invoiced / paid / shipped), last-changed.BehaviorOne shared list is the system of record; a read-only view answers "where's that order?". The sheet is exported and archived as-is on switch day.On failureThe list is the record, so the board can only go stale, and a "last updated" stamp says so.Done whenThe team answers order questions from the list for one full week, and the sheet's edit history shows zero edits that week.
How it works, rule by rule
  1. The shared order list is the record. Every status change is written there, by whatever made the change.
  2. Statuses are a fixed set: new, picking, invoiced, paid, shipped. Anything else is rejected, so the board can't drift into free text.
  3. Every change stamps what changed it and when, which is how "where is that order?" gets answered without asking Sam.
  4. A row turning paid sends the warehouse its ship notice itself, and the 5pm daily summary is one email built from the list, so neither depends on a person forwarding anything.
  5. The board is a read-only view of that list, so it cannot be edited by accident and can only ever go stale, which its "last updated" stamp says out loud.
  6. Bulk changes are written in batches of 50 with a pause between them, to stay under the 60-a-minute ceiling noted in the limit above.
  7. On switch day the old sheet is exported and archived read-only. It is kept and findable, never migrated.

The $0 reminder switch isn't specced, it's a setting inside QuickBooks: Payments → Reminders. Turn it on this week.

A real Clean Plan for a real client. Yours starts with a free map.← Back to the siteMap my workflow →
The Clean Plan - New customer order - Clean Workflows