Skip to content

Fix markdown 500s and make valuation headlines crawlable - #18

Merged
0thernet merged 3 commits into
mainfrom
cursor/crawlable-history-markdown-05de
Aug 22, 2026
Merged

Fix markdown 500s and make valuation headlines crawlable#18
0thernet merged 3 commits into
mainfrom
cursor/crawlable-history-markdown-05de

Conversation

@0thernet

@0thernet 0thernet commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

The live site still has a P0 markdown failure: Accept: text/markdown on / returns HTTP 500. The prerendered HTML for / and /history/* also started with a Suspense loading shell (Loading Stripe company history…).

This revision keeps that markdown fix and the SSR lists. It does not invent per-event routes. The primary organic artifact is /history/valuation: a visible H1, a 2–4 sentence answer lead, and an HTML <table> of yearly valuation headlines with basis, status, and YAML source links. CollectionPage/ItemList JSON-LD matches those visible rows.

The sourced corpus is unchanged. The site stays independent of Stripe, Inc.

Markdown 500 (P0)

The proxy was calling markdownForPath()loadHistory()node:fs. On Vercel that function has no YAML corpus, so every markdown Accept request failed.

The proxy now only negotiates Accept and rewrites to a Node route handler at /x-markdown/**. That path is noindexed, disallowed in robots, and omitted from the sitemap. The public URL stays /, /about, /history/valuation, etc.

Before (production)

$ curl -sS -D- -o /tmp/out -H 'Accept: text/markdown' https://stripedex.com/ | head
HTTP/2 500
vary: Accept
...
Internal Server Error

After (bun run build && bun run start, localhost)

$ curl -sS -D- -H 'Accept: text/markdown' http://127.0.0.1:3010/
HTTP/1.1 200 OK
content-type: text/markdown; charset=utf-8
Vary: Accept, ...

# Stripe Company History: 273 Sourced Events

> An independent, sourced timeline of Stripe acquisitions, products, leadership, funding, valuation, expansion, offices, publishing, company milestones, and annual volume.

stripedex.com is not affiliated with, endorsed by, or operated by Stripe, Inc.
$ curl -sS -D- -H 'Accept: text/markdown' http://127.0.0.1:3010/this-does-not-exist
HTTP/1.1 404 Not Found
content-type: text/markdown; charset=utf-8

# Page not found
- [Sitemap](https://stripedex.com/sitemap.xml)
- [Agent index (llms.txt)](https://stripedex.com/llms.txt)

Valuation headlines (preferred organic artifact)

No-JS Googlebot HTML for /history/valuation:

<h1 class="history-page-title" id="valuation-page-heading">Stripe Valuation History by Year, 2011–2026</h1>

<p class="history-volume-intro">Stripe’s latest sourced private-company valuation headline is $159 billion in 2026, from a company tender with agreements signed status, recorded as transaction implied. This page selects one observation per year from 2011–2026. Financing, tender, 409A, secondary, and market-indication figures are not interchangeable. stripedex.com is not affiliated with, endorsed by, or operated by Stripe, Inc. …</p>

<table>
  <thead>
    <tr>
      <th scope="col">year</th>
      <th scope="col">valuation</th>
      <th scope="col">basis</th>
      <th scope="col">status</th>
      <th scope="col">sources</th>
    </tr>
  </thead>
  <tbody>
    <tr id="valuation-2026-02-employee-tender">
      <th scope="row">2026</th>
      <td>$159 billion</td>
      <td>transaction implied</td>
      <td>agreements signed</td>
      <td><a href="https://stripe.com/newsroom/news/stripe-2025-update">Stripe</a></td>
    </tr>
  </tbody>
</table>

JSON-LD ItemList has numberOfItems: 14 and the same fragment URLs as the table rows (/history/valuation#valuation-2011-03-seed, … #valuation-2026-02-employee-tender).

Per-event /history/<category>/<event-id> pages from the previous revision are removed. Home and category lists stay on # fragments. sitemap.xml lists only the durable document routes.

SSR home and category lists

Removed app/loading.tsx. Googlebot on local / and /history/acquisitions:

loading count: 0
home events: 273
acquisitions events: 32
event path /history/acquisitions/openrouter-…: absent

First <main> is the real timeline, not “Loading Stripe company history…”.

Verification

  • bun run check (typecheck, lint, 155 tests)
  • bun run build prerenders category, volume, valuation, and markdown handler routes (no per-event pages)
  • Local curls above for markdown 200 on / and the valuation <table> in no-JS HTML
Open in Web Open in Cursor 

The Vercel proxy cannot read the YAML corpus, so markdown negotiation now
rewrites to a Node handler. Home and category HTML no longer start with a
loading shell, and every sourced event gets a durable path.

Co-authored-by: ben <0thernet@users.noreply.github.com>
@vercel

vercel Bot commented Aug 22, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
stripedex Ready Ready Preview Aug 22, 2026 4:13pm

Request Review

Keep the markdown Accept rewrite so `/` returns 200 text/markdown.
Drop invented `/history/<category>/<event-id>` pages. Make
/history/valuation the crawlable artifact: visible H1, derived lead,
yearly headline table with basis/status/sources, and ItemList JSON-LD
that matches those rows.

Co-authored-by: ben <0thernet@users.noreply.github.com>
@cursor cursor Bot changed the title Fix markdown 500s and make Stripe history crawlable Fix markdown 500s and make valuation headlines crawlable Aug 22, 2026
Keep the independence sentence in the derived answer lead without
using a matcher that rejected the Unicode apostrophe.

Co-authored-by: ben <0thernet@users.noreply.github.com>
@0thernet
0thernet marked this pull request as ready for review August 22, 2026 16:16
@0thernet
0thernet merged commit c3c689f into main Aug 22, 2026
4 checks passed
@0thernet
0thernet deleted the cursor/crawlable-history-markdown-05de branch August 22, 2026 16:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants