A step-by-step checklist for launching a micro-SaaS with organic discovery built in — from day one, not as an afterthought.
Most indie launches treat SEO as a phase-two problem. That is a mistake. Discovery infrastructure is cheapest to build on day one and most expensive to retrofit.
Here is the checklist we wish every founder had on launch day.
A .space or .com that matches your brand. Avoid hyphens and numbers. You will live with this for years.
Your sitemap should be generated from your route config, not hand-maintained. Add every public route — home, pricing, docs, blog, support, privacy, terms.
robots.txt for search crawlers, llms.txt for generative engines. Both at the root, both generated from the same config as your sitemap.
At minimum: SoftwareApplication + Organization. This is what earns your app's rich result.
Every article opens with a 40–60 word answer to a real question. Headings are questions. Structure is scannable.
A dated CHANGELOG.md rendered to /changelog plus an rss.xml feed signals freshness to both search and AI crawlers.
BlogPosting schema on every post — headline, author, dates, keywords. This is what makes articles citable.
Verify your domain, submit your sitemap, and watch for crawl errors in week one.
Show HN, relevant subreddits, Indie Hackers, a niche newsletter. Not a backlink scheme — genuine mentions where your audience is.
Plausible or Umami. No cookie banner, GDPR-friendly, and you actually look at it.
| # | Item | When | Tool |
|---|---|---|---|
| 1 | Domain you can own | Day 0 | Registrar |
| 2 | Generated sitemap | Day 1 | Build plugin |
| 3 | robots.txt + llms.txt | Day 1 | Build plugin |
| 4 | JSON-LD (app + org) | Day 1 | Schema generators |
| 5 | Answer-shaped articles | Week 1 | You |
| 6 | Changelog + RSS | Week 1 | Build plugin |
| 7 | BlogPosting schema | Week 1 | Schema generator |
| 8 | Search Console + Bing | Week 1 | Webmaster tools |
| 9 | 3–5 foundational backlinks | Week 2 | You |
| 10 | Privacy-first analytics | Week 1 | Plausible/Umami |
Every item in this checklist that can be generated from a single config should be. Hand-maintained sitemaps drift. Hand-written llms.txt goes stale. Hand-rolled JSON-LD breaks when you rename a route.
SpaceZero generates the sitemap, llms.txt, llms-full.txt, RSS, changelog page, and JSON-LD from SITEMAP_ROUTES and CHANGELOG_ENTRIES in vite.config.ts. You write content; the build writes infrastructure.
The principle: if a discovery artifact can be derived from your route config, derive it. Never maintain it by hand.
Discovery is a build output, not a marketing task. If your deploy does not emit a sitemap, an llms.txt, an RSS feed, and JSON-LD, fix the build before you write another blog post.