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 · Build it

Paste into Cursor or Claude Code in an empty repo. It scaffolds the working core, with the AI step embedded.

Build prompt · Notion

// Build: internal wiki (Notion replacement) # Paste into Cursor or Claude Code in an empty repo. Build an internal wiki covering the part of Notion we use: nested pages, linked databases, search, comments, and an /ask over your own docs. Ship a working v1. Stack: Next.js + Postgres (Drizzle, tsvector search) + Markdown in Git + Okta/Google SSO + Claude. Build, in order: 1. Pages as Markdown in a Git-backed repo; render with a tree nav. 2. Full-text search via Postgres tsvector. 3. Per-folder permissions from directory (Okta) groups. 4. Comments + @-mentions. 5. AI /ask over the indexed corpus, scoped to the user's access: """ Answer using ONLY pages the requester can read (ACL passed in). Cite every claim with page title + heading. If two pages disagree, show both with last-edited dates. <=120 words, answer first then sources, no filler. If you lack access or context, say so; never fabricate a reference. """ Skip: the per-seat AI tier, Sites/CMS, the half-finished automations. Done when: a teammate searches the wiki and asks a question that answers with citations, respecting their access.

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