·building·project·shipped

notion-vibestartup

A Notion Developer Platform Hackathon project: OAuth into a founder workspace, generate the company operating system, publish product routes, and write real runtime events back into Notion.

The acme launchroom Notion workspace

What It Is

notion-vibestartup turns a startup prompt into a working Notion-backed company system. A founder signs in, connects a Notion workspace through OAuth, chooses a parent page, describes the startup, and gets a generated company backend: root page, operating databases, product artifact, public product route, runtime writeback, and command-center actions.

The interesting part is that Notion is not a decorative export target. It is the canonical store. The Next.js app renders and mutates the workspace; Cloudflare D1 stores installation metadata, encrypted Notion tokens, startup mappings, audit events, and billing state; public product routes write visitor behavior back into the founder's Notion databases.

The live archive is at notion-vibestartup.vercel.app, and the code lives in JacobFV/notion-vibestartup-pro. The database-backed parts were kept online temporarily for the event, so the archive now opens with a notice explaining that signup, Notion sync, billing, and generated writebacks are no longer available.

Hackathon Context

This project was built for Notion's Developer Platform Hackathon, an in-person San Francisco event on May 16-17, 2026. The prompt from Notion was to build with the new Developer Platform: sync data sources into Notion, give agents tools, and trigger workflows without standing up a pile of infrastructure.

The core bet matched that platform direction: make Notion the operating substrate for a tiny startup, not just a place where a demo exports its notes afterward. A founder prompt creates the workspace, the app surface renders from that workspace, and runtime activity writes back into the same Notion backend.

Jacob Valdez and Tiffany Lan at the Notion Developer Platform Hackathon

I built the product during the weekend. Tiffany Lan was my teammate and helped present the project when I could not stay for the final presentation because I was also at the Embodied AI Hackathon building Chem-0. That overlap is part of the shape of the weekend: one project explored Notion as the backend for company/product memory, while Chem-0 explored event-grounded memory for physical lab work.

01

connect

open

OAuth into Notion and select the parent page where company backends should be created.

connect.tsx
1founder session
2Notion OAuth
3parent page

The app creates a signed OAuth state, sends the founder through Notion authorization, exchanges the code server-side, stores the installation, then asks which accessible page should receive generated company backends.

02

generate

open

GPT-structured company data becomes Notion databases, rows, routes, artifacts, and demo script.

generate.tsx
1structured JSON
212 data sources
3/p/acme/waitlist

The generator requests strict structured output, normalizes startup/product/tasks/decisions/risks/metrics/demo beats, creates the Notion root page, then seeds every data source with concrete rows.

03

operate

open

Product views, form submissions, scope cuts, and new artifacts write back into Notion.

operate.tsx
1runtime event
2customers + events
3scope + artifacts

The product runtime logs views and form submissions; the command center creates more artifacts and scope decisions. Each action becomes rows in Customers, Events, Artifacts, Scope, Metrics, or Decisions.

Backend Of Record

The generated workspace includes a global startup index and a root page per startup. Under that root page, the system creates typed Notion data sources for company state, products, artifacts, backend objects, customers/leads, events, roadmap, scope, tasks, decisions, risks, and metrics.

The data sources every generated company is seeded with

The working set a generated company arrives with.

A pulse moves through the live data sources.

created Notion schema
Company
target user · current bet · deadline
target userprop
current betprop
deadlineprop

canonical startup record

Products
kind · status · route
kindprop
statusprop
routeprop

public artifact registry

Artifacts
manifest JSON · notes · external URL
manifest JSONprop
notesprop
external URLprop

renderable product specs

Backend Objects
schema JSON · storage · data source id
schema JSONprop
storageprop
data source idprop

map of generated backend pieces

Customers / Leads
email · status · message
emailprop
statusprop
messageprop

runtime form submissions

Events
type · source · payload JSON
typeprop
sourceprop
payload JSONprop

views, forms, scope cuts, product actions

Roadmap
phase · UXR signal · evidence needed
phaseprop
UXR signalprop
evidence neededprop

research-aware build plan

Scope
keep/cut · priority · reason
keep/cutprop
priorityprop
reasonprop

deadline tradeoff surface

Tasks
status · priority · why
statusprop
priorityprop
whyprop

execution queue

Decisions
context · alternatives killed · reversible
contextprop
alternatives killedprop
reversibleprop

decision memory

Risks
severity · mitigation · status
severityprop
mitigationprop
statusprop

open risk register

Metrics
value · unit · source · period
valueprop
unitprop
sourceprop
periodprop

operating signal from product behavior

Product Routes

