UNAUTH'D

the dataroom they
didn't mean to publish.

Series — "the first AI social network," $5.1M pre-seed, founders on the Forbes 30 Under 30, CEO of Reddit on the cap table — shipped their public Twitter launch today. Their investor data room has been a public URL the entire time. Here's what they didn't intend to share.

TARGET: series.so EXPOSURE: series-dataroom-api.ws.coursebite.ai/api/dataroom AUTH: none — frontend gated only via localStorage FOUND: 2026-05-01 · PUBLIC LAUNCH: 2026-05-02
203
dataroom revisions in 4 days
####
literal placeholder values found
+16pp
D1 retention jump in one revision
$1
"blended CAC" claim (unverified)

tl;dr what we found

  • The full investor data room is JSON, public, no auth — only the dashboard frontend gates by localStorage.
  • 203 revisions in 4 days, edited in two human-paced bursts (≈3 min/edit) — not a live backend feed.
  • Demographics block had #### as a value in v100, replaced by 1,648 only by v175.
  • D1 retention jumped 71% → 87% between v100 and v125 with no cohort definition change.
  • Bonus: leaderboard.series.so leaks the MongoDB Atlas cluster name in plain text.

verdict not faked. but…

  • Structurally real: NSM definition (≥1 reply by Day 4), D-curve, cohort split — those are how an honest team measures.
  • Operationally a deck: placeholder values + 7-hour editing burst + final polish session = investor presentation as JSON, not backend mirror.
  • The shrinkage admission ("1.5M v1 agents → 42K real users") is more credible than the headline retention numbers, because founders inflate, not deflate.
  • Trust the structure. Verify the polish.

the smoking gun — revision diff

If the data room were a live backend mirror, the numbers would change smoothly with the underlying data. Instead, headline retention numbers jumped 16 points in one revision, demographics had literal hash placeholders, and the editing cadence is one revision every three minutes for seven hours straight. That's not a backend. That's a deck.

v1
Apr 24, 22:02 UTC — skeleton created. No retention numbers yet. draft
v50
D1 71.0% · D7 61.3% · D30 57.2%. 13,988 total users. Onboarding 76.7%.
v75
User count jumps to 42K (3× in one rev). DAU 326, WAU 1,648, MAU 5,076. data-source switch?
v100
"Founders connect on Series weekly" value: #### · "Demographics" value: ## are active founders
v125
D1 retention: 71% → 87.1% · D7: 61% → 78.9% · D30: 57% → 62%. Cohort definition string identical before and after. SMOKING GUN
v150
"3.75M total messages" appears for the first time. "313% best-month MoM" first appears. "$1 blended CAC" first appears.
v175
Network effect numbers added: 12 contacts/person, top 5% hold 36.1%. Reciprocity Rate reappears at 49.4%. #### placeholders finally filled with real values.
v200
Apr 28, 23:46 UTC — final polish. Same numbers as v175.
v203
Apr 28, 23:53 UTC — published. End of editing burst. released

edit cadence — does this look like a backend to you?

# 203 revisions over 97.8 hours
# Average gap between revisions: 1735 seconds (~29 minutes)
# But that average is a lie — it hides two human bursts:

Apr 24 22:02  v1     // skeleton created
                     ⋯ 53-hour pause ⋯
Apr 27 03:29  v21
Apr 27 04:32  v41    // 1 hour later, 20 revisions
Apr 27 05:58  v61    // every ~3 min
Apr 27 07:16  v81
Apr 27 07:56  v101   // 7-hour editing burst
Apr 27 08:30  v121
Apr 27 09:51  v141
Apr 27 10:34  v161   // burst ends
                     ⋯ 36-hour pause ⋯
Apr 28 22:25  v181   // final polish session
Apr 28 23:46  v201   // 90 minutes
Apr 28 23:53  v203   // PUBLISHED — board meeting Apr 29?

# Real backends do not produce this cadence.
# Real humans editing a deck in Notion produce this cadence.

the actual exposure

$ curl -sSL https://series-dataroom-api.ws.coursebite.ai/api/dataroom | jq
{
  "page": "main",
  "data": [
    {
      "title": "Retention",
      "metrics": [
        {
          "title": "Retention (All Time)",
          "value": "62%",
          "description": "D30 Retention",
          "expandedData": [
            { "label": "D1 Retention", "value": "87.1%" },
            { "label": "D7 Retention", "value": "78.9%" },
            { "label": "D14 Retention", "value": "71.3%" },
            { "label": "D30 Retention", "value": "62%" },
            { "label": "D60 Retention", "value": "45.4%" }
          ]
        }
      ]
    },
    // ... 11 more sections ...
    {
      "title": "Reactivation",
      "metrics": [{
        "title": "Reactivation / Migrations",
        "insight": "Migration 1: From 1.5M deployed agents (v1
          unique and dupe accounts included, messy scrambled data)
          → 42K users today. Highlights viral capacity in the past
          that we expect to sustain into the future not that infra
          is scalable/on-prem"
      }]
    }
  ]
}

$ curl -sSL https://leaderboard.series.so/api/leaderboard
{
  "error": "querySrv ENOTFOUND _mongodb._tcp.seriesmain.ieqlr6c.mongodb.net"
}
// ↑ leaks Atlas cluster name + shard ID. Production page broken.

frontend "auth"

The dashboard at metrics.series.so gates access via a series_metrics_viewer_auth localStorage flag. Set it in DevTools and you're "in." But that's just window dressing — the API has no auth at all.

the parent host

The API hosts on coursebite.ai, which 404s on the root and has zero web search results. Looks like a personal / internal-only host repurposed as a "data room" backend. Not a vendor.

their own NDA

The Tech Stack Highlights section of the doc that anyone can curl says "Algorithm Service: Documentation available under NDA". The NDA disclaimer is inside the document that's currently world-readable.

so… is it faked?

numbers we'd trust

  • 42K total users
  • 1.5M v1 deployed agents (with dupes)
  • 27,173 LinkedIn followers
  • The Twilio/AWS migration crash story
  • Leaderboard backend currently broken

numbers we'd question

  • D1 87.1% / D7 78.9% (the v100→v125 jump)
  • 313% best-month MoM growth
  • $1 blended CAC
  • Exact 3,753,765 message count
  • "95% are founders or 'future'preneurs"