Know if your launch is ready before the internet judges it.
LaunchProof AI is an AI launch auditor for Product Hunt-style launches. Paste your product URL and a few details, and it returns a launch score, a positioning audit, a website/SEO audit, ready-to-paste Product Hunt copy, a Vercel-ready deployment checklist, a social launch kit, an investor pitch angle, and a final action checklist — in about 15 seconds.
Not affiliated with, endorsed by, or sponsored by Product Hunt or Vercel. "Product Hunt-style launches" and "Vercel-ready checklist" describe the use case, not a partnership.
- Launch readiness score (0–100) with label, summary, strengths, critical issues, and quick wins
- Positioning audit — improved taglines + a rewritten description
- Website + SEO audit — based on your real page metadata (title, meta, Open Graph)
- Product Hunt kit — taglines, description, first maker comment, launch-day checklist
- Vercel-ready checklist — practical production checks (not official Vercel guidance)
- Social launch kit — X posts, a LinkedIn post, a community DM
- Investor angle — problem, solution, wedge, why-now, and a tight pitch
- Shareable score card + a real public share link (when Supabase is configured)
- Next.js (App Router) + TypeScript
- Tailwind CSS + shadcn-style UI + framer-motion animations + next-themes (dark/light)
- Vercel AI SDK (
ai) with Google Gemini 2.5 Flash (@ai-sdk/google) - Zod for structured, validated AI output
- Cheerio for server-side page metadata extraction
- Supabase for persistent reports + public share links (optional)
pnpm install
pnpm devOpen http://localhost:3000.
It works with zero configuration. With no environment variables set, the app runs in demo mode and returns a realistic sample audit (for a fictional product, "FormFlow AI"), so you can click through the entire product immediately.
Add the keys below to run real audits and enable real public share links.
Copy .env.example to .env.local and fill in what you have. Every key is optional —
missing keys just degrade gracefully to demo/local behavior.
| Variable | Scope | Purpose |
|---|---|---|
GOOGLE_GENERATIVE_AI_API_KEY |
server | Enables real Gemini audits. Without it → sample report. |
NEXT_PUBLIC_SUPABASE_URL |
public | Supabase project URL (persistence + share links). |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
public | Anon key — used only to read public reports. |
SUPABASE_SERVICE_ROLE_KEY |
server only | Used only in /api/audit to insert reports. Never expose to the client. |
NEXT_PUBLIC_SITE_URL |
public | Optional. Canonical site URL for metadata (e.g. https://your-app.vercel.app). |
- Get a Gemini key: https://aistudio.google.com/app/apikey
- Get Supabase keys: Supabase Dashboard → Project Settings → API.
| Configured | Behavior |
|---|---|
| Nothing | Full demo: sample audit, local-only "share" preview. |
| Gemini only | Real audits; reports saved to this browser; /report/[slug] works on this device. |
| Gemini + Supabase | Real audits saved to Supabase; /report/[slug] and /share/[slug] work on any device. |
- Create a project at https://supabase.com.
- Open SQL Editor → New query, paste the contents of
supabase/migrations/0001_launch_reports.sql, and run it. This creates thelaunch_reportstable and a Row-Level-Security policy that lets anyone read public rows while only the server (service-role key) can write. - Copy your Project URL + anon key + service role key into your env vars.
The table:
| column | type | notes |
|---|---|---|
id |
uuid | primary key |
share_slug |
text | unique |
product_name / product_url |
text | |
overall_score |
integer | |
score_label / summary |
text | |
quick_wins |
jsonb | top quick wins |
report |
jsonb | full audit object |
is_public |
boolean | default true |
created_at |
timestamptz | default now() |
- Push this repo to GitHub.
- In Vercel: Add New… → Project → Import your repo (framework auto-detects Next.js).
- Add the environment variables above under Settings → Environment Variables.
- Deploy. The
/api/auditroute is configured withmaxDuration = 60for serverless.
You can deploy with no env vars (demo mode) and add Gemini/Supabase later — each redeploy picks up new variables.
-
Key: set
GOOGLE_GENERATIVE_AI_API_KEY(locally in.env.local, or in Vercel env). -
Model: edit the model id in
app/api/audit/route.ts:model: google("gemini-2.5-flash"), // ← change to another Gemini model id
To switch providers entirely (e.g. OpenAI/Anthropic), install that AI-SDK provider and swap the
model:argument — the Zod schema and the rest of the app stay the same.
app/
page.tsx # animated landing page
audit/page.tsx # audit form
report/[slug]/page.tsx # full report (Supabase → local → sample)
share/[slug]/page.tsx # public share score card
sample/page.tsx # full sample report (FormFlow AI)
api/audit/route.ts # server-only audit: scrape + Gemini + Supabase insert
components/ # UI, audit form, score gauge, report view, share card, …
lib/
audit-schema.ts # Zod schemas + inferred types
scrape-url.ts # Cheerio metadata extraction (timeout, safe)
prompts.ts # strict, anti-hallucination prompt builder
sample-report.ts # FormFlow AI demo report
supabase.ts / reports.ts # Supabase clients + server data access
share.ts # slugs, share text/links, "copy all assets"
supabase/migrations/ # launch_reports table SQL
- API keys are used only in the server route. The service-role key is never sent to the browser.
- Scraping has an 8s timeout; if a page can't be read, the audit still runs from your inputs and says so.
- Built for makers. Good luck on launch day. 🚀
