Automation and data cleanup
Most small businesses have someone who redoes the same data work every week: export, reformat, re-key, reconcile. I clean and migrate what already exists, then move the recurring part into a Python job or a Postgres function, so the numbers stop drifting and nobody has to remember to run it.
A spreadsheet is often the right answer, and I have talked people out of this before. If one person owns the file and the format changes as often as the work does, automation buys you rigidity instead of time. What changes the math is repetition across people: the same export re-keyed every week, two systems that disagree about the same customer, or a file that quietly became the system of record for something that matters.
An engagement starts with me watching the real process, including the steps nobody wrote down. Then I clean and migrate the existing data, because automating a mess only produces the mess faster. The recurring piece gets built last: a Python job, a Postgres function, or a small internal screen, with a written handoff so you are not dependent on me to run it. Scope is fixed per project, and the number lands after the audit rather than before it.
I do this at scale. GrantCue, the grant-funding SaaS I built, rebuilds its catalog on a schedule from thirteen sources, the full federal Grants.gov corpus plus eleven state portals, normalized through per-source adapters, deduplicated by content hash and title similarity, then upserted only where something changed. WellStockd applies the same discipline in a kitchen: cooking a recipe atomically subtracts its ingredients from inventory, and anything that runs out lands on the shopping list. Those kitchen flows run as Postgres functions, so the numbers never drift.
When the data only lives on a website, extraction is still solvable. I have built a multi-tenant web crawler and SEO auditor in Python and Flask with Playwright rendering for exactly that case. I work from Lock Haven, though this kind of job runs remotely more often than not; the data does not care where either of us sits.
What you get
- A written map of the current process, including the manual steps and the places where two sources already disagree
- A cleaned, deduplicated dataset with the matching rules written down where you can read them
- Data migration into Postgres, Supabase, or whatever system is meant to hold it, with the old source left readable until you sign off
- Scheduled import and export jobs in Python, with retries, run logs, and an alert when a run fails
- A spreadsheet-to-database move that can still hand back a spreadsheet view for the people who want one
- Small internal screens for the steps a person genuinely has to review or approve
- Extraction from a website or another vendor's tool when there is no export and no API worth using
- A runbook you can hand to someone else, including how to turn the whole thing off
Shipped work behind this
- GrantCue — A multi-tenant platform that ingests the federal Grants.gov catalog plus eleven state portals on a schedule, then layers AI discovery, fit-scoring, and proposal drafting over a full team pipeline.
- WellStockd — A touch-first recipe and fridge-inventory app that lives on a fridge-mounted tablet. Cook a recipe and the ingredients subtract themselves; run out of something and it lands on the shopping list.
Start a project
Bring me the practical version.
Tell me what you're trying to build or improve and what's already in place — I'll reply with a clear next step.