Conquest pages
The roundup anchored to a rival at /alternatives/{rival} - the flag that makes one, the fields only it carries, and what the guard refuses so a near-duplicate never publishes.
index.md is the roundup about your own product. Any other file in the folder is a conquest page at /alternatives/{rival} - Best {Rival} alternatives, compared - where the anchor is a rival and your product is the first alternative, carrying a visible That is us badge.
What makes one
competitor: { name: "Orbit", url: "https://...", external: true, # THE FLAG; absent = the index
slug: "orbit" } # the anchor's own fact sheet. Without it the table
# leads with YOUR column, like the index does
whySwitch: ["..."] # conquest-only, 3-5 lines; a guard error on index.md
items: [{ name: "Your Product", us: true, url: "/" }, ...] # you FIRST, and you render a blockEverything else - the frontmatter, the derived table, the blocks, the better-buy cards - is the index roundup's, unchanged.
How it differs
| Differentiation | Index | Conquest |
|---|---|---|
| Anchor | Your own product | The rival named in competitor |
| First column | Yours | The anchor, with yours second |
| Block order | The rivals by order | You first, then the rest by order |
| Trade-off list | vs your product | vs the anchor |
| Extra section | None | The whySwitch list, written from the anchor's own documentation |
| Your own block | None - you are the reference column | First, with a That is us badge |
ItemList | Excludes you | Includes you, first |
Facts may repeat across pages; sentences must not. Write each card against that page's anchor, in the vocabulary of its own matrix.
What the guard refuses
| Rule | Effect |
|---|---|
index.md sets external | Guard error - the index is anchored to your own product |
Another file omits external | Guard error - it would be a second roundup about you |
whySwitch on index.md | Guard error - "why people leave" is not a section about yourself |
The anchor appears in items | It is the page's baseline, not one of the alternatives a reader moves to |
A rival the table columns has no items entry | Guard error - a column a reader compares and the page then refuses to describe. Every sheet but the anchor needs a block |
Between the first two, exactly one page is anchored to you, and it lives at the section root. Whether a given rival deserves a conquest page at all is an editorial call, not a mechanical one.
Alternatives pages
The index roundup: frontmatter, what renders, the guard and what an item derives.
Compare engine
The fact sheets this page columns, and the head-to-head pages its blocks link to.
Writing comparison pages
Which pages earn their place, and the rules every claim on them has to clear.
Editorial checklist
What the schema refuses before any of this matters.
Alternatives pages
The alternatives roundups - the index at /alternatives anchored to your own product and a conquest page per rival - their frontmatter, the derived table, the ranked blocks, and the guard that noindexes a thin page.
Compare engine
The /compare section, where each document is a product fact sheet rather than a page - the frontmatter it carries, the direction its pair URLs read, and the quality gate that refuses to publish a comparison nobody made.