Skip to content

2 cases built from this template

Same prompt, different [VARIABLES]. Click one to preview it above.

About this template

This is a twelve-slide investor pitch built as a website instead of a slide file. Each slide fills the screen, and you move through the deck with the arrow keys, space, the mouse wheel, a swipe on a phone or the dot rail on the right edge. Every slide has its own link, so you can send an investor straight to the traction or market slide. The slides follow the usual seed order: title, problem, solution, product, market size, business model, traction, competition, go-to-market, team, financials and the ask, then a closing contact slide. The look is an editorial dark deck: near-black slides, warm off-white type, one electric blue accent, large serif numerals, thin rules and open space. Charts are drawn in plain SVG and play when their slide opens. The market circles grow one inside the next, the revenue line draws itself, bars rise and headline numbers count up. A thin progress bar and a slide counter move with you, and pressing O opens a grid of all twelve slides. Press P and a presenter window opens with the current and next slide, speaker notes, a timer you can pause and reset, and a clock. It stays in step with the audience window with no server. Printing gives one landscape slide per page on a light background with every chart in its final state, ready to save as a PDF for a data room. It suits founders preparing a seed or pre-seed round, accelerator cohorts and developer advocates who give talks. To make it yours, change the brand, product, audience, round size and contact email, then rewrite the slide copy, chart data and speaker notes in the single content file. The default company is an invented freight-audit startup, and every figure is labeled as illustrative sample data.

The template prompt

The live demo was built from exactly this text — nothing added. The other cases only change the values of the [VARIABLES].

# Startup Pitch Deck Website

Build this website exactly as described below. Replace the [VARIABLES] with your own values; keep everything else.

