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.

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.

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.
01connect
openOAuth into Notion and select the parent page where company backends should be created.
connect
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.
02generate
openGPT-structured company data becomes Notion databases, rows, routes, artifacts, and demo script.
generate
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.
03operate
openProduct views, form submissions, scope cuts, and new artifacts write back into Notion.
operate
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 working set a generated company arrives with.
A pulse moves through the live data sources.
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.
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, andonProductRuntimeEvent.
dashboard, startup flow, product routes, Stripe webhook
root pages, data sources, rows, product manifests
installation API, startup registry, billing mirror
encrypted OAuth installs, startup mappings, audit events
checkout, portal, subscription lifecycle
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.

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