How I run 8 marketing-data products solo with Claude Code
They are not 8 products. They are one data layer with 8 front doors. The setup, what went wrong, and how to copy it.
I'm Jason. I build tools that give marketers and their AI agents the data they need to grow.
There are 8 of them right now:
- SeekWinners: which collection pages your Shopify store should have
- TopiLeads: local business leads from Google Maps, scored on buying signals
- ProvenHits: ads that kept running for weeks, and why they work
- CiteCycle: what ChatGPT, Gemini and Claude recommend in your category, and how to get in
- ScrapeWhale: the web data API and MCP for marketing agents
- openskills: a directory of Claude skills, with security audits
- ModelMux: the best image models, pay per image
- vidstill: download, transcribe or summarize any video
People ask how one person keeps 8 products alive. The short answer is that they are not 8 products. They are one data layer with 8 front doors.
1. One data layer, built once
Every product needs the same raw inputs: search results, ads, social profiles, Google Maps businesses, store data, page content.
So I built the scraping once, as an internal API, and every product calls it. When I fix the Google Maps scraper, TopiLeads, ProvenHits and ScrapeWhale all get better that day.
ScrapeWhale is that layer, opened up as a public API and MCP, so your agent can use it too.
The decision that made everything else possible: build the data layer first, and treat each app as a view on it.
2. One stack, one host
All 8 run on the same stack, on Cloudflare Workers. That means:
- the same auth, billing, credits, i18n and blog in every app
- the same deploy command
- a fix in one app can be copied to the others in minutes
Workers keep the hosting simple. Images and media go to R2, and I compress them hard. ProvenHits stores a 480px WebP of each ad at about 17 KB instead of the original image.
3. Claude Code is the team, skills are the process
I don't hand Claude Code a task and hope. Every repeated job becomes a skill: a written procedure with scripts, which Claude follows the same way every time.
Some I use every week:
- a weekly digest: collect the week's SEO and GEO news and my bookmarks, write the newsletter, the X thread and a video
- SEO for my own sites: Search Console → find the problems → fix them in the repo → check on production
- article writing and review for client sites
- this account: knowledge-base updates, drafts, weekly reviews
The skill holds the judgment. Claude does the typing. I review.
4. Data first, then content
The best marketing for a data product is the data itself.
SeekWinners pulled the top 10 Google results for 9,799 Shopify category keywords. 45% of the collection pages that rank sit on sites under DR 50. That one study tells merchants more than any landing page could.
TopiLeads audited 1,002 Google Maps profiles. Review velocity separates the top 3; posting on Google doesn't.
That's what I'll post here: the plays, and the data behind them.
5. What went wrong
- Background work blocking users. In SeekWinners, crawler-triggered audits once queued ahead of the audits real people asked for. User-triggered work now jumps the queue.
- Building before distributing. I built 8 products before posting about any of them. That's why this account exists.
6. If you want to copy this
- Pick a niche where the data is public but scattered.
- Build the collection layer once, and make it an API from day one.
- Use one stack for every app.
- Turn every task you repeat into a skill.
- Publish what the data says, every week.
I'll share the plays and the numbers as I go. If you do SEO, GEO, ads or local lead gen with AI, follow along.
Also published on X as an Article.