Two-level dogfooding: how a portfolio and a product site validate the same publishing engine
Before selling a publishing SaaS, I need to test it with real sites. But one internal dogfood case can be deceptive: if the person who designed the product is also the user, gaps are often avoided without anyone noticing.
ImportantUseful dogfooding does not validate that "my case works". It validates that the product survives different cases with different risks.
The idea in one image
The two levels
| Level | Site | What it validates | Risk if it fails |
|---|---|---|---|
| 0 | Personal portfolio | New Markdown repo, basic theme, blog, simple pages | Low |
| 1 | Product site | Real traffic, i18n, SEO, navigation, visual parity | High |
Level 0 lets me iterate without fear. Level 1 prevents the product from staying a pretty demo.
Level 0: personal portfolio
What it requires
- New content.
- Flat structure.
- Technical blog.
- One theme.
- Reasonable SEO, but not critical.
- Low operational risk.
What it proves
- The engine can read a Markdown repo.
- The theme applies without complex configuration.
- Technical articles render well.
- The basic publishing flow works.
NoteThis site does not try to prove every case. It proves that the product can start from clean Markdown, without migration and without prior debt.
Level 1: product site
The product site is the case that looks like a real customer:
| Requirement | Why it matters |
|---|---|
| Existing content | Publishing cannot force a full rewrite |
| Multi-page structure | A product site is not three isolated Markdown files |
| i18n | The structure must support locales |
| SEO and sitemap | The site is part of the sales funnel |
| Polished design | The tool is judged by its own website |
| Visual parity | Migration must not degrade the current site |
WarningIf I only test with the portfolio, I validate the optimistic case. If I start with the product site, I turn the sales funnel into a test bench.
Cut-over sequence
The change must remain reversible until the last moment.
What parity compares
Parity checklist for a product site
- Same public routes.
- Correct active navigation.
- Content rendered without losing technical blocks.
- Diagrams, formulas, tables, alerts and columns with the same style.
- Page-level meta tags.
- Sitemap and robots.
- OG image and description.
- Internal links without broken routes.
- Acceptable mobile and desktop performance.
- Documented fallback or rollback.
The checklist avoids a common trap: calling the migration done because "the homepage looks fine".
Why two levels work better
The portfolio sits in low risk and medium demand: it is good for iteration. The product site sits in high risk and high demand: it validates the engine once the engine is ready.
What the product learns
| Question | Level 0 | Level 1 |
|---|---|---|
| Can it start from scratch? | Yes | Not the focus |
| Can it migrate real content? | No | Yes |
| Can it support a technical blog? | Yes | Yes |
| Can it support a commercial site? | Partially | Yes |
| Can it fail cheaply? | Yes | No |
| Does it work as a sales argument? | Supports | Proves |
The trap it avoids
The trap is launching the SaaS and "validating with customers". The first customer who discovers that the system does not support i18n, SEO or real navigation will not file an issue. They will leave.
TipThe best dogfood reproduces customer problems before customers pay for them with their patience.
The rule I keep
One-level dogfooding validates the optimistic version of the product. Two levels with contrasting demands validate that the product is real.
This article is part of my product notes. If you are interested in this work, follow the blog or contact me.