Unwrapped

Legacy SaaS dossier · typeform

Typeform

Typeform

CategoryForms / surveysTypeform BusinessSite ↗

A form renderer and a response table, with a per-response cap that turns a successful survey into an upsell.

01 · Data

Data the SaaS sits on

Responses
ResponsesYours
Site embed
Site embedYours
Slack / Sheets
Slack / SheetsAPI

Internal Build Score

0.86

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 · 86%
  • U

    User adoption gap

    weight 0.250.70

    How much licensed surface area sits idle.

  • C

    Core simplicity

    weight 0.250.95

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

  • D

    Data portability

    weight 0.200.90

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

  • I

    Integration burden (inverse)

    weight 0.150.90

    How few external systems must keep working through the SaaS.

  • M

    Moat erosion

    weight 0.150.90

    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

  • One-question-per-screen form
  • Logic jumps and branching
  • Response collection + storage
  • Basic completion analytics
  • Embed and shareable link

Rarely touched

06

  • Per-response caps per pricing tier
  • VideoAsk sold as its own product
  • Payment fields and brand kit upsells
  • AI form generation
  • Integrations gated to the top tier
  • Advanced analytics dashboards

Internal build

Build it yourself

01 · Stack & flow

Next.js form
Next.js form
Postgres
Postgres
Claude API
Claude API

Internal build map

Data in

Form schema
Responses

Agent layer

Response themer

Logic

render questions
apply jumps
store response
cluster open text

Outputs

Response row
Theme report
Build time
2 weeks
Run cost
$0.5/seat·mo
vs. SaaS
$12K / yr

Build outline

  1. One-question-per-screen form in Next.js
  2. Logic jumps from a JSON schema
  3. Responses to Postgres, no caps
  4. Slack / Sheets webhook on submit
  5. Claude themes the open-text answers

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 · Typeform

// Build: internal forms + surveys (Typeform replacement) # Paste into Cursor or Claude Code in an empty repo. Build an internal form tool covering the part of Typeform we use: one-question-per-screen forms, logic jumps, response storage, and a themed summary. Ship a working v1. Stack: Next.js + Postgres (Drizzle). Data model: - forms(id, title, schema jsonb) // questions + logic jumps - responses(id, form_id, answers jsonb, created_at) Build, in order: 1. A form renderer: one question per screen, progress, keyboard nav. 2. Logic jumps driven by the schema (answer -> next question). 3. Store responses; webhook to Slack/Sheets on submit. 4. AI assist, theme the open-text answers. Call Claude: """ Given up to 500 open-text answers and the question, return JSON { themes:[{name(<=4 words), count, quote(verbatim)}], spam_count, total }. Do not paraphrase quotes. Do not merge distinct themes to hit a count. """ Skip: per-response caps, VideoAsk, payment fields, AI form generation. Done when: you can build a branching form, collect responses, and get a themed summary of the open-text answers.

03 · Result

Theme 320 answers to 'What nearly stopped you signing up?'
form:signup-survey

6 themes, top: 'Unclear pricing' (88) · spam: 4 · total: 320