Selected work
Systems, not deliverables.
Most of what follows started as a job somebody was doing by hand every week. The interesting part was rarely the SEO — it was working out what the process actually was before automating it.
At The Limitless Agency
-
Directory profile management, automated
Profile records for 51 therapists across three healthcare directories — one profile per therapist per directory, 153 active — were being tracked by hand across multiple spreadsheet tabs, which made onboarding slow and offboarding easy to forget.
- Built a Google Sheets and Apps Script system — roughly 2,600 lines across 36 functions — managing all 153 active profile records, plus every offboarded one.
- Reduced onboarding, offboarding and reactivation to a single action each, instead of a multi-tab manual update.
- Removed the class of error where a clinician leaves and their listings quietly stay live.
51Clinicians153Profile records3Platforms50Open requests94ArchivedWalk through an offboarding as the script runs it — six writes across five tabs.
Open the demo →
-
Content production rebuilt as Claude skills
Marketing copy across fifteen-plus verticals, each carrying advertising rules that don't agree with each other. The rules went into the skills themselves — and the useful part is where a skill refuses to draft rather than producing something that only looks finished.
- Built six Claude skills, each a written instruction file plus its own reference material, holding EIN Presswire editorial standards, State Bar advertising ethics and regulated-claim restrictions across 15+ verticals.
- Made the deterministic parts deterministic — word count, character limits and a 25-term banned-word scan run as checks instead of a careful reread.
- Built in hard stop-and-ask gates: unverifiable claims are left out rather than hedged, and client-approved copy that breaks a rule gets flagged, never silently rewritten.
6Skills15+Verticals2Rule sets25Banned terms4Pre-draft gatesWatch one slash command run — including the point where it stops and refuses to write.
Open the demo →
-
Case result pricing audits, hours to minutes
Each audit meant finding a firm's case results page, counting the entries, summing the amounts and writing the assessment against a fixed template — one to two hours per client, repeated across a large roster. Almost none of it was judgment.
- Delivered audits for 25+ law firms.
- Rebuilt the workflow around a self-built prompt generator, cutting turnaround to roughly ten minutes per client.
- Split it into two stages — a browser pass that confirms what a page actually displays, then an audit that treats that as fact instead of inferring it.
- Attached the template rather than describing it, which made the output consistent between clients in a way manual assembly never was.
25+Firms audited2Prompt stages8Report sections1Fixed template10Minutes per auditStep through one firm end to end — intake, browser pass, finished report.
Open the demo →
-
An internal AI knowledge base
Years of institutional knowledge sat in spreadsheet comments, onboarding docs and training transcripts — searchable in principle, unfindable in practice.
- Built a retrieval layer over 7,000+ historical spreadsheet comments, onboarding documentation and training transcripts.
- Added a login-request tracker covering 15 clients.
- Replaced hunting across scattered documents with asking a question and getting the answer.
-
The citations and NAP audit training guide
The citations workstream depended on knowledge that lived in people's heads, which made it fragile and hard to hand over.
- Authored a searchable internal reference covering audit procedures, publisher-specific handling rules, credential and escalation workflows, glossary and FAQ.
- Adopted as the onboarding material for the citations workstream.
Independent projects
-
Junaz Homes — rebuild and content pipeline
A property site that could only really hold one listing, with a compliance problem nobody had noticed.
- Audited the live site before changing anything and caught a missing legal disclosure — required language identifying the owner as a marketing partner under a supervising broker — added sitewide the same day.
- Restructured property listings so the site can scale past a single property, and rebuilt the homepage around lead capture.
- Built a monthly social content pipeline that turns a short input into a full posting calendar with on-brand graphics.
- Encoded the compliance rule that content for foreign buyers covers condominiums only, since foreign nationals cannot own land in the Philippines.
-
Email-to-Notion task triage
Built for my own workflow: work email arrives faster than it can be triaged, and the actionable requests hide among project-management notifications.
- A twice-daily scheduled automation reads work email, separates real requests from noise, and files them as structured Notion tasks.
- Follows existing naming conventions closely enough that entries are indistinguishable from manual triage.
- A deduplication key collapses the three or four notifications one task generates into a single entry.
- Designed to fail safe — non-actionable mail is left untouched, and ambiguous cases default to no action rather than a guess.
Practicum
-
Angel's Farm and Private Pool Resort
A full local SEO campaign run end to end on a live resort website as a bootcamp project.
- Screaming Frog and Semrush audits, keyword mapping, and GA/GSC benchmarking from a cold start.
- Moved six target keywords from unranked past position 100 into tracked positions within about five weeks, two commercial-intent terms reaching position 5.
Something here look like your problem?
Happy to talk through what it would take. If I'm not the right person for it, I'll say so and point you somewhere better.