DEV Community

Sulynn AI
Sulynn AI

Posted on

I built 7 AI tools, then realized I was doing it wrong. Here's what I learned.

I built 7 AI tool sites. A paper rewriter, a copywriter, a resume optimizer, a weekly report generator, an email generator, a meeting notes tool, and an AI navigation site.

Each one took me days to build. And each time, I was rebuilding the same infrastructure:

  • API key management (input, validation, localStorage)
  • SSE streaming (progressive output, abort, error handling)
  • Responsive UI (mode tabs, input/output panels, copy button)
  • SEO setup (meta tags, Open Graph, JSON-LD)
  • Deployment config (GitHub Pages, Vercel, etc.)

By tool #7, I realized: I was solving the same problems 7 times instead of solving them once.

The mistake

I thought I was building products. I was actually building infrastructure — over and over.

The actual "product" part of each tool — the prompts, the modes, the domain knowledge — was maybe 10% of the code. The other 90% was boilerplate I had already written for the previous tool.

What I did

I distilled the common code from all 7 tools into a single config-driven boilerplate called ShipAI.

The idea: edit ONE file (config.js), ship a new AI tool.

// config.js - this is the only file you edit
const CONFIG = {
  site: { name: 'My AI Tool', description: '...' },
  api: { endpoint: 'https://api.deepseek.com/v1/chat/completions' },
  modes: [
    { id: 'rewrite', label: 'Rewrite', prompt: 'Rewrite: {{input}}' },
    { id: 'expand', label: 'Expand', prompt: 'Expand: {{input}}' },
  ],
}
Enter fullscreen mode Exit fullscreen mode

That's it. The boilerplate handles:

  • API key input + validation + localStorage
  • SSE streaming with abort + error handling
  • Responsive UI (Tailwind, no build step)
  • SEO template (meta, OG, JSON-LD)
  • Copy button, loading states, empty states

Pure frontend. No backend, no servers, no npm install. Deploy to GitHub Pages for free.

What I learned studying successful indie hackers

After building 7 tools that nobody used, I studied every verifiable indie hacker success story I could find:

  • Pieter Levels (@levelsio): 70+ projects, 95% failed. Ships in days, not weeks. PHP + jQuery (not fancy frameworks).
  • Marc Lou (@marclouvion): 30 failed projects before ShipFast ($249) took off. Now $100K+/month with 16 products.
  • Filip Panoski: Failed 5 times. Learned B2B > B2C, subscription > one-time, validate with waitlist BEFORE coding.

The pattern was clear: they all built audiences BEFORE products, not the other way around.

I did it backwards. I built 7 products with zero audience. This time, I'm doing it right — building in public from day one.

What's next

  1. Ship the boilerplate ($199 one-time, inspired by ShipFast)
  2. Build in public — share revenue, failures, process
  3. Launch more products for indie devs
  4. Cross-promote

Day 1. Revenue: $0. Followers: 0. Let's see what happens.

If you're building AI tools, check out ShipAI. It might save you the 7 failed attempts it took me to learn these lessons.


This is part of my build-in-public journey. I'll share updates as I go — the good, the bad, and the $0 revenue reports.

Top comments (0)