## Brief
A 12-slide investor pitch deck built as a single-page website for [BRAND], an invented seed-stage startup offering [PRODUCT]. Full-screen slides move with arrow keys, space, Page Up/Down, the mouse wheel, touch swipes and a dot rail; every slide has its own hash link (#/1 to #/12). Market, traction, business model and financial charts are hand-drawn SVG that animate when their slide opens. Pressing P opens a presenter window with current and next slide, speaker notes, a timer and a clock that stays in sync with the audience window through BroadcastChannel. Pressing O shows an overview grid. Printing outputs one landscape slide per page on a light theme with charts in their final state.

- Audience: Investors receiving the deck link before or after a meeting, on a laptop or a phone; the founder presenting it live on a second screen. The company sells to [AUDIENCE].
- Goal: Let a founder send one link that opens on any slide, reads well on a phone, presents cleanly with notes and a timer, and prints to a tidy PDF for a data room, so that investors understand the opportunity and reply to [CONTACT_EMAIL] about the [ROUND].
- Tone: Calm, confident and specific, like a well-rehearsed seed pitch: short declarative headlines, concrete numbers, no buzzwords or exclamation marks. Editorial dark styling with generous whitespace and one electric accent.

## Stack
- Framework: Vite 5 + React 18 + TypeScript
- Styling: Tailwind CSS 3.4
- Libraries: react, react-dom 18 (MIT), vite 5, @vitejs/plugin-react (MIT), typescript (Apache-2.0), tailwindcss 3.4, postcss, autoprefixer (MIT), @tailwindcss/container-queries (MIT), motion (motion.dev, import from motion/react) (MIT), lucide-react (ISC), @fontsource/instrument-serif (OFL-1.1), @fontsource-variable/inter (OFL-1.1), @fontsource-variable/jetbrains-mono (OFL-1.1)
- Build: `npm run build` → static files in `dist/`. No backend, no server code, no external APIs.
- Setup:
  - Scaffold with Vite's react-ts template; package.json scripts: dev = vite, build = tsc -b && vite build, preview = vite preview.
  - vite.config.ts: base './', build.sourcemap false, build.outDir 'dist', no public/src copying.
  - tailwind.config.ts: content ['./index.html', './src/**/*.{ts,tsx}'], plugins [require('@tailwindcss/container-queries')], extend colors from CSS variables (ink, surface, raised, rule, paper, muted, faint, accent, accent-deep) and fontFamily display 'Instrument Serif', sans 'Inter Variable', mono 'JetBrains Mono Variable'.
  - Define every color as a CSS variable on :root in src/styles/globals.css (dark values) and override them in @media print (light values) inside src/styles/print.css.
  - Import the three Fontsource packages once in src/main.tsx (@fontsource/instrument-serif/400.css and 400-italic.css, @fontsource-variable/inter, @fontsource-variable/jetbrains-mono).
  - Keep all deck copy, chart data, speaker notes and per-slide target times in one file, src/content/deck.ts, exporting the variable values (brand, product, audience, round, contactEmail) and an array of 12 slide objects { id, label, notes, targetSeconds, ...slide-specific data }. Slide components only read from it.
  - Folder layout: src/slides/Slide01Title.tsx … Slide12Closing.tsx, src/components (Chrome, DotRail, Toolbar, Overview, Thumbnail, CountUp, Presenter), src/lib (useDeckNavigation.ts, useHashRoute.ts, sync.ts), src/styles (globals.css, print.css).
  - Every slide component takes { active: boolean, isStatic: boolean } props: active triggers its enter animations, isStatic renders the final state with no motion (used for thumbnails, print and reduced motion).
  - Write a CountUp component that animates a number from 0 to its target with Motion's animate() when active, keeps the original string's prefix, suffix and decimals ('$9.6B', '7.8%', '$392K'), and renders the final string when isStatic.
  - Charts are hand-written SVG components with viewBox coordinates; put any HTML text labels in an absolutely positioned overlay so text never stretches.
  - Read prefers-reduced-motion with Motion's useReducedMotion and pass isStatic-like behavior: slide transitions become instant cuts and charts render fully drawn.
  - Create ASSETS.md at the project root listing the fonts and icon set with package name, source URL and license.

## Variables
- [BRAND] — Startup name (default: "Ladingly"). Invented company name shown as the wordmark, in the title tag and footer.
- [PRODUCT] — One-line product description (default: "Freight invoice auditing that catches carrier overbilling before you pay"). Used as the title-slide subhead; the slide copy and chart data are rewritten around it.
- [AUDIENCE] — Target customers (default: "mid-market shippers spending $2M to $50M a year on freight"). Lowercase phrase that follows 'For' on the title slide and 'Built for' on the solution slide.
- [ROUND] — Round being raised (default: "$3.2M seed"). Amount and stage, shown on the title, ask and closing slides.
- [CONTACT_EMAIL] — Founder contact email (default: "[email protected]"). Shown as a mailto link on the closing slide; keep an .example domain for demos.
- [CREDIT] — keep a small "Template by VibeFather" link to https://vibefather.ai/t/startup-pitch-deck-website in the footer (default: yes; delete this line to remove it)

The copy under Pages & Sections is written for the default values. If your values differ, rewrite every headline, paragraph, label and image for them — same length, tone and structure. Layout, colors, type and motion stay as described.
Keep all copy, image paths and links in one content file (for example `src/content.ts`), keyed by section, so the content can be swapped later without touching components.

Pro template. The design, sections, motion and assets parts of this prompt are for Pro members. The live demo and DESIGN.md stay free.

Join Pro early access →

DESIGN.md

The design system on its own — colors, type, spacing and motion. Apply this look to a project you already have.

---
name: "Startup Pitch Deck Website"
colors:
  ink: "#0B0B0C"
  surface: "#111113"
  raised: "#18181B"
  rule: "#2A2A2E"
  paper: "#F2EFE8"
  muted: "#8E8B85"
  faint: "#5C5A56"
  accent: "#3E6BFF"
  accent_deep: "#16224F"
  overtime: "#E5484D"
typography:
  display_wordmark_slide_headlines_big_numerals: { family: "Instrument Serif", weights: [400] }
  text_body_copy_card_titles_buttons: { family: "Inter", weights: [400, 500, 600] }
  mono_eyebrows_counter_chart_labels_metrics_footnotes: { family: "JetBrains Mono", weights: [400, 500] }
spacing: "8px base unit. Slide padding 64px 88px 80px from 768px of slide width, 24px 20px 72px below. 12-column grid with 32px gaps, max content width 1440px. Vertical rhythm inside slides: 16px between eyebrow and headline, 28px headline to body, 48px body to charts or cards. Chrome sits 20–28px from the viewport edges."
radius: "Mostly square and editorial: 6px tooltips, 8px icon buttons, 10px thumbnails, 12px cards, 14px product window, 999px pills and dots."
---

# Startup Pitch Deck Website — Design System

Apply this design system to an existing project. It describes the look and feel only; for the full site, use prompt.md.

## Colors
- **Ink** `#0B0B0C` — Page and slide background (print: #FFFFFF)
- **Surface** `#111113` — Overview and presenter panels
- **Raised** `#18181B` — Cards, product window, tooltips, chips (print: #F4F2EE)
- **Rule** `#2A2A2E` — Hairline rules, borders, axis lines (print: #DAD6CE)
- **Paper** `#F2EFE8` — Headlines and primary text (print: #0B0B0C)
- **Muted** `#8E8B85` — Body copy, captions, labels (print: #55524C)
- **Faint** `#5C5A56` — Footnotes, axis tick labels
- **Accent** `#3E6BFF` — The single electric accent: progress bar, active dot, chart lines, SOM circle, highlighted words, focus rings
- **Accent Deep** `#16224F` — Accent-tinted fills behind highlights and the [BRAND] halo
- **Overtime** `#E5484D` — Presenter timer only, once elapsed time passes the 10:00 target

## Typography
- **Display: wordmark, slide headlines, big numerals** — Instrument Serif (OFL), weights 400. Self-host the font files.
- **Text: body copy, card titles, buttons** — Inter (OFL), weights 400/500/600. Self-host the font files.
- **Mono: eyebrows, counter, chart labels, metrics, footnotes** — JetBrains Mono (OFL), weights 400/500. Self-host the font files.

## Spacing & shape
- Spacing: 8px base unit. Slide padding 64px 88px 80px from 768px of slide width, 24px 20px 72px below. 12-column grid with 32px gaps, max content width 1440px. Vertical rhythm inside slides: 16px between eyebrow and headline, 28px headline to body, 48px body to charts or cards. Chrome sits 20–28px from the viewport edges.
- Radius: Mostly square and editorial: 6px tooltips, 8px icon buttons, 10px thumbnails, 12px cards, 14px product window, 999px pills and dots.

## Motion
- One easing for entrances everywhere: cubic-bezier(0.22, 1, 0.36, 1); chart line drawing uses cubic-bezier(0.65, 0, 0.35, 1).
- Slide change: outgoing fade 0.25s, incoming fade plus 24px travel in the navigation direction over 0.4s.
- Content reveal on slide activation: data-reveal blocks rise 18px and fade in over 0.5s with 0.07s stagger, 0.12s delay.
- Charts and count-up numbers play each time their slide becomes active and reset when it is left.
- Progress bar width animates with a spring (stiffness 260, damping 32); counter digits slide 10px on change.
- Wheel navigation is debounced: 60px accumulated delta per step, then a 900ms lock.
- prefers-reduced-motion: every transition becomes an instant cut and every chart renders in its final state; print does the same.

## Imagery
No photographs and no bitmap images. Everything visual is drawn in code: SVG charts (nested market circles, ARR line chart with area fill, revenue bars with a hatch pattern, stacked use-of-funds bar, 2×2 positioning matrix), a code-built product window with an invented invoice table, CSS line decorations on the title and closing slides, initials monograms for the team, and Lucide icons at stroke 1.5. Hatch fill and halos use the Accent color only.

## Tone
Calm, confident and specific, like a well-rehearsed seed pitch: short declarative headlines, concrete numbers, no buzzwords or exclamation marks. Editorial dark styling with generous whitespace and one electric accent.

---
— Prompt by VibeFather · https://vibefather.ai/t/startup-pitch-deck-website · CC BY-NC 4.0 (non-commercial; commercial use needs a VibeFather Pro license) · Request removal: https://vibefather.ai/takedown