How I Built 14 AI Micro-Tools in 6 Months Using Cloudflare Workers

How I Built 14 AI Micro-Tools in 6 Months Using Cloudflare Workers

calendar_today agoschedule3 min read

I'm not a developer by background. I spent a decade as a plumber, then ran a crew-staffing company, then landed in logistics. Six months ago I started building software anyway — solo, nights and weekends, leaning hard on Claude to write the code I couldn't write myself. This is what that actually looked like, technically and otherwise.

The idea: one pattern, fourteen times

Instead of betting everything on one product, I built a portfolio: ReviewReply, HostAI, ContentBase, ProposalAI, JobPostAI, InvoiceChaser, and a few more — each a narrow AI tool solving one specific task for a specific small business owner (restaurant owners, Airbnb hosts, Etsy sellers, freelancers). Same underlying pattern every time:

  • A free tier with a hard usage cap (no signup)
  • A Pro subscription for unlimited use
  • A one-time "Audit" report for people who want a deeper analysis emailed to them

Repeating one pattern 14 times meant every product got faster to ship. The tenth one took a fraction of the time the first one did, because the scaffolding — rate limiting, payment activation, email delivery — was already solved.

The stack

Every product runs on the same four pieces:

  • Cloudflare Workers — API and business logic
  • Cloudflare KV — rate limiting and Pro-token storage
  • Cloudflare Pages — static frontend
  • Brevo — transactional email (audit delivery, Pro activation confirmation)

Total infra cost per product on the free tier: close to zero. That matters when you don't know yet if a product will find any users at all.

The trick I'm most proud of: Stripe activation without webhooks

Every one of these tools needs to detect "this person just paid" and instantly unlock Pro features — without me running a server that listens for webhooks 24/7.

The solution: Stripe's checkout redirects back to yourapp.com/?session_id=cs_live_xxx after a successful payment. The frontend picks up that session ID and POSTs it to a /activate-pro endpoint on the Worker. The Worker validates the session ID format (it has to actually look like a real Stripe session, not just any string), stores a Pro token in KV, and emails a confirmation. No webhook infrastructure, no signature verification headaches, no missed events because a webhook silently failed. It's not the "textbook" way to do it, and I know the tradeoffs (a user could theoretically screenshot-share a session ID before it activates), but for a low-stakes $9-29 product, the simplicity is worth it.

Automating the boring parts

The part that actually ate the most engineering time wasn't the AI tools themselves — it was everything around them: finding potential customers, emailing them without getting flagged as spam, and not emailing the same person twice.

That turned into its own small system:

  • Scraping public sources (Google Places, GitHub, Etsy) for relevant leads
  • Validating every email through ZeroBounce before sending (our bounce rate went from 53% to under 5% once we started doing this properly)
  • A dedup layer in KV — every sent email gets hashed and stored so nobody gets emailed twice across different campaigns
  • A drip sequence that only sends email 2 if email 1 was actually opened, tracked via a 1x1 pixel and UTM-tagged links

None of this is novel. All of it is necessary, and none of the tutorials I found bundled it together in one place.

The honest part

Here's the part most "I built X in Y months" posts skip: as of today, across all 14 products and roughly 1,250 monthly visitors, I have exactly one paying customer — myself, testing my own checkout flow.

That's not a failure story, it's a data point, and it's a more interesting one than fake early traction would be. When I actually pulled the numbers apart this week, I found something specific: people are landing on the pages (real traffic, real sessions in GA4), but almost nobody is completing a single use of the actual tool. My own usage counters — not page views, actual "someone clicked generate" events — show 1-2 completions per product per day, against hundreds of sessions in the same window.

That's a different problem than "nobody wants this." It's closer to "something between the landing page and the first result is losing people," which is a much more solvable problem, and one I'm testing directly this week by running through every product myself as a brand-new user would.

What I'd tell someone starting this today

  1. Build the boring infrastructure once, reuse it everywhere. Rate limiting, payment activation, and email delivery are the same problem 14 times over — solve it once.
  2. Track actual usage, not just traffic. Page views told me a comforting story. Usage counters told me the true one.
  3. A portfolio spreads risk, but it also spreads attention. I'm still deciding whether 14 products was the right call or whether I should have gone deeper on fewer. Ask me again in a few months.

If you want to see the actual products: baseaitools.com. If you're building something similar and want to compare notes on the Cloudflare Workers + Stripe pattern, I'd genuinely like to hear from you.

🔥 Join developers growing publicly
Share your knowledge, build in public, and grow your developer presence with a global community.

More Posts

How I Built a React Portfolio in 7 Days That Landed ₹1.2L in Freelance Work

Dharanidharan - Feb 9

I’m a Senior Dev and I’ve Forgotten How to Think Without a Prompt

Karol Modelskiverified - Mar 19

The Sovereign Vault — A Comprehensive Guide to Protocol-Driven AI

Ken W. Algerverified - Jun 4

Your AI Doesn't Just Write Tests. It Runs Them Too.

Kevin Martinez - May 12

I spent years trying to get AI agents to collaborate. Then Opus 4.6 and Codex 5.3 wrote the rules

snapsynapseverified - Apr 20
chevron_left
152 Points4 Badges
2Posts
0Comments
Solo founder of BaseAI Tools — building free AI micro-tools for small business owners (restaurants, ... Show more

Related Jobs

View all jobs →

Commenters (This Week)

1 comment
1 comment
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!