I was tired of copy-pasting the same text transformations over and over. Whether it was reformatting a CSV into a markdown table, converting raw meeting notes into structured action items, or massaging a messy prompt into something an LLM could actually parse — I kept writing tiny one-off scripts, saving them as browser bookmarks, and forgetting which one did what. So I built something to kill that cycle: Custom Microtool Sprint.
Try it live right now: https://solomon-tools.solomontools.workers.dev/?offer=custom-microtool-sprint
The concept is deliberately simple. You describe a repetitive text workflow in plain English, and the system spins up a small, focused AI-powered web tool in seconds. One input field. One output. Mobile-friendly. A shareable URL when feasible. And one revision pass so you can refine the result without rebuilding from scratch.
No signup wall. No subscription. No email gate. You get a working tool, and that's it.
Why I Built It
The problem isn't that AI models are bad at text manipulation — they're actually excellent at it. The problem is the friction of getting them to do it in a way that fits into a real workflow. I found myself bouncing between ChatGPT, grep, awk, Notion, and random browser extensions just to get a single transformation right. Each tool added context-switching cost. Each workflow lived in a different place.
I wanted a single interface where the input is a description of what I need, and the output is a usable tool — not a chat transcript I have to copy-paste from. I wanted it to feel like a micro-API endpoint that happens to have a UI.
How It Works Under the Hood
The entire stack runs on the edge. Here's the architecture at a high level:
- Cloudflare Workers handle all HTTP requests at the edge network. This means sub-50ms cold starts globally, no server to manage, and no container orchestration to think about.
- An AI inference step (powered by a model I route through an API) interprets the user's workflow description, extracts the transformation logic, and generates a small HTML/JS payload that implements the tool as a single-page app.
- The generated tool is served as a static HTML response with inline CSS and a thin JavaScript layer that handles the input→output transformation client-side, minimizing round trips.
- When the user requests a public URL, the Worker stores the tool payload in Cloudflare KV (key-value storage) and returns a short slug that maps back to it.
User submits description
│
▼
Cloudflare Worker (edge)
│
┌─────┴─────┐
│ AI parse │ ← interprets workflow, generates tool spec
└─────┬─────┘
│
┌─────┴────────────────────┐
│ Generate HTML/JS payload │ ← single-file SPA with inline logic
└─────┬────────────────────┘
│
┌─────┴──────────┐
│ KV storage URL │ ← optional, for public sharing
└─────────────────┘
The AI step is the interesting part. I prompt the model to produce a self-contained HTML file with an <input>, a <button>, and a <pre> or <textarea> for output. The transformation logic is embedded as a JavaScript function. This keeps everything serverless and fast — the heavy lifting happens in the user's browser, not on my infrastructure.
Design Decisions I'm Proud Of
One revision, not infinite. I deliberately limited the refinement loop to a single revision. In my testing, unlimited back-and-forth with AI-generated tools led to bloat — people would keep adding features until the microtool became a full application, which defeats the purpose. One revision is enough to fix a misunderstanding without spiraling.
No accounts, no persistence. The tools are ephemeral unless the user explicitly requests a public URL. KV storage keeps shared tools alive, but there's no database, no user table, and no privacy liability on my end. If a tool isn't shared, it effectively disappears when the cache expires.
Mobile-first, not mobile-friendly. The generated tools use a single-column layout with large touch targets. I resisted the temptation to add a sidebar or settings panel. The entire interaction is: type, submit, read the result. On a phone, that's a three-second flow.
What I Learned Shipping This
The biggest surprise was how much the quality of the AI-generated HTML depended on the structure of the user's prompt. A vague description like "format my data" produced a tool that guessed at the format and often got it wrong. A specific description like "take a pipe-separated list of names and output an HTML table sorted alphabetically" produced a tool that worked perfectly on the first try.
I ended up adding a lightweight prompt-structuring layer that asks the user three clarifying questions before the AI generates the tool:
- What is the input format?
- What is the desired output format?
- What is the single transformation?
This tripled the success rate of first-generation tools and eliminated most of the revision requests.
The second lesson was about edge caching. Cloudflare Workers with KV are fast, but the AI inference step is not. I implemented a simple cache key based on the description hash, so if two users request the same tool, the AI only runs once. This cut my per-request latency from ~2 seconds to ~200ms for cache hits.
Honest Monetization
This tool is free to use. I run it on Cloudflare's free tier, and the AI inference costs are minimal at the current volume. If it saves you time and you want to support the project, there's an optional one-time $5 support link on the landing page. It does not unlock paid access or extra features — no monthly fee, no upsell, no feature gating.
If you've got a repetitive text workflow that eats ten minutes of your day, try the sprint. You might walk away with a working tool in under a minute. And if it doesn't work, the revision pass is there to help you get it right.
Enjoyed this? I build simple, powerful AI tools — try the free Text Summarizer or browse the full toolkit at Solomon Tools. No signup, no subscription.
Top comments (0)