Unwrapped

Legacy SaaS dossier · notion

Notion

Notion

CategoryWiki / docs / loose tasksNotion Business + Notion AISite ↗

A markdown wiki with a database overlay, sold per-seat with an AI add-on that's a Claude call you're already paying for.

01 · Data

Data the SaaS sits on

Markdown + Git
Markdown + GitYours
Okta / Google SSO
Okta / Google SSOYours
S3 (attachments)
S3 (attachments)Yours

Internal Build Score

0.78

Feasibility of a useful internal substitute for the actually-used 20% of this SaaS, built with Claude and your own data layer.

IBS = 0.25·U + 0.25·C + 0.20·D + 0.15·I + 0.15·Mthis record · 78%
  • U

    User adoption gap

    weight 0.250.70

    How much licensed surface area sits idle.

  • C

    Core simplicity

    weight 0.250.90

    How small the actually-used 20% is when re-implemented honestly.

  • D

    Data portability

    weight 0.200.78

    How clean the exit is, exports, formats, audit lock.

  • I

    Integration burden (inverse)

    weight 0.150.70

    How few external systems must keep working through the SaaS.

  • M

    Moat erosion

    weight 0.150.82

    How much the original differentiator has been commoditised by LLMs + cheap infra.

Editorial heuristic. Not investment advice, not a procurement recommendation.

03 · Feature usage

Commonly used vs. rarely touched

Commonly used

05

  • Hierarchical pages with blocks
  • Linked databases for projects + docs
  • Comment threads + mentions
  • Search across the workspace
  • Per-page permissions

Rarely touched

06

  • Notion AI sold as a separate per-seat upsell over the LLM you already pay for
  • Forms / Mail / Calendar, acquisitions stapled to the page tree
  • Sites / Public publishing, a half-built CMS
  • Automations every team rebuilds three times before giving up
  • Whiteboards, charts, sub-databases, formulas, depth no one finishes learning
  • API rate limits that punish anyone actually building on it

Internal build

Build it yourself

01 · Stack & flow

Postgres
Postgres
Next.js
Next.js
Claude API
Claude API
Markdown + Git
Markdown + Git

Internal build map

Data in

Markdown repo
Directory ACL
Attachments

Agent layer

Tsvector index
/ask agent

Logic

scope to ACL
retrieve passages
cite page + heading
@-mention notify

Outputs

Rendered page
/ask answer
Comment thread
Build time
4 weeks
Run cost
$2/seat·mo
vs. SaaS
$24K / yr

Build outline

  1. Markdown repo per workspace, Git-backed
  2. Next.js renderer with Postgres tsvector search
  3. Claude /ask endpoint over the indexed corpus
  4. Per-folder permissions via directory ACL
  5. Comment + mention service in ~200 LOC

02 · Claude prompt

First, map what you actually use (optional)
Step 1 · usage audit prompt

// Notion workspace audit, scope the rebuild Input: the page tree with per-page last-edited + view counts, the database list with row counts, and the connected integrations. ## Do 1. Mark each top-level space as active (edited in 90d), archive (read-only but still referenced), or dead. 2. List databases that hold real structured data vs. abandoned views. 3. Flag any automation / integration with an external side effect. ## Output JSON: { keep_spaces[], keep_databases[], drop[], evidence }.

Step 2 · rebuild the core

// Workspace /ask, markdown wiki + ACL You answer questions using ONLY the pages the requester has read access to. Permissions come from the directory ACL passed in the request; you do not infer access from page content. ## Citation - Every claim must be tied to a page title + section heading. - If two pages disagree, list both with their last-edited dates. - If a needed page exists but the user lacks access, say so by title; do not paraphrase its contents. ## Style - Tight answer first, then the bullet of sources. - ≤ 120 words unless the user explicitly asks "long". - No filler ("Great question," "Here's what I found," etc.). ## Refusal If you don't have the context to answer truthfully, say so plainly. Never fabricate a page reference.

03 · Result

What's our incident comms SLA?
runbooks/on-call/incident-comms.md

30 min internal Slack, 4 h external status page, Runbooks › On-call › Incident comms