← All posts

Eight comparison pages in one afternoon

OriginChainDB · May 4, 2026
engineering ai-tools agents marketing-site

Three coding agents running in parallel on separate worktrees produced eight competitor comparison pages in about three hours of wall clock, prompt to merged PR. What made the output keepable was not the agents: it was a structural template, a batch of two or three pages per agent, and a fairness rubric, all written before any agent started.

Comparison pages are a strange genre. Customers want them - “how does OriginChainDB compare to Pinecone?” is the most common question on a sales call after pricing. Marketing pages want them - they rank for high-intent queries like “pinecone vs…” and “alternatives to…”. And yet, building eight of them by hand takes a week of writer time, an editor’s review pass, and three rounds of “is this fair?” pushback.

We shipped eight in under an afternoon. /vs/postgres, /vs/pinecone, /vs/weaviate, /vs/qdrant, /vs/milvus, /vs/supabase, /vs/neon, /vs/mongodb - each a standalone Astro page with a comparison table, an honest “what they do well” section, an “how OriginChainDB differs” section, a code example contrasting the two stacks, and a closing call-to-action.

Each agent worked on its own worktree with a small batch of pages.

The pattern: structural template + small batches + fairness rubric

Three decisions made the difference between “agents wrote a content pile we threw away” and “agents shipped pages we kept.”

Decision 1: Pre-write a strict structural template

The biggest failure mode for AI-written marketing pages is structural drift. Page 1 leads with a code example; page 2 leads with a comparison table; page 3 leads with a quote. Inconsistency reads as carelessness, and worse, it makes the pages feel like they were written by an LLM - which is the one signal we needed to avoid.

The fix was a structural template, written by a human, that every page must match 1:1:

1. Hero (one sentence, what they are, one sentence, what we are)
2. Comparison table (8–12 rows, identical row labels across all pages)
3. "What [competitor] does well" (3 paragraphs, no hedging)
4. "How OriginChain differs" (3 paragraphs, concrete, no hype)
5. Code example (their stack vs ours, side-by-side)
6. "When to pick which" (decision rubric, 3 bullets)
7. CTA (links to /docs/quickstart and /pricing)

The row labels in the comparison table are fixed: Atomic across shapes, SQL with JOINs, HNSW recall@10 at 100k, BM25 full-text, Graph traversal, Tenant isolation, Replication and failover, Pricing model, Self-host story. Same labels across all eight pages. Readers comparing two of our pages immediately see the same axes - that is the whole reason a comparison table is worth printing.

Decision 2: Small batches per agent

Each agent got 2–3 pages, not 8. This sounds like a small detail. It is not.

An agent given 8 pages will compress. By page 4 the descriptions get shorter, the code examples get more generic, and the “what they do well” paragraphs start sounding suspiciously similar across competitors. Context budget runs out, and quality silently drops.

An agent given 2–3 pages keeps the working set small, the writing fresh, and the per-page time roughly constant. We split 8 pages across 3 agents (3 + 3 + 2) and saw uniform quality across all eight outputs. The cost of running three sessions is a tiny fraction of the cost of having a human re-edit a degraded batch.

Decision 3: Fairness as a hard rubric

The most important sentence in the prompt was this one:

Be FAIR. Pinecone is a real product used by real teams. Explain what they do well - managed vector search, fast time-to-first-query, mature SDKs, dense ecosystem of integrations. Then explain how OriginChain differs. Do not be hostile, do not strawman, do not omit a competitor’s strengths to make ours look better. Hostile comparisons rank poorly on Google, read poorly to engineers, and damage the brand they’re trying to elevate.

Fairness is not a soft preference. It is a hard rubric, because:

The agents complied with the rubric cleanly. The Pinecone page calls out Pinecone’s managed-service polish and SDK quality before pivoting to atomicity-across-shapes. The Postgres page calls out pgvector and the Postgres ecosystem before pivoting to native multi-shape. The Neo4j… we didn’t do Neo4j, that one’s still on the list.

A sample agent prompt (excerpt)

This is the actual middle of one of the prompts we used:

You are writing /vs/pinecone.astro for the OriginChain marketing site.

Follow the structural template in /docs/internal/vs-template.md exactly.
Do not deviate from row order in the comparison table. Do not invent
performance numbers. The only numbers you may cite for OriginChain are:
 - HNSW fast: recall@10 = 0.69, p99 = 37 ms (100k vectors, D=128)
 - HNSW high_recall: recall@10 = 0.96, p99 = 109 ms
 - Asynchronous standby replication with fenced automatic failover
 - crash testing at 4 durability boundaries, 5,000 iters/boundary nightly

For Pinecone numbers, link to their public docs; do not state internal
benchmarks you have not run. If a row in the table is genuinely "both
support this," mark it Yes / Yes. Do not gaslight rows green for us
that are not green for us.

The "what Pinecone does well" section must be 3 paragraphs. Suggested
angles: managed-service quality, SDK ergonomics, integration ecosystem.
The "how OriginChain differs" section must be 3 paragraphs. Suggested
angles: atomicity across rows + vectors + FTS + graph in one write,
single bearer, sub-millisecond SQL alongside vector.

Do not use the words "revolutionize", "unleash", "game-changer",
"next-generation", "paradigm", or "empower."

The word ban looks petty. It is not. Those six words are the dominant tells of LLM marketing prose, and banning them forces the agent into more concrete language. Ban one and another grows back; ban six and the prose tightens.

What agents don’t replace

This is the part that matters, and the part most “agents wrote our marketing site” stories skip.

Agents do not replace editorial judgment. Every decision the agents made was already encoded in the prompt:

That is roughly 80% of the actual creative work. The agent contribution is the last 20% - turning the rubric into eight specific pages of prose, each calibrated to a specific competitor.

This is the part that most teams misjudge in both directions. The bullish version is “agents will write our marketing site for us.” The bearish version is “AI-generated content is slop and we won’t use it.” The realistic version is “agents are an extremely fast last-mile, and the editorial work that decides whether the output is good is exactly the work humans were always going to do.”

What this is NOT

A few honest scope notes:

Try it

If you are evaluating OriginChainDB against another database, the eight comparison pages are at:

Each is a fair, technical writeup - not a hit piece. If the comparison you want isn’t there yet, the docs cover the substrate-level shape of OriginChainDB in detail; the comparison page is just the last-mile rendering against a specific alternative.

Three agents. One afternoon. Eight pages. The pattern works.


← All posts Subscribe to RSS →