Skip to content

Commit 333fd74

Browse files
copyleftdevclaude
andcommitted
docs: add competitive landscape section and rewrite hero copy
New "Nothing Else Does This" section with market narrative, origin story, 6-cell gap grid, 13-tool competitor strip, and closing statement. Hero rewritten from tutorial framing to product positioning. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent ec360f4 commit 333fd74

1 file changed

Lines changed: 237 additions & 5 deletions

File tree

‎docs/index.html‎

Lines changed: 237 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1301,6 +1301,150 @@
13011301
transition: width 1.5s cubic-bezier(0.22, 1, 0.36, 1);
13021302
}
13031303

1304+
/* --- Landscape / Why Section --- */
1305+
.landscape {
1306+
max-width: 48rem;
1307+
margin: 0 auto;
1308+
padding: 5rem 2rem;
1309+
}
1310+
1311+
.landscape .section-label,
1312+
.landscape h2 {
1313+
text-align: center;
1314+
}
1315+
1316+
.landscape h2 {
1317+
margin-bottom: 0.75rem;
1318+
}
1319+
1320+
.landscape .land-subtitle {
1321+
text-align: center;
1322+
font-size: 0.9rem;
1323+
color: var(--text-tertiary);
1324+
font-weight: 300;
1325+
max-width: 36rem;
1326+
margin: 0 auto 3rem;
1327+
line-height: 1.7;
1328+
}
1329+
1330+
.landscape .land-lede {
1331+
font-size: 1.05rem;
1332+
color: var(--text-secondary);
1333+
font-weight: 300;
1334+
line-height: 1.8;
1335+
margin-bottom: 1.5rem;
1336+
}
1337+
1338+
.landscape .land-lede strong {
1339+
color: var(--text-primary);
1340+
font-weight: 500;
1341+
}
1342+
1343+
.landscape .land-lede em {
1344+
font-style: normal;
1345+
color: var(--accent);
1346+
font-weight: 400;
1347+
}
1348+
1349+
.gap-grid {
1350+
display: grid;
1351+
grid-template-columns: 1fr 1fr;
1352+
gap: 1px;
1353+
background: var(--border);
1354+
border: 1px solid var(--border);
1355+
border-radius: 0.5rem;
1356+
overflow: hidden;
1357+
margin: 2.5rem 0;
1358+
}
1359+
1360+
.gap-cell {
1361+
background: white;
1362+
padding: 1.25rem;
1363+
transition: background 0.3s;
1364+
}
1365+
1366+
.gap-cell:hover { background: #fafaf9; }
1367+
1368+
.gap-cell .gap-label {
1369+
font-size: 0.6rem;
1370+
letter-spacing: 0.2em;
1371+
text-transform: uppercase;
1372+
font-weight: 500;
1373+
margin-bottom: 0.35rem;
1374+
}
1375+
1376+
.gap-cell .gap-label.empty { color: #e11d48; }
1377+
.gap-cell .gap-label.filled { color: #16a34a; }
1378+
1379+
.gap-cell h4 {
1380+
font-size: 0.85rem;
1381+
font-weight: 500;
1382+
color: var(--text-primary);
1383+
margin-bottom: 0.25rem;
1384+
}
1385+
1386+
.gap-cell p {
1387+
font-size: 0.72rem;
1388+
color: var(--text-tertiary);
1389+
font-weight: 300;
1390+
line-height: 1.5;
1391+
margin: 0;
1392+
}
1393+
1394+
.comp-strip {
1395+
display: flex;
1396+
justify-content: center;
1397+
flex-wrap: wrap;
1398+
gap: 0.35rem;
1399+
margin: 2rem 0;
1400+
}
1401+
1402+
.comp-chip {
1403+
font-family: var(--font-mono);
1404+
font-size: 0.6rem;
1405+
padding: 0.25rem 0.6rem;
1406+
border-radius: 2rem;
1407+
border: 1px solid var(--border);
1408+
color: var(--text-tertiary);
1409+
font-weight: 400;
1410+
transition: all 0.2s;
1411+
}
1412+
1413+
.comp-chip:hover {
1414+
border-color: var(--accent);
1415+
color: var(--accent);
1416+
}
1417+
1418+
.origin-story {
1419+
background: var(--code-bg);
1420+
border-radius: 0.5rem;
1421+
padding: 2rem 2.5rem;
1422+
margin: 2.5rem 0;
1423+
}
1424+
1425+
.origin-story .os-quote {
1426+
font-size: 1rem;
1427+
color: #e2e8f0;
1428+
font-weight: 300;
1429+
line-height: 1.8;
1430+
font-style: italic;
1431+
}
1432+
1433+
.origin-story .os-quote em {
1434+
font-style: normal;
1435+
color: #818cf8;
1436+
font-weight: 400;
1437+
}
1438+
1439+
.origin-story .os-attr {
1440+
font-size: 0.65rem;
1441+
color: #64748b;
1442+
margin-top: 1rem;
1443+
letter-spacing: 0.1em;
1444+
text-transform: uppercase;
1445+
font-weight: 500;
1446+
}
1447+
13041448
/* --- Responsive --- */
13051449
@media (max-width: 640px) {
13061450
.hero h1 { font-size: 1.75rem; }
@@ -1309,6 +1453,7 @@
13091453
section { padding: 3rem 1.5rem; }
13101454
.perf-layout { grid-template-columns: 1fr; }
13111455
.latency-grid { grid-template-columns: repeat(2, 1fr); }
1456+
.gap-grid { grid-template-columns: 1fr; }
13121457
}
13131458
</style>
13141459
</head>
@@ -1326,12 +1471,14 @@
13261471

13271472
<!-- ─── HERO ─── -->
13281473
<div class="hero">
1329-
<div class="label">A Claude Code Build Journal</div>
1330-
<h1>How We Built a <em>Deterministic Crawl Kernel</em> in One Session</h1>
1474+
<div class="label">Built with Claude Code &mdash; One Session, Zero Compromise</div>
1475+
<h1>The Web's Memory Layer <em>Should Be Provable</em></h1>
13311476
<p class="subtitle">
1332-
An expert-level tutorial on setting up your machine for Claude Code,
1333-
establishing invariant-driven development practices, and shipping
1334-
a production-grade Rust system from zero to CI-green in a single conversation.
1477+
Palimpsest is a deterministic crawl kernel that produces identical output
1478+
for identical input &mdash; every time, on any machine, under any load.
1479+
Not a crawler. Not a Wayback clone. The auditable, replayable,
1480+
cryptographically verifiable foundation for web archiving,
1481+
AI training data, and compliance.
13351482
</p>
13361483
<div class="stack-bar">
13371484
<!-- Rust — gear/cog -->
@@ -1433,6 +1580,91 @@ <h3>The Six Laws</h3>
14331580

14341581
<div class="divider"></div>
14351582

1583+
<!-- ─── WHY THIS EXISTS ─── -->
1584+
<div class="landscape">
1585+
<div class="section-label">The Gap</div>
1586+
<h2>Nothing Else Does This</h2>
1587+
<p class="land-subtitle">
1588+
We looked at every tool in the space. No one combines these properties.
1589+
</p>
1590+
1591+
<p class="land-lede">
1592+
The web archiving world has <strong>Heritrix</strong> and <strong>Webrecorder</strong> &mdash; institutional tools that produce WARC files but can't get past a Cloudflare challenge page. The scraping world has <strong>Scrapy</strong>, <strong>Crawlee</strong>, and <strong>Firecrawl</strong> &mdash; fast tools with anti-detection but no archival integrity, no WARC output, no replay fidelity. The AI world has <strong>Crawl4AI</strong> and <strong>Unstructured</strong> &mdash; great at extraction but with zero provenance, zero reproducibility, and no way to prove when content was captured or by whom.
1593+
</p>
1594+
<p class="land-lede">
1595+
<em>These three worlds have never been combined.</em> Archivists can't reach the modern web. Scrapers can't prove what they captured. AI pipelines can't trace their training data. Palimpsest exists because the web's memory layer shouldn't require choosing between <strong>access</strong>, <strong>integrity</strong>, and <strong>provenance</strong>.
1596+
</p>
1597+
1598+
<div class="origin-story">
1599+
<div class="os-quote">
1600+
"This started as a vibe coding session &mdash; one conversation with Claude Code,
1601+
one afternoon, see what happens. Twelve hours later we had 15 crates, 288 tests,
1602+
a deterministic simulation framework proving correctness at 10,000 pages,
1603+
BoringSSL TLS impersonation passing Rebrowser 10/10, and a temporal index that
1604+
treats web history as a <em>graph, not a lookup table</em>. It stopped being a
1605+
vibe somewhere around hour three."
1606+
</div>
1607+
<div class="os-attr">&mdash; Built in one session with Claude Code</div>
1608+
</div>
1609+
1610+
<div class="gap-grid">
1611+
<div class="gap-cell">
1612+
<div class="gap-label empty">No one else</div>
1613+
<h4>Deterministic Crawling</h4>
1614+
<p>Same seed = identical frontier ordering, identical artifacts, identical replay. No existing crawler guarantees this.</p>
1615+
</div>
1616+
<div class="gap-cell">
1617+
<div class="gap-label empty">No one else</div>
1618+
<h4>Stealth + Archival</h4>
1619+
<p>WARC-producing tools have zero anti-detection. Anti-detection tools produce zero WARCs. These worlds have never met.</p>
1620+
</div>
1621+
<div class="gap-cell">
1622+
<div class="gap-label empty">No one else</div>
1623+
<h4>Execution Envelope</h4>
1624+
<p>Every fetch seals DNS, TLS chain, headers, browser config, and seed into an immutable context. No other tool does this.</p>
1625+
</div>
1626+
<div class="gap-cell">
1627+
<div class="gap-label empty">No one else</div>
1628+
<h4>Temporal Graph Index</h4>
1629+
<p>URL &times; time &times; content hash &times; crawl context. CDX is a flat lookup. This is a queryable history of the web.</p>
1630+
</div>
1631+
<div class="gap-cell">
1632+
<div class="gap-label filled">Palimpsest</div>
1633+
<h4>Provable AI Training Data</h4>
1634+
<p>Every RAG chunk traces to a content hash, timestamp, crawl context, and execution envelope. Audit-ready provenance.</p>
1635+
</div>
1636+
<div class="gap-cell">
1637+
<div class="gap-label filled">Palimpsest</div>
1638+
<h4>Unified Capture</h4>
1639+
<p>Raw HTTP and headless Chrome produce the same artifact types through the same envelope model. Not bolted on &mdash; native.</p>
1640+
</div>
1641+
</div>
1642+
1643+
<div class="comp-strip">
1644+
<span class="comp-chip">Heritrix</span>
1645+
<span class="comp-chip">Scrapy</span>
1646+
<span class="comp-chip">Crawlee</span>
1647+
<span class="comp-chip">Firecrawl</span>
1648+
<span class="comp-chip">Crawl4AI</span>
1649+
<span class="comp-chip">spider-rs</span>
1650+
<span class="comp-chip">curl-impersonate</span>
1651+
<span class="comp-chip">Webrecorder</span>
1652+
<span class="comp-chip">ArchiveBox</span>
1653+
<span class="comp-chip">camoufox</span>
1654+
<span class="comp-chip">puppeteer-stealth</span>
1655+
<span class="comp-chip">Colly</span>
1656+
<span class="comp-chip">katana</span>
1657+
</div>
1658+
1659+
<p class="land-lede" style="text-align:center; font-size:0.85rem; color:var(--text-tertiary);">
1660+
We studied all of them. None of them combine determinism, content addressability,
1661+
TLS stealth, browser capture, WARC output, temporal indexing, and RAG extraction
1662+
in a single system. Palimpsest is the first.
1663+
</p>
1664+
</div>
1665+
1666+
<div class="divider"></div>
1667+
14361668
<!-- ─── MACHINE SETUP ─── -->
14371669
<section>
14381670
<div class="section-label">Part One</div>

0 commit comments

Comments
 (0)