Favicon · social preview · SEO meta · custom domain · robots + sitemap · Search Console · Lighthouse · pre-launch gate · post-launch smoke test. By tonight your app is live at your custom domain · with a proper WhatsApp preview · and Google can find it.
Why: Every deploy prompt below needs to know your product name, brand tokens (colors + fonts), target domain, and what's already deployed. Read it once · reference it everywhere. Zero re-typing after this.
# ROLE You are my launch engineer for Day 6 of the 10-Day Sprint. You have full access to my Cowork Project (Foundation Doc, PRD, brand tokens) and chat memory. Do NOT ask me for anything you can infer. # READ 1 · Cowork Project — Foundation Doc · PRD · brand tokens · Project-Plan.md 2 · Chat memory — everything from Day 1–5 3 · Lovable app — current preview URL · current title tag · any existing meta 4 · GitHub MCP — repo · confirm public/ folder exists (favicon lives here) 5 · Domain intent — do I have a domain purchased yet? which registrar? # OUTPUT · 10-line brief · nothing more 1 · Product name (exact casing) + 1-line tagline 2 · Target domain (e.g. myapp.com · or "not purchased yet") 3 · Brand colors: primary hex · accent hex · background hex (from Foundation Doc) 4 · Brand fonts: heading · body (from Foundation Doc) 5 · Logo asset: URL or "generate one via P01" 6 · Persona / audience: 1 line 7 · Currently deployed at: URL (Lovable preview or "not deployed yet") 8 · Existing title tag: what does <title> currently say? 9 · Existing favicon: default Lovable · or custom (from public/favicon.ico)? 10 · Biggest launch risk: your best guess # CONFIRM · one question only End with: "Is this brief correct? Any 1-line fix?" Wait for my "yes" · then P01–P08 all reference "the context you have." # SELF-CHECK - Did I actually query GitHub MCP for the public/ folder? - Did I read Foundation Doc for brand tokens · or guess? - Did I keep it to 10 lines · or bloat?
Why: Default Lovable favicon = amateur signal. Custom favicon = "this is a real product." Cowork generates the icons from your brand · Lovable installs them · every browser tab · phone home screen · and Google search result now shows YOUR mark.
# ROLE · WORLD-CLASS PANEL - Aaron Draplin (Field Notes) — minimal marks that read at 16px - Michael Bierut (Pentagram) — icon reduction to its atomic form - Sara Soueidan — SVG standards + web icon best practices # CONTEXT Use primed context from P00 (product name · brand colors · logo direction). Stack: Lovable + GitHub + Cowork. No terminal. # GOAL Design + install a full favicon set in 3 sizes + Apple touch icon + Android icons + Web App Manifest. All from ONE source SVG · matching my brand tokens. # YOUR PROCESS · 4 stages STAGE 1 · DESIGN (3 min) Ask ONE question: "One-letter monogram · a shape · or my existing logo mark?" Then generate ONE 512×512 SVG: - Solid background color = my brand primary - Foreground = my brand accent OR white - Padding: 15% (icon reads clearly at 16×16) - Simple enough to read at browser-tab size (Draplin: "if it doesn't work at 16px · it doesn't work") Show me the SVG as inline preview in chat before proceeding. STOP · ask "Approve this favicon or want variations?" STAGE 2 · EXPORT (2 min · via realfavicongenerator.net) Once approved · walk me through: 1 · Open realfavicongenerator.net in a new tab 2 · Upload the approved SVG 3 · Customize: · iOS: solid background = my brand primary · Android: matching theme color · Desktop browser: transparent 4 · Click "Generate your Favicons and HTML code" 5 · Download the ZIP · you'll get: · favicon.ico (multi-size: 16 · 32 · 48) · apple-touch-icon.png (180×180) · android-chrome-192x192.png · android-chrome-512x512.png · site.webmanifest STAGE 3 · INSTALL (via Lovable · 2 min) Produce a paste-ready Lovable chat prompt: "Add these favicon files to public/ folder: - favicon.ico - apple-touch-icon.png - android-chrome-192x192.png - android-chrome-512x512.png - site.webmanifest Then update index.html <head> with: <link rel=\"icon\" href=\"/favicon.ico\" sizes=\"any\"> <link rel=\"icon\" href=\"/icon.svg\" type=\"image/svg+xml\"> <link rel=\"apple-touch-icon\" href=\"/apple-touch-icon.png\"> <link rel=\"manifest\" href=\"/site.webmanifest\"> <meta name=\"theme-color\" content=\"[my brand primary hex]\">" STAGE 4 · VERIFY (1 min) - Open deployed Lovable URL in a fresh incognito window - Check browser tab shows the icon (not blue Lovable default) - On iPhone: Add to Home Screen · confirm icon looks right - Run through realfavicongenerator.net/favicon_checker · paste URL - Confirm all sizes present · no warnings # DELIVERABLE - 1 approved source SVG (saved to Cowork Project for reuse) - 5 favicon files installed to public/ - HTML <head> updated - Verified on desktop tab + phone home screen # QUALITY BAR - Draplin: does it read at 16×16 · in a busy tab strip? - Bierut: could a stranger describe the shape after 2 sec? - Soueidan: is the SVG source clean + accessible (title element)?
Why: When someone pastes your URL in WhatsApp · LinkedIn · X · iMessage · Slack — an image renders. Default = blank ugly card. Custom OG image = a mini billboard for your product. This prompt designs it + installs it + tests it renders correctly across all 4 major platforms.
# ROLE · WORLD-CLASS PANEL - Jason Fried (Basecamp) — anti-generic; make the OG image sell - Rauno Freiberg (ex-Vercel design) — social-first product design - Sara Soueidan — OG + Twitter card standards + accessibility # CONTEXT Use primed P00 (product · tagline · brand colors · fonts · favicon SVG from P01). Stack: Lovable + GitHub + Cowork. # GOAL Ship a 1200×630 Open Graph image + Twitter card meta · installed · tested to render correctly on WhatsApp · LinkedIn · X · iMessage · Slack. # YOUR PROCESS · 4 stages STAGE 1 · DESIGN (4 min) Ask ONE question: "Does the OG image show (a) your app UI screenshot · (b) a bold typographic layout with your tagline · (c) an illustration/graphic with your product name — which fits your brand best?" Based on my answer · generate the OG image spec: Dimensions: 1200×630 (Facebook + LinkedIn + WhatsApp + iMessage standard) Twitter version: same dimensions work for "large image" card Safe zone: keep critical content within 1080×540 center (some crops) File size: < 300KB (fast preview loading · esp. WhatsApp mobile) Format: PNG (JPG has artifacts on typography · WebP not universally supported) Content: - Product name (Instrument Serif or my brand heading font · 72–96pt) - Tagline (1 line max · 32–40pt · my brand body font) - Small logo mark bottom-left or top-left - Brand colors · high contrast · WCAG AA (4.5:1) - No stock photos · no generic gradient boxes Show me the image · then ask "Approve or want variations?" STAGE 2 · EXPORT + PLACE (2 min) Once approved · save as public/og-image.png (main) + public/twitter-image.png (same file or 1200×600 variant if different content wanted). STAGE 3 · INSTALL META TAGS (via Lovable · 2 min) Paste-ready Lovable prompt: "Add these meta tags to index.html <head>: <!-- Open Graph (Facebook, LinkedIn, WhatsApp, iMessage) --> <meta property=\"og:title\" content=\"[Product name] — [tagline]\"> <meta property=\"og:description\" content=\"[1-line description]\"> <meta property=\"og:image\" content=\"https://[my-domain]/og-image.png\"> <meta property=\"og:image:width\" content=\"1200\"> <meta property=\"og:image:height\" content=\"630\"> <meta property=\"og:image:alt\" content=\"[describe image for a11y]\"> <meta property=\"og:url\" content=\"https://[my-domain]\"> <meta property=\"og:type\" content=\"website\"> <meta property=\"og:site_name\" content=\"[Product name]\"> <!-- Twitter Card --> <meta name=\"twitter:card\" content=\"summary_large_image\"> <meta name=\"twitter:title\" content=\"[Product name] — [tagline]\"> <meta name=\"twitter:description\" content=\"[1-line description]\"> <meta name=\"twitter:image\" content=\"https://[my-domain]/og-image.png\"> <meta name=\"twitter:image:alt\" content=\"[describe image]\">" Notes: - Absolute URL required · not relative (WhatsApp is strict) - alt text required for a11y STAGE 4 · TEST across 4 platforms (2 min) Guide me to test: 1 · opengraph.xyz/url/https://[my-domain] — instant preview 2 · Facebook Sharing Debugger — developers.facebook.com/tools/debug · scrapes fresh · confirm no warnings 3 · LinkedIn Post Inspector — linkedin.com/post-inspector 4 · Send URL to yourself on WhatsApp · confirm preview loads within 2 sec # DELIVERABLE - 1200×630 og-image.png installed · < 300KB - Full OG + Twitter meta tags in index.html - Verified rendering on WhatsApp · LinkedIn · Facebook Debugger - Passing accessibility (alt text present) # QUALITY BAR - Fried: would a stranger stop scrolling because of THIS image? - Freiberg: is the image doing 90% of the persuasion · or is it text-heavy? - Soueidan: alt text present + descriptive · not "og image"?
Why: Missing title tag = "Untitled" on Google. Missing meta description = Google auto-generates a bad one. Missing schema = no rich snippets. This prompt writes all of it · tuned to YOUR keywords · installed via Lovable in 5 min.
# ROLE · WORLD-CLASS PANEL - Aleyda Solis — technical SEO for indie + startup apps - John Mueller (Google Search Advocate) — what actually moves rankings - Marie Haynes — schema.org · E-E-A-T · rich snippets # CONTEXT Use primed P00 (product · tagline · persona · target keywords in Foundation Doc). Stack: Lovable + GitHub + Cowork. # GOAL Write all SEO meta tags for my landing + top 5 routes · install via Lovable · verify via Google's tools. # YOUR PROCESS · 4 stages STAGE 1 · KEYWORD ANCHOR (2 min) Ask ONE question: "What 3-5 phrases would your ideal user type into Google to find something like your app? (Steal from Foundation Doc if answered before.)" Then propose: - Primary keyword: 1 short phrase (2-4 words) - Secondary keywords: 2-3 longer variants - Anti-keywords: what NOT to appear for (avoid confusion) STAGE 2 · WRITE META (5 min) For each of my top 5 routes (landing + 4 others): Title tag: 50-60 chars · primary keyword in first 30 chars · brand name last Format: "[Primary benefit] — [Product name]" Example: "Ship your MVP in 10 days — Build Sprint" Meta description: 140-160 chars · benefit + differentiator + soft CTA Format: "[What it does]. [How it's different]. [Soft CTA]." Example: "Vibe-code your way from idea to first paying user in 10 days at Network School. Cohort of 30. Live workshops daily. Apply now." Canonical URL: absolute · confirm no trailing slash inconsistency Lang: <html lang=\"en\"> (or my locale) STAGE 3 · SCHEMA.ORG · JSON-LD (2 min) Add structured data via Lovable prompt · type based on my app: - SaaS app → SoftwareApplication - Course / info product → Course - Marketplace → Product + Offer - Local biz → LocalBusiness Example JSON-LD for SoftwareApplication: <script type=\"application/ld+json\"> { \"@context\": \"https://schema.org\", \"@type\": \"SoftwareApplication\", \"name\": \"[Product name]\", \"applicationCategory\": \"[BusinessApplication / etc]\", \"operatingSystem\": \"Web\", \"offers\": { \"@type\": \"Offer\", \"price\": \"[X]\", \"priceCurrency\": \"USD\" } } </script> STAGE 4 · INSTALL VIA LOVABLE + VERIFY (1 min) Produce a single Lovable chat prompt containing all 5 route meta blocks + the JSON-LD. Ask Lovable to add them cleanly · not duplicate any existing tags. Verify via: 1 · Google Rich Results Test: search.google.com/test/rich-results 2 · Paste my URL · confirm JSON-LD parses · no errors 3 · metatags.io · preview all cards at once # DELIVERABLE - Title tag + meta description for 5 routes - Canonical URLs set - HTML lang attribute set - JSON-LD schema installed and validated - No duplicate meta tags (Lovable can generate them) # QUALITY BAR - Solis: are my keywords realistic for a 30-user MVP · or am I chasing \"AI journal\" (impossible in month 1)? - Mueller: is my meta description written for a HUMAN · not a bot? - Haynes: does my JSON-LD show E-E-A-T (experience · expertise · authority · trust)?
Why: lovable.app/xyz = not a business. yourapp.com = credibility · trust · shareability. This prompt walks you through purchasing a domain (if needed) · connecting it to Lovable · configuring DNS records · verifying TLS (HTTPS) · and setting up www→apex (or reverse) so all URL variants work.
# ROLE · WORLD-CLASS PANEL - Guillermo Rauch — modern DNS + custom domain UX - Julia Evans (Wizard Zines) — DNS + TLS explained clearly - Troy Hunt (HIBP) — HTTPS + HSTS · security posture # CONTEXT Use primed P00 (target domain from context). Stack: Lovable native domain connection · no manual server config. If I haven't purchased a domain yet · guide me. # GOAL Get me from "lovable.app/xyz" to "https://[my-domain]" with valid TLS · www → apex redirect (or reverse) · verified. # YOUR PROCESS · 5 stages STAGE 1 · DOMAIN PURCHASE (5 min · skip if I have one) Ask ONE question: "Do you have a domain already? If yes · which registrar? If no · I recommend: (a) Cloudflare Registrar (at-cost pricing · best DNS UX) (b) Namecheap (cheap · simple) (c) Porkbun (cheapest first year · quirky UX) Which do you want to use?" If purchasing new · walk step-by-step: - Search for [my-product].com · .app · .io · .co in that order of preference - Avoid hyphens · numbers · foreign TLDs unless brand-specific - Turn ON WHOIS privacy (free at Cloudflare · $8 at Namecheap) - Enable auto-renewal - Confirm purchase STAGE 2 · LOVABLE DOMAIN CONNECTION (3 min) In Lovable: 1 · Project Settings → Domains → Add custom domain 2 · Enter [my-domain].com 3 · Lovable shows you 2 required DNS records: · A record: @ → [Lovable IP shown in UI] · CNAME record: www → [Lovable subdomain shown] 4 · Copy both STAGE 3 · DNS RECORDS AT REGISTRAR (3 min) Guide me to registrar's DNS panel: Cloudflare: Domain → DNS → Records → Add record Namecheap: Domain List → Manage → Advanced DNS → Add New Record Porkbun: Domain → DNS → Add Add: Type: A · Host: @ · Value: [Lovable IP] · TTL: 300 (5 min) Type: CNAME · Host: www · Value: [Lovable subdomain] · TTL: 300 If Cloudflare · set proxy status to \"DNS only\" (grey cloud) for first setup · switch to proxied (orange cloud) after TLS is confirmed working. STAGE 4 · TLS + VERIFICATION (3 min) Wait 2-5 minutes for DNS propagation. Then: 1 · In Lovable Domains panel · click \"Verify\" 2 · Lovable auto-provisions Let's Encrypt cert (no manual TLS config) 3 · Test both variants: · https://[my-domain] — should load with green lock · https://www.[my-domain] — should redirect to apex (or reverse) · http://[my-domain] — should auto-upgrade to HTTPS 4 · Add HSTS header via Lovable prompt: <meta http-equiv=\"Strict-Transport-Security\" content=\"max-age=31536000; includeSubDomains\"> STAGE 5 · UPDATE ALL OG + CANONICAL URLS (1 min) Lovable chat prompt: \"Replace every hardcoded lovable.app URL in my code with https://[my-domain]. Include og:url · twitter:url · canonical link tags · sitemap URLs · robots.txt sitemap reference.\" # DELIVERABLE - Domain purchased with WHOIS privacy + auto-renewal - A + CNAME records added at registrar - TLS certificate active · green lock - www → apex redirect (or reverse) working - HSTS header set - All internal URLs updated to custom domain # QUALITY BAR - Rauch: does BOTH www AND apex work · no dead ends? - Evans: did I explain what an A vs CNAME record does · or just tell them to paste? - Hunt: HSTS active · no mixed content warnings?
Why: Google won't fully index your app for weeks without submission. This prompt (a) generates robots.txt + sitemap.xml via Lovable · (b) walks you through Google Search Console setup · (c) submits your sitemap manually to skip the 2-week wait. Your app appears in Google search within 24-48 hours instead of weeks.
# ROLE · WORLD-CLASS PANEL - John Mueller (Google) — what Search actually cares about - Aleyda Solis — indie sitemap patterns · under-the-radar wins # CONTEXT Use primed P00. Domain live from P04. Stack: Lovable + GitHub + Cowork. # GOAL Ship robots.txt + sitemap.xml + verify in Google Search Console + submit sitemap for fast indexing. # YOUR PROCESS · 4 stages STAGE 1 · ROBOTS.TXT (2 min · via Lovable) Ask ONE question: "Any routes that should NOT be indexed? (e.g. /admin · /debug · /dashboard · /pricing-experimental)" Then Lovable prompt: \"Create public/robots.txt with: User-agent: * Allow: / Disallow: /admin Disallow: /api [Disallow: any private routes I named] Sitemap: https://[my-domain]/sitemap.xml\" STAGE 2 · SITEMAP.XML (2 min · via Lovable) Lovable prompt: \"Generate public/sitemap.xml listing every public route with: - <loc> = absolute URL (my-domain) - <lastmod> = today's ISO date - <changefreq> = weekly for marketing pages · monthly for legal - <priority> = 1.0 for landing · 0.8 for main routes · 0.5 for legal Include ONLY publicly accessible routes. Exclude anything in robots.txt Disallow." STAGE 3 · GOOGLE SEARCH CONSOLE SETUP (4 min) Walk me through: 1 · Open search.google.com/search-console 2 · Add property → Domain property (recommended · covers www + apex + subdomains) 3 · Enter [my-domain] (no https · no path) 4 · Google shows a TXT record to add 5 · Add at registrar DNS: Type: TXT · Host: @ · Value: google-site-verification=[token] 6 · Wait 2 min · click Verify STAGE 4 · SUBMIT SITEMAP (2 min) In Search Console: 1 · Left sidebar → Sitemaps 2 · Enter: sitemap.xml 3 · Submit 4 · Should say "Success" within 30 sec 5 · First indexing usually within 24-48 hours (vs 2 weeks unassisted) Bonus: - URL Inspection tool → paste homepage URL → click "Request Indexing" · pushes Google to crawl immediately - Repeat for your top 3 landing pages # DELIVERABLE - robots.txt live at /robots.txt - sitemap.xml live at /sitemap.xml - Google Search Console verified (TXT record method) - Sitemap submitted · showing "Success" - Top 3 URLs manually requested for indexing # QUALITY BAR - Mueller: is my sitemap actually accurate · or listing routes that 404? - Solis: did I use Domain property (not URL prefix) · so future subdomains work?
Why: Google ranks fast sites higher. Users bounce from slow ones (53% leave if load > 3 sec). This prompt runs Lighthouse via Chrome DevTools · targets any Core Web Vitals red flag · outputs a paste-ready Lovable prompt to fix each issue.
# ROLE · WORLD-CLASS PANEL - Addy Osmani (Google Chrome) — Core Web Vitals authority - Harry Roberts (CSS Wizardry) — practical web performance - Ilya Grigorik — HTTP/2 · resource prioritization # CONTEXT Use primed P00. Deployed at custom domain from P04. Stack: Lovable + GitHub + Cowork. Chrome DevTools open on my laptop. # GOAL Run Lighthouse on mobile + desktop · identify all Core Web Vitals issues · produce paste-ready Lovable fix prompts. # YOUR PROCESS · 4 stages STAGE 1 · RUN LIGHTHOUSE (3 min) Walk me through: 1 · Open https://[my-domain] in Chrome incognito (no extensions) 2 · DevTools (⌘⌥I / F12) → Lighthouse tab 3 · Categories: check Performance · Accessibility · Best Practices · SEO 4 · Device: MOBILE first (that's what Google ranks on) 5 · Click "Analyze page load" 6 · Wait ~30 sec · screenshot the 4 scores 7 · Also run for DESKTOP · compare STAGE 2 · TARGET THRESHOLDS Green zone (aim for all four): Performance: ≥ 90 mobile · ≥ 95 desktop Accessibility: ≥ 95 Best Practices: ≥ 95 SEO: = 100 (should be trivial after P03) Core Web Vitals (green): LCP (Largest Contentful Paint): < 2.5s CLS (Cumulative Layout Shift): < 0.1 INP (Interaction to Next Paint): < 200ms FCP (First Contentful Paint): < 1.8s TBT (Total Blocking Time): < 200ms STAGE 3 · DIAGNOSE + FIX (8 min) For EACH failing metric · Lighthouse shows "Opportunities" section. For the top 3 opportunities · produce a paste-ready Lovable prompt: Common issues + fixes: · Images not optimized → "Convert all <img> tags to use loading='lazy' · add width/height attributes to prevent CLS · serve WebP with PNG fallback via <picture>" · Render-blocking CSS → "Inline critical CSS · defer the rest with media='print' onload trick" · Unused JavaScript → "Code-split routes with React.lazy + Suspense · move analytics + non-critical JS to defer" · Font swap flash (FOUT) → "Add font-display: swap · preload primary font with <link rel='preload' as='font'>" · Missing alt text → "Add descriptive alt to every <img> · empty alt='' for decorative images" · Contrast fails → "Bump all body text to 4.5:1 contrast minimum · check via webaim.org contrast checker" STAGE 4 · RE-RUN + VERIFY (2 min) After Lovable applies fixes: 1 · Re-deploy · wait for Lovable to build 2 · Hard refresh in incognito (⌘⇧R) 3 · Re-run Lighthouse 4 · Compare · confirm scores climbed 5 · If any category still red · loop back to STAGE 3 # DELIVERABLE - Lighthouse scores ≥ target on mobile + desktop - All Core Web Vitals in GREEN - Screenshots saved for pre-launch checklist (P07) # QUALITY BAR - Osmani: did I test on mobile (Google's ranking target) · not just desktop? - Roberts: are fixes surgical (biggest wins first) · not scattershot? - Grigorik: is the largest image on the page > 200KB · and if so · why?
Why: This is the FINAL check before you publish your domain to the world (WhatsApp broadcast · LinkedIn post · X thread). It audits favicon · social preview · SEO · domain · robots · Lighthouse · plus the security audit from Day 5 P05 and the bug hunter from Day 5 P04. Any 🔴 CRITICAL blocks publish. This is the gate.
# ROLE · WORLD-CLASS LAUNCH PANEL - Michael Nygard ("Release It!") — production hardening + launch readiness - Kelsey Hightower — production discipline · what breaks under real users - Charity Majors (Honeycomb) — observability at launch · what to watch # CONTEXT Use primed P00. All work from P01-P06 done. Also: Day 5 P04 (bug hunter) and Day 5 P05 (security audit) have been run. # GOAL Audit 20 items across 6 categories · block publish if any 🔴 CRITICAL found. # AUDIT · 20-item checklist CATEGORY 1 · ASSETS (P01-P02) 🔲 Favicon renders on browser tab (not Lovable default) 🔲 Apple Touch Icon set (test: Add to Home Screen on iPhone) 🔲 Social preview image visible on WhatsApp when URL is shared 🔲 OG image renders in Facebook Sharing Debugger with no errors CATEGORY 2 · META (P03) 🔲 Every route has unique <title> · 50-60 chars · benefit-first 🔲 Every route has meta description · 140-160 chars 🔲 JSON-LD schema validates in Google Rich Results Test 🔲 <html lang="en"> set CATEGORY 3 · DOMAIN + TLS (P04) 🔲 https://[my-domain] loads with green lock 🔲 https://www.[my-domain] redirects to apex (or reverse) · consistent 🔲 http:// auto-upgrades to https:// 🔲 HSTS header present CATEGORY 4 · DISCOVERABILITY (P05) 🔲 robots.txt lives at /robots.txt · not blocking / 🔲 sitemap.xml lives at /sitemap.xml · lists every public route 🔲 Google Search Console verified · sitemap submitted CATEGORY 5 · PERFORMANCE (P06) 🔲 Lighthouse Performance ≥ 90 mobile 🔲 All Core Web Vitals in GREEN 🔲 First screen loads < 2 sec on 4G CATEGORY 6 · SAFETY (Day 5 P04 + P05) 🔲 Zero 🔴 CRITICAL findings from Day 5 P05 (security audit) 🔲 Zero P0 bugs from Day 5 P04 (bug hunter) # OUTPUT · ranked pass/fail table | Category | Item | Status | Fix (if fail) | |----------|------|--------|---------------| Status: ✅ PASS ⚠ WARNING · non-blocking · fix in first week post-launch 🔴 CRITICAL · BLOCKS PUBLISH · fix now · re-run # DECISION - If ALL 20 pass · OR only ⚠ warnings · give me the go signal + a 3-line "here's what to watch in the first hour" summary - If ANY 🔴 CRITICAL · print "DO NOT PUBLISH" · list the fixes as paste-ready Lovable prompts · re-run this checklist after each fix # QUALITY BAR · self-check - Nygard: did I test what happens when 10 users hit the site simultaneously? - Hightower: are Supabase RLS policies live on ALL user-touching tables? - Majors: is Sentry catching production errors · not just dev errors? - Did I actually query the MCPs to verify · or trust user reports?
Why: Even after P07 passes · reality is different. This 5-minute smoke test simulates a FIRST-TIME visitor across 4 devices + 4 platforms to catch anything the audit missed. If it passes · you're truly live.
# ROLE You are my fresh-eyes launch validator. Assume nothing I built works until proven live. # CONTEXT Use primed P00. P07 checklist passed. Site published at https://[my-domain]. Stack: Lovable + GitHub + Supabase + Cowork. Sentry MCP + PostHog MCP connected. # GOAL 5-minute smoke test across devices + platforms. Confirm the app works for a first-time visitor with zero context. # YOUR PROCESS · 5 tests TEST 1 · FRESH INCOGNITO (1 min) - Open incognito window · no cookies · no logged-in state - Type domain manually (not autocomplete) - LCP happens in < 2 sec? - Primary CTA visible without scroll? - Click through signup flow · does it complete? - Query Sentry MCP: any errors captured from this session? - Query PostHog MCP: signup_completed event fired? TEST 2 · MOBILE PHONE (1 min) - Open Safari on iPhone (or Chrome Android) - Type domain · not follow link - No horizontal scroll? - Tap targets feel ≥ 44px? - Sticky CTA visible if long form? - Add to Home Screen · icon looks right (not blank)? TEST 3 · SOCIAL PREVIEW · 4 PLATFORMS (1 min) Paste https://[my-domain] into: 1 · A WhatsApp chat to yourself · preview loads in < 3 sec? 2 · A LinkedIn post draft · OG image + title + description show? 3 · An X post draft · Twitter card renders? 4 · iMessage to yourself · preview loads? If ANY show blank / broken preview · re-run Facebook Sharing Debugger and LinkedIn Post Inspector · resubmit with cache bust. TEST 4 · GOOGLE (1 min) - Google: site:[my-domain] - Does Google show my site indexed? (May take 24-48h from P05) - If not indexed yet · confirm sitemap submitted in Search Console TEST 5 · REVERSE THE FUNNEL (1 min) Query PostHog MCP for the FIRST session recording (that's YOU testing). - Watch it back - Anything look janky · slow · confusing? - Any dead clicks · rage clicks? - Would you show this to your 60-year-old parent right now? # DELIVERABLE - 5 tests · pass/fail per test - If any fail · fix prompts for Lovable + re-run - Screenshot the passing WhatsApp preview · post to pod thread with \"WE ARE LIVE. Come try: [URL]\" # QUALITY BAR - Majors: is Sentry seeing my test session · confirming instrumentation works in production? - Zhuo: does the first-run feel intentional · or accidental? - Did I actually pull social previews from 4 platforms · or just check one?