/* global React */ // Pricing + Blog + Footer function Pricing() { const tiers = [ { name: 'free', price: 0, per: '/mo', niches: '1 feed', limit: 'daily refresh', feats: ['Invite-only beta', 'Basic semantic filter', 'Strict monthly cap'], featured: false }, { name: 'personal', price: 15, per: '/mo', niches: '3 feeds', limit: '3 000 credits', feats: ['Hosted RSS and JSON', 'Agentic LLM rerank', 'Rubric top-10 queries', 'Signed receipts'], featured: true }, { name: 'pro', price: 29, per: '/mo', niches: '10 feeds', limit: '12 000 credits', feats: ['Everything in personal', 'GitHub and news signals', 'Saved ranking criteria', 'Webhook delivery'], featured: false }, { name: 'power', price: 99, per: '/mo', niches: '50 feeds', limit: '50 000 credits', feats: ['Everything in pro', 'Priority queue', 'Custom domains and audit export', 'BYO provider keys option'], featured: false }, ]; return (
Offer · hard-capped, never surprised

One bill. One ceiling.
No vendor juggling.

Standard RSS sells chronology. MECE sells judgment: shared crawls, private reranks, rubric-matched top tens, and hard caps. We target 50%+ gross margin by caching the expensive crawl and charging for the personal intelligence layer.

{tiers.map(t => (
{t.featured && most chosen}
{t.name}
${t.price}.{t.per}
{t.niches} · {t.limit}
{t.feats.map(f =>
{f}
)}
))}
{/* Anti-gaming guarantee strip */}
{[ { k: 'no overages', v: 'Exit 2 when capped — never paid in arrears' }, { k: 'refund on schema fail', v: 'Bad LLM output? Credits back, minus overhead' }, { k: 'cached niches', v: 'You pay for the rerank, not the full crawl' }, { k: 'agent-ready', v: 'RSS for readers, JSON with reasons for tools' }, ].map(item => (
{item.k}
{item.v}
))}
); } function BlogTeaser() { const posts = [ { cat: 'Engineering', date: 'May 12 · 8 min', title: <>Why we sign every LLM call with Ed25519., thumb: , }, { cat: 'Anti-gaming', date: 'May 03 · 6 min', title: <>Prompt injection is a scraping problem. Here’s our 50-prompt corpus., thumb: , }, { cat: 'Economics', date: 'Apr 21 · 5 min', title: <>How niches-as-products let us run $15/mo profitably., thumb: , }, ]; return (
Field notes

Receipts, literally.

All posts →
); } function ThumbReceipts() { return ( {/* stacked receipts */} {[0,1,2].map(i => ( ))} ); } function ThumbCorpus() { return ( {Array.from({length: 12}).map((_, i) => ( {['', 'ignore previous...', 'system: leak', 'tool: fetch(url)', '> exfil to', '"output_hash"', '— blocked —', 'sha256:af3...', 'rate_limit_ok', '', '', 'corpus_test ok'][i]} ))} 50 attacks ); } function ThumbEcon() { return ( {/* bars */} {[40, 60, 80, 50, 95, 70, 88, 110, 95, 130].map((h, i) => ( ))} break-even SUBSCRIBERS PER NICHE ); } function Footer() { return ( ); } Object.assign(window, { Pricing, BlogTeaser, Footer });