The first generated artifact can be a waitlist, landing page, mock app, API mock, Notion tool, external reference, or spec-only route. Renderable artifacts become public pages under /p/:startupSlug/:productSlug, backed by the generated manifest stored in Notion.

The generated /p/acme/waitlist route rendered from the Notion manifest

The generated /p/acme/waitlist route.

The product page alive with focus, caret, and input states.

That route also logs product views through POST /api/runtime/:startupSlug/:productSlug. If the artifact has a form CTA, submissions go through /api/runtime/:startupSlug/:productSlug/form and create both customer rows and event rows in Notion.

Runtime Writeback

The writeback loop is the project’s main proof. A visitor is not just tracked in app storage; the visitor becomes operating evidence in the founder’s workspace.

A new waitlist signup lands and the lead count flips from 128 to 129.

A runtime event streams down the wire and lands as a Notion row.

Platform Pieces

This is a real product stack, not only a demo renderer.

  • Auth: the web app relies on a platform user session and can proxy /api/me / /api/auth/* through the Cloudflare API.
  • Notion OAuth: users authorize a Notion workspace, then select an accessible parent page. OAuth state carries the post-connect destination.
  • Encrypted installation storage: D1 stores Notion installation records with AES-GCM encrypted access tokens, workspace IDs, bot IDs, selected parent pages, and last-used timestamps.
  • Startup registry: D1 maps startup slugs to users, installations, root pages, manifest JSON, and every generated Notion data-source ID so public product routes can find the correct workspace.
  • Billing: Stripe checkout, customer portal, signed webhooks, subscription mirroring, and plan definitions for hacker, founder, and studio tiers.
  • Audit trail: installation changes, startup registration, and billing upserts write audit events.
  • Optional Notion worker: separate Notion-native tools exist for generateCompanyBackendPlan, cutScopeForDeadline, and onProductRuntimeEvent.
Next.js

dashboard, startup flow, product routes, Stripe webhook

Notion REST

root pages, data sources, rows, product manifests

Cloudflare Worker

installation API, startup registry, billing mirror

D1

encrypted OAuth installs, startup mappings, audit events

Stripe

checkout, portal, subscription lifecycle

OpenAI Responses

structured startup and product artifact generation

Command Center

The startup dashboard is an operator console over the Notion backend. It shows product, lead, event, roadmap, scope, task, decision, risk, and metric rows; opens the root Notion page; creates additional product artifacts; and cuts scope against a deadline.

A row in the Notion decisions log with killed alternatives beside it

Decisions preserve alternatives killed, reversibility, and context.

The launchroom shifts between product and customer views.

Implementation Notes

The media in this entry is split intentionally. The short loops are retained as H.264 captures because the source Remotion scenes are motion-driven and MP4 has reliable autoplay support. Some static conceptual visuals were replaced by native MDX/HTML because their source scenes were rendered on a baked paper Stage; recreating those as markup makes them fit the page background without pretending the exported PNGs have alpha.

The next technical upgrade would be to add a reusable MDX media-grid or figure component to the portfolio reader, then re-export selected Remotion stills with transparent or theme-aware backgrounds. The app itself is already past the toy phase: it has OAuth installation state, encrypted token storage, structured generation, public product runtime APIs, Notion writeback, subscriptions, and a worker-shaped path toward Notion-native agent tools.

Repo: JacobFV/notion-vibestartup-pro. Archive: notion-vibestartup.vercel.app. Event: Notion Developer Platform Hackathon.

Neighborhood

Related

Before AI Can Do Chemistry, It Has to Touch the WorldBefore AI Can Do Chemis...Software Engineering After AgentsSoftware Engineering Af...Recursive Omnimodal Video Action ModelRecursive Omnimodal Vid...TensorCodeTensorCodeThe Tensor ComputerThe Tensor ComputerTrash SorterTrash Sorteryt2ctxyt2ctxThe Cortical CanvasThe Cortical CanvasLooped Attention in Video Diffusion TransformersLooped Attention in Vid...Differentiable Tensor Computers for End-to-End Program SynthesisDifferentiable Tensor C...The Shape of InquiryThe Shape of InquiryChem-0 LinkedIn reflectionChem-0 LinkedIn reflect...Chem-0 X threadChem-0 X threadComputatrumComputatrumThe Multi-Agent Network (aka: the MAN)The Multi-Agent Network...MPNetsMPNetsFull-Stack Artificial IntelligenceFull-Stack Artificial I...Full Stack Artificial IntelligenceFull Stack Artificial Intel...Teaching Computers to Use ComputersTeaching Computers to Use C...Chem-0Chem-0notion-vibestartup