Repetitive work we've built custom automation solutions to solve. Each entry below replaced a task someone was doing manually. These are examples intended to illustrate some examples of repetitive or impractical tasks that can be automated. Rather than spending time collecting data, that time can be used to analyze and act.
700+ hrs
Hours quantifiably automated
8+
Departments currently served
3+
Separate Business-units
01
Daily LTO sales report
Python / Playwright
MTOH's analytics system doesn't offer daily LTO reporting as a standard report, and Intelligent Edge [their more modern UI] can only display sales from one unit at a time. So a script logs in every morning, runs every search for every store, and the summary is in everyone's inbox at 6am. It has run unattended since June 2025. It takes ~15 minutes to update the report when a new LTO is added.
Nobody generates this. The report the platform doesn't offer, delivered daily before anyone's awake. When promos change, the item list updates in one config block.
Before
Log in to Intelligent Edge
Select 1 of 13 units
Search one LTO keyword, count the tickets
Repeat for all tracked items
Switch units. Do it 12 more times
>100 searches, counted or noted manually
~1 hour, minimum. Every. Single. Day.
After
Wake up
Open the 6am email
Per-store and per-item totals, CSV attached
~5 minutes every few months to update with new LTOs
~365 hrs/yr
Time recovered
117
Searches automated daily presently
13+ mo.
Running automatically
02
Research and search audit
Python / Playwright
For DefensiveDriving.com, the agency who oversees defensive driving courses displays a provider search on their website showing a "random" set of approved courses. We suspected some providers were registering the same course under dozens of license numbers to dominate the rotation. A script sampled the page 1,500 times, logged 30,000 result rows, and turned suspicion into numbers now in active discussion with the agency.
Suspicion, quantified. If the rotation were fair, appearance counts would be roughly equal. The top entry appeared 6,215 times — nearly 10× the honest baseline — by holding 71 registrations.
Before
A hunch that results aren't distributing fairly
No way to prove it: verifying randomness means thousands of samples
Nobody refreshes a page 1,500 times and tallies 30,000 rows
The question simply goes unanswered
After
Script samples the live page 1,000× per run, desktop and mobile
Every result row logged with timestamp
Report deduplicates by phone number: 345 listed "providers" are really 143
Uncovered two courses who have 60+ cloned courses to abuse the system
Re-runs weekly until the issue is resolved
30,000+
Rows sampled and counting
1 click
Operation Method
Weekly
Frequency
03
Food Delivery App Weekly ad performance report
Excel / VBA
Weekly ad spend, sales, and ROAS across all 13 Whataburger units, combining raw UberEats, DoorDash, & GrubHub exports with automatic prior-week comparison.
This table builds itself. Three raw exports in, one summary out: per-store ROAS, prior-week memory, and percent changes, with live formulas you can audit.
Before
Download 3 CSVs from 2 ad platforms
Paste each into the workbook by hand
Match every row to the right store
Calculate ROAS and week-over-week changes
Double-check the totals
~45 minutes, Monday, every week
After
Click one button
Pick the 3 files
Done — prior week comparison included
~2 minutes
52 hrs/yr
Time recovered
Weekly
Frequency
1 afternoon
Build time
04
Infrastructure uptime monitor
Google Apps Script
Pings every production site on a 15-minute cycle, logs latency history, and sends automatic escalation emails if an outage persists. Anyone can check the dashboard; nobody has to.
Live and self-updating. The bottom-right card is a frozen benchmark from the old host, kept as a permanent before/after: the migrated site now responds 4× faster.
Before
Nobody watching the sites full-time
Outages discovered by customers, or by luck
No latency history to spot slow decay
No record of how long anything was down
Detection time: whenever someone noticed
After
5 sites checked around the clock
2 failed checks → email, 4 → text message
One-click acknowledge to mute a known issue
Self-serve dashboard with 7-day uptime and latency
Detection time: under 30 minutes, always
480
Checks per day
5 sites
3 hosts covered
$0.00
Monthly cost
05
Live conversion stats dashboard
Python / Flask
A web page showing DefensiveDriving.com conversion data pulled live from the payment processor. Accessible and updated 24/7, it gives a real-time view into conversions, product mix, and more.
Always current. Pulled live from the payment processor every time the page loads — nobody generates it, so it's never stale.
Before
Export from Paytrace
Sort and filter the data
Request from someone else, if you lack access
Repeat next time you have a question
Wait for the response
After
Open the page
Numbers are live from the source
Seconds, any time, no asking
Live
Data freshness
0
Requests to wait on
Self-serve
Access model
06
AI-routed contact forms
Make.com + Claude API
Every inbound website contact form is read by an AI model, classified by intent, and routed to the right person's inbox in seconds. Running in production for two companies.
Form submission
"We have a property on Hwy 138 that could be a great fit for your next location…"
→
AI reads it
Classifies intent in seconds: real estate
→
Marketing inbox
Real Estate inbox
HR inbox
No human in the loop, unless they need to be. The message lands with the right team in about five seconds, at 2am or 2pm. Anything that fits no category is logged and discarded, so spam never reaches an inbox.
Before
All submissions land in one shared inbox
Someone reads each message
Decides who it belongs to
Forwards it, hopefully to the right person
Minutes per message, delays of hours
After
Form submits
AI classifies the intent
Message lands in the right inbox
Seconds, around the clock
24/7
Coverage
~5 sec
Routing time
~$0.25
Monthly cost
07
Synthetic data generator
Single-file web app
Most of our data can't be pasted into an AI tool: it holds customer names, emails, payment details. This builds a spreadsheet with the same columns and formatting as a real export, filled with convincing fake records, so we can hand an AI the shape of the data without ever exposing the real thing.
Real export · do not share
Jane Okaforjane@gmail.com$142.10
Marcus Bellmbell@aol.com$88.44
Priya Shahpshah@me.com$213.79
→
Safe to share
Dale Whitmandwhitman@mail.com$167.02
Rosa Nunezrnunez@mail.com$95.31
Kurt Adlerkadler@mail.com$204.88
Same shape, different people. Column names, order, and formats are preserved; every value is invented. Within a row the fake name, email, and address belong to the same fake person, so the sheet still reads like a real one.
Before
Need AI help with a billing or ad export
Can't share it: real customer data inside
Rebuild a fake version by hand, cell by cell
Or give up and go without the help
Long enough that you usually don't bother
After
Define the columns and formats once
Set a row count, click generate
Download XLSX, CSV, or copy to paste
Seconds, with zero real data exposed
0
Real records exposed
18
Column types
Local
Runs in the browser
Feeling inspired, or see something that matches your team?
Please send me the steps as you'd explain them to a new hire — where the data comes from, what you do to it, where it ends up. Some of these are afternoon projects. Let's see what we can do.