Sometimes the best engineering is the engineering you don't do. Last quarter, we shipped a project for a regional logistics client where the entire "build" cost $0 in licenses, took 11 days, and is now saving them more than half a week of human labour every week.
This is the full story โ what was broken, what we considered, what we shipped, and what we'd do differently.
The starting point
Our client is a 14-person logistics company in the Houston metro. Every morning, an office manager named Gloria spent the first 3 hours of her day doing the same thing:
- Open the inbox
- Find new shipping requests (15โ40 per day)
- Open each PDF or email body
- Copy 12 fields by hand into the dispatch spreadsheet
- Send a confirmation email back to the customer with a job number
- Add the job to the dispatcher's whiteboard via a shared screen
Across the team, this was eating 22 hours per week of skilled labour โ and Gloria was making roughly 4 transcription errors per day, each of which had downstream cost in misrouted trucks.
What we considered
We always start with the cheapest option that could work, then escalate only if it can't. For this problem, our shortlist was:
- Option A โ No-code workflow with Zapier or n8n + an AI step for parsing the emails
- Option B โ Custom Python script running on a $5/month VPS
- Option C โ Full custom dispatch app (the $40k quote)
Option C was overkill. Option B would lock the client into needing us forever. Option A was the obvious starting point โ if it broke down at scale, we could always escalate.
What we built
The final workflow has six steps and runs on n8n (self-hosted on the client's existing server, $0/month):
- Trigger: New email arrives in the dispatch inbox
- AI parse: Claude Haiku extracts the 12 dispatch fields from the email body or attached PDF and returns structured JSON
- Validate: A simple JavaScript step checks required fields are present and addresses look plausible
- Write: Append the row to the existing Google Sheet (no migration needed)
- Confirm: Send templated reply email with job number to the customer
- Notify: Push the job to the dispatcher's Slack channel for board updates
If the AI step is uncertain (it returns a confidence score), the email goes into a "review" folder and Gloria gets a notification. In the first month, this happened on about 8% of emails โ and we used those cases to refine the prompt. By month two, the review rate dropped to under 2%.
The hardest part
Was not the technology. The hardest part was sitting with Gloria for an afternoon and watching her actually do the work. Watching, not interviewing.
She was doing four things we never would have caught from a written spec:
- Looking up unfamiliar customer addresses on Google Maps to confirm zip codes (we added a validation step for this)
- Manually merging duplicate requests from the same customer (we added deduplication)
- Flagging "rush" requests in red on the whiteboard (we added urgency parsing)
- Catching obvious typos in customer phone numbers (we added a format check)
"If you build a workflow from a wishlist, you'll automate 60% of the work and create chaos with the other 40%. If you build it from observing the actual job, you'll get 95%."
The numbers, three months later
- Time saved: 22 hours/week โ reallocated to customer follow-up calls
- Error rate: 4 transcription errors/day โ 0.3/week
- Customer confirmation speed: avg 2.5 hours โ avg 4 minutes
- Cost to run: ~$18/month in Claude API fees
- One-time build cost: $3,200
- Payback period: 3 weeks
When this approach doesn't work
To be honest, no-code automation isn't always the right call. We avoid it when:
- The volume is huge (10,000+ runs/day pushes most no-code platforms past their cost-effective range)
- The workflow needs sub-second response times
- The data is sensitive enough that you don't want it touching a third-party platform's logs
- The logic is complex enough that the visual flow becomes harder to read than code
For this client โ a 14-person logistics company processing 30 emails a day โ none of those applied.
Bottom line
Before you commission a custom build, audit whether the problem can be solved with the boring tools. Most of the time, it can. The companies that grow fastest aren't the ones with the fanciest software stacks โ they're the ones that fix the small drag points first, shipping wins every two weeks instead of every two years.
If you have a process that's eating your team's hours, we'll do a free 30-minute audit and tell you honestly whether automation makes sense.