⚡ Observability + Analytics · v1 · 8 prompts

See Your App · workshop-order prompts.

Every prompt asks 3 clarifying Qs · names a world-class expert panel · ships world-class output.

P03+P04 = installs in 10 min each. P05 wires Stripe to your phone. P06 = your morning dashboard. P08 = the crisis prompt you save for when something breaks.

The 3-phase flow.

Run them in this order. Each output feeds the next.

DECIDE · P01-P02 INSTRUMENT · P03-P05 USE DAILY · P06-P08

8 prompts · in workshop order

⭐ Phase 1 · DECIDE what to track (2 prompts)
⭐ PROMPT 01 · 5 MUST-WATCH METRICS

What 5 numbers actually matter?

Why: Track 50 metrics = burn out. Track the wrong 5 = waste of time. This prompt gives you the 5 metrics that matter for YOUR product at YOUR stage.

Act 1 · pre-install 5 min
Casey Winters · Reforge · north-star metric design Lenny Rachitsky · SaaS metrics at every stage April Dunford · positioning + activation alignment
# ROLE · WORLD-CLASS PANEL
3-expert metrics team. Synthesize:
  - Casey Winters (Reforge) — north-star + activation event design
  - Lenny Rachitsky — what metrics matter at $0 / $1k / $10k MRR
  - April Dunford — positioning + activation alignment

# CONTEXT
Based on what you already know about me, my Build Sprint app, my Day-24 stage,
my pricing, and my users — give me the 5 metrics I MUST watch this week.

# INPUT
Product (1 line): [what does it do]
Stage: [pre-revenue / first $1k MRR / $1-10k MRR]
Persona: [B2C / prosumer / B2B SMB / enterprise]
What I'm worried about: [acquisition / activation / retention / monetization]
My pricing model + tiers: [paste]

# YOUR PROCESS

STEP 1 · ASK 3 CLARIFYING QUESTIONS:
  - "What's the moment a new user says 'oh, I get it'? (your activation event)"
  - "What's your weakest funnel step right now? (or 'I don't know')"
  - "If you could only know ONE number tomorrow, what would it be?"
Wait for answers.

STEP 2 · PROPOSE 3 METRIC FRAMEWORKS:
  - North-Star + Inputs (Casey Winters model)
  - AARRR funnel (Acquisition · Activation · Retention · Referral · Revenue)
  - HEART (Happiness · Engagement · Adoption · Retention · Task-success)
  Recommend ONE for my stage.

STEP 3 · After I pick · output 5 SPECIFIC metrics in this format:

  METRIC 1 · [name] · [definition · how it's calculated]
    Why this stage: [1 line]
    Where to track: [PostHog event name · Sentry · Stripe · Vercel]
    Healthy benchmark for my stage: [%/$ range]
    Red flag value: [what triggers worry]
    Install order: [1st-5th]

  ...repeat for metrics 2-5...

PLUS:
  - The 1 metric to put on a giant card at the top of my dashboard
  - The 1 metric I should IGNORE for now (resist the temptation)
  - The "graduation" metric I'll start tracking at next stage

# QUALITY BAR
- Casey: did I name a TRUE north-star (single number, simple, actionable)?
- Lenny: are benchmarks stage-appropriate or copy-pasted from later stages?
- Dunford: does activation align with my positioning + outcome statement?
Next: Pass the 5 metrics into P02 to pick the tool stack that tracks them.
⭐ PROMPT 02 · PICK YOUR OBSERVABILITY STACK

Which tools at which stage?

Why: Datadog + Mixpanel + Amplitude + Segment = $5k/mo. Sentry + PostHog + Vercel built-in = $0. This prompt picks the right stack for your stage.

Act 2 · pre-install 5 min
Charity Majors · Honeycomb · observability vs monitoring David Cramer · Sentry founder · error budgets for indies James Hawkins · PostHog co-founder · what tool at what stage
# ROLE · WORLD-CLASS PANEL
3-expert observability team:
  - Charity Majors (Honeycomb) — observability vs monitoring · what's enough
  - David Cramer (Sentry founder) — error budgets · what indies actually need
  - James Hawkins (PostHog co-founder) — what tool at what stage, no overbuying

# CONTEXT
Based on my Build Sprint app + Day-24 stage + the 5 metrics from P01 — recommend
my full observability stack at 3 stages so I know what to add as I scale.

# INPUT
My stack today: [Lovable / Next.js / Supabase / Vercel / etc.]
Current monthly tool budget: [$]
My 5 metrics from P01: [paste]
Stage: [$0 / $1k / $10k MRR]
Privacy requirements: [GDPR? · self-hosted? · session recording ok?]

# YOUR PROCESS

STEP 1 · ASK 2 CLARIFYING QUESTIONS:
  - "Are session replays acceptable to your users (privacy)?"
  - "Do you ever expect to need self-hosted? (PostHog open source vs Cloud)"
Wait.

STEP 2 · PROPOSE 3 STACK TIERS:

  TIER A · BARE MINIMUM ($0/mo · pre-revenue)
    - Errors: [tool + free quota]
    - Product: [tool + free quota]
    - Infra: [built-ins]
    - Revenue: [Stripe + manual]
    Total: $0/mo · what you lose: [specific gaps]

  TIER B · STARTUP ($50-200/mo · $1-10k MRR)
    - Errors: [tool + plan]
    - Product: [tool + plan]
    - Infra: [add what?]
    - Revenue: [add what?]
    Total: $X/mo · what you gain: [specific wins]

  TIER C · SCALE ($500+/mo · $10k+ MRR)
    - Add: [what tools at this scale]
    Total: $X/mo

  Recommend ONE based on my answers.

STEP 3 · After I pick · output:
  - Final stack with exact tool names + plan
  - Install order (which tool first, second, third)
  - Total monthly cost · expected to grow to $X when I hit $10k MRR
  - The 1 tool I should NOT buy now even if it's tempting (and why)
  - "Graduate to next tier when [trigger metric] hits [threshold]"

# QUALITY BAR
- Charity: did I distinguish "I want to see X" vs "I need to be alerted on X"?
- Cramer: is my error tool actually fixing things or just collecting them?
- Hawkins: am I overbuying tools too early?
🛠 Phase 2 · INSTRUMENT · install in 30 min total (3 prompts)
🛠 PROMPT 03 · SENTRY · 10-MIN INSTALL

Catch every broken thing.

Why: Errors silently kill conversion. Sentry catches them with stack traces + session replays. 10-min install. First error captured in 11.

Act 3 · slide 21 10 min Exercise 1
David Cramer · Sentry founder · what to alert on Mitchell Hashimoto · HashiCorp · instrumentation discipline Charity Majors · Honeycomb · observability craft
# ROLE · WORLD-CLASS PANEL
3-expert observability team:
  - David Cramer (Sentry founder) — what errors matter, what to ignore
  - Mitchell Hashimoto — instrumentation discipline
  - Charity Majors — observability vs monitoring

# CONTEXT
Based on what you already know about my Build Sprint app — install Sentry
end-to-end. Use the Sentry CLI/wizard if available.

# INPUT
My stack: [Lovable / Next.js / React / Vite / etc.]
My deployment: [Vercel / Lovable / Netlify / Railway]
My Sentry account email: [email]
My deployed app URL: [paste]

# YOUR PROCESS

STEP 1 · ASK 3 CLARIFYING QUESTIONS:
  - "Signed up for Sentry yet? Free tier?"
  - "What URL should I test against?"
  - "Any errors you ALREADY know about that we should NOT alert on (3rd-party noise)?"
Wait.

STEP 2 · INSTALL:
  - Install @sentry/[framework] package
  - Add Sentry.init() with DSN (Cramer rule: env var, never hardcoded)
  - Configure source maps upload (so stack traces are readable, not minified)
  - Add session replay (sampleRate: 0.1 for free tier)
  - Add performance tracing (tracesSampleRate: 0.2)
  - Wrap React error boundaries (or framework equivalent)
  - Add a TEST error route so we can verify (e.g., /sentry-test)

STEP 3 · TEST:
  - Trigger the test error
  - Confirm it appears in Sentry within 60 sec
  - Confirm session replay is attached
  - Show me where alert email/notification settings are

STEP 4 · RECOMMEND ALERTS:
  - The 1 alert I should turn ON RIGHT NOW (e.g., "alert on any new error type for the first time, max 1/day")
  - The 2-3 alert rules to add at $1k MRR
  - What NOT to alert on (browser extensions · adblocker · ResizeObserver loop noise)

# DELIVERABLE
- Working Sentry install (verified by test error appearing)
- IGNORE LIST (what to filter out as noise)
- The 1 alert rule that will wake me up if something REAL breaks

# QUALITY BAR
- Cramer: am I alerting on signal, not noise?
- Hashimoto: is the DSN safely in env var, not source?
- Majors: can I answer "why did this break for that user?" from what's captured?
🛠 PROMPT 04 · POSTHOG · 10-MIN INSTALL + FIRST FUNNEL

Know what users actually do.

Why: PostHog = events + funnels + replays + flags, all in one tool, free up to 1M events/mo. Install in 10 min. First funnel live in 11.

Act 4 · slide 27 10 min Exercise 2
James Hawkins · PostHog co-founder · what events matter Casey Winters · Reforge · activation + retention Lenny Rachitsky · SaaS funnel best practices
# ROLE · WORLD-CLASS PANEL
3-expert product analytics team:
  - James Hawkins (PostHog co-founder) — what events actually matter
  - Casey Winters (Reforge) — activation + retention metrics
  - Lenny Rachitsky — SaaS funnel best practices

# CONTEXT
Based on what you know about my Build Sprint app — install PostHog,
fire the first 5 events, build the first funnel.

# INPUT
My stack: [Lovable / Next.js / React / Vite]
My deployment URL: [paste]
My PostHog account email: [email]
My product 1-line: [what does it DO]
My "aha moment" — the action where users say "oh I get it": [paste]

# YOUR PROCESS

STEP 1 · ASK 3 CLARIFYING QUESTIONS:
  - "What's the most important action a user takes (the activation event)?"
  - "Session recordings on or off? (Privacy ok?)"
  - "PostHog Cloud or self-hosted?"
Wait.

STEP 2 · INSTALL:
  - Install posthog-js (or posthog-node for server-side)
  - Configure with project API key (env var, not hardcoded)
  - Enable autocapture (page views + click tracking) — Hawkins default
  - Configure session recording at 10% sample rate (free tier ok)
  - Wire identify() so logged-in users are tracked properly across devices
  - Enable feature flags (so we can ship dark later)

STEP 3 · INSTRUMENT 5 EVENTS:
  Add posthog.capture() calls for:
  - signup_completed (props: email, plan, source, referrer)
  - activated (props: time_to_activation, path_taken) — your aha moment
  - paywall_viewed (props: tier_seen, source_page)
  - subscription_started (props: tier, $ amount, billing_cycle)
  - error_encountered (the catch-all for non-Sentry app errors)

STEP 4 · BUILD THE FIRST FUNNEL:
  In PostHog UI, create funnel: page_viewed → signup_completed → activated → subscription_started
  - Send me the funnel link
  - Tell me which step has the worst drop-off historically for similar apps
  - Recommend what to optimize first

# DELIVERABLE
- Working PostHog install (verify events flowing in dashboard within 60 sec)
- 5 events firing in production
- 1 funnel live
- The 1 step in my funnel to fix first (and how)

# QUALITY BAR
- Hawkins: are events named consistently (snake_case, verb_past_tense)?
- Winters: is my activation event TRUE activation (got value, not just signed up)?
- Lenny: are funnel drop-off benchmarks stage-appropriate?
🛠 PROMPT 05 · STRIPE → SLACK/EMAIL ALERTS

Wire revenue events to your phone.

Why: When someone pays you, you should FEEL it. When someone churns, you should know within minutes (and have a save-attempt sequence). This wires it in 10 min.

Act 6 · slide 37 10 min Exercise 3
Patrick Collison · Stripe CEO · event design philosophy Justin Welsh · solo creator revenue alerting Will Larson · Carta · incident routing for small teams
# ROLE · WORLD-CLASS PANEL
3-expert team:
  - Patrick Collison (Stripe) — event design philosophy
  - Justin Welsh — solo creator revenue alerting
  - Will Larson (Carta) — incident routing for small teams

# CONTEXT
Based on what you already know about my Build Sprint app and Stripe setup —
wire the 5 most important Stripe events to alert me wherever I'll notice.

# INPUT
My Stripe mode: [live or test]
Where to send alerts: [Slack webhook URL OR email]
My deployment platform: [Vercel / Lovable / Supabase edge function]
Events I want first: [default: checkout.session.completed + customer.subscription.deleted]

# YOUR PROCESS

STEP 1 · ASK 2 CLARIFYING QUESTIONS:
  - "Slack workspace webhook URL or email?"
  - "EVERY revenue event or just thresholds (>$X)?"
Wait.

STEP 2 · BUILD:
  - Create webhook endpoint (Vercel API route OR Supabase edge function)
  - Register it in Stripe Dashboard → Developers → Webhooks
  - Subscribe to the 5 events:
    · checkout.session.completed (🎉 new customer)
    · invoice.payment_failed (⚠️ card declined — email them in 1 hour)
    · customer.subscription.deleted (😱 churn — find out why today)
    · invoice.paid (💚 recurring landed)
    · charge.dispute.created (🚨 chargeback — respond within 7 days)
  - On receive: verify webhook signature (Collison rule: always verify)
  - Format message + send to Slack/email
  - Different formatting per event (celebrate vs alert)

STEP 3 · TEST:
  - Use Stripe CLI to send a test event
  - Confirm Slack/email arrives
  - Add retry logic if delivery fails (3 retries, exponential backoff)

# DELIVERABLE
- Working webhook URL deployed
- 5 events wired
- Test event sent + confirmed received
- A "do not panic" checklist for the most common alert (invoice.payment_failed)
- Optional: add the events to PostHog (capture as posthog events too)

# QUALITY BAR
- Collison: am I verifying webhook signatures (no spoofing)?
- Welsh: is the success alert celebratory (not just operational)?
- Larson: is there a clear next-action per alert?
📊 Phase 3 · USE DAILY · the habits that stick (3 prompts)
📊 PROMPT 06 · BUILD YOUR MORNING DASHBOARD

One URL. Six numbers. Daily.

Why: If your metrics live in 4 different tabs, you'll check none. One URL · 6 cards · 5 min in the morning · forever.

Act 7 · slide 40 10 min Exercise 4
Edward Tufte · "Visual Display" · no chartjunk Stephen Few · "Show Me the Numbers" · decision-supporting design Justin Welsh · solo founder daily ritual
# ROLE · WORLD-CLASS PANEL
3-expert dashboard team:
  - Edward Tufte — "Visual Display." No chartjunk. Color earns its place.
  - Stephen Few — "Show Me the Numbers." Decision-supporting design.
  - Justin Welsh — solo founder daily ritual

# CONTEXT
Based on my Build Sprint app + my installed Sentry + PostHog + Stripe events —
build me a single morning-dashboard URL that aggregates the 6 numbers I check daily.

# INPUT
My stack: [Next.js / Lovable / etc.]
My PostHog API key (readonly): [key]
My Stripe restricted key (read access): [key]
My Sentry API token: [token]
What I care about MOST: [revenue / users / errors / all 3]

# YOUR PROCESS

STEP 1 · ASK 3 CLARIFYING QUESTIONS:
  - "Mobile-first (check on phone) or desktop?"
  - "Where should this live? (subdomain like /dashboard · Notion embed · standalone)"
  - "What's your activation event so I can show activation rate?"
Wait.

STEP 2 · BUILD a single-page dashboard with 6 cards:
  Card 1 · Visitors today (Vercel Analytics or PostHog)
  Card 2 · Signups today (PostHog · event = signup_completed)
  Card 3 · Activation rate 7d (PostHog funnel)
  Card 4 · New MRR today (Stripe API · subs created)
  Card 5 · New errors overnight (Sentry API · last 24h)
  Card 6 · "Latest session replay" (PostHog · embed iframe of latest 1 replay)

# DESIGN RULES (Tufte + Few)
  - 6 KPI cards in a 3×2 grid
  - Each card: big number + tiny delta vs yesterday (green up · red down)
  - No 3D effects · no chartjunk · single accent color
  - Loads in < 2 seconds
  - Mobile responsive
  - Auto-refreshes every 5 min

STEP 3 · DEPLOY:
  - Push to my domain at /dashboard
  - Tell me the URL + how to bookmark on phone home screen
  - Pin to favicon so it's obvious in tab bar

# DELIVERABLE
- A live URL I open with my morning coffee
- 6 numbers · 5 seconds to read
- Mobile-friendly · add to phone home screen

# QUALITY BAR
- Tufte: would removing any chart/color make it clearer?
- Few: can a stranger know what to DO from this dashboard in 30 sec?
- Welsh: is this fast enough I'd actually look at it every morning?
📊 PROMPT 07 · WEEKLY KPI AUTO-DIGEST

Sunday email · "how did we do this week?"

Why: Daily dashboard catches issues. Weekly digest catches TRENDS. Auto-emailed every Sunday 9am. No remembering. No skipping.

Act 9 · slide 49 10 min
Lenny Rachitsky · SaaS weekly review framework Justin Welsh · solo founder operating rhythm Stephen Few · digest design
# ROLE · WORLD-CLASS PANEL
3-expert team:
  - Lenny Rachitsky — SaaS weekly review framework
  - Justin Welsh — solo founder operating rhythm
  - Stephen Few — "Show Me the Numbers" digest design

# CONTEXT
Based on my Build Sprint app + the tools I just installed —
build a Sunday-morning auto-digest emailed to me weekly.

# INPUT
My email: [paste]
My PostHog + Sentry + Stripe API keys: [readonly]
Send time: [Sunday 9am my timezone]

# YOUR PROCESS

STEP 1 · ASK 2 CLARIFYING QUESTIONS:
  - "Most important metric to lead with?"
  - "Biggest worry I want flagged if it moves?"
Wait.

STEP 2 · BUILD scheduled function (Vercel Cron OR Supabase pg_cron):
  Every Sun 9am:
    - Pull PostHog stats for week (visitors, signups, activation, retention)
    - Pull Stripe MRR delta, churn count, failed payments, top customers added
    - Pull Sentry top 5 errors of the week (by user count)
    - Compare each to last week (% change)
    - Generate markdown email with sections:

      📈 THE WIN — biggest positive movement
      ⚠️  THE WORRY — biggest negative or stagnation
      🎯 THE 1 THING TO FIX — single recommendation for the week

    - Add a chart for MRR trajectory (sparkline, no chartjunk)
    - End with: "open dashboard → [URL]"

STEP 3 · SEND via Resend/Postmark to my email
STEP 4 · TEST the first send NOW (don't wait until Sunday)

# DELIVERABLE
- Cron job deployed + verified
- Test email landed in my inbox
- 3-line "this is what I look at first" Sunday-morning summary

# QUALITY BAR
- Lenny: does the digest support decisions (not just describe data)?
- Welsh: is it short enough I'd actually read it on my phone?
- Few: does the WIN/WORRY/FIX structure make priority obvious?
🚨 PROMPT 08 · CRISIS PROMPT · "WHAT BROKE?"

Save this. Paste in the moment of panic.

Why: Something breaks at 11pm. You panic. You don't know where to look first. This prompt walks you through triage in 3 minutes. Calm. Methodical. Saves you.

Act 9 · slide 50 use whenever broken
Charity Majors · SRE incident-response craft Will Larson · Carta · small-team triage Tanya Reilly · "The Staff Engineer's Path" · methodical debugging
# ROLE
You are my SRE/observability triage partner. Calm. Methodical.
Panel reference: Charity Majors · Will Larson · Tanya Reilly.

# CONTEXT
Based on my Build Sprint app + my instrumented stack (Sentry, PostHog,
Vercel, Lovable, Supabase, Stripe) — walk me through finding what's
broken FAST. Stay calm with me.

# INPUT
What I observed: [the symptom · user said / what I saw]
When it started: [time / event / "I don't know"]
What I just deployed (if anything): [paste recent change]
Severity I'm feeling: [low / "uh oh" / "everything is on fire"]

# YOUR PROCESS · the 3-minute triage

ASK 1 question first:
  "Is anyone currently affected, or did this resolve itself? Is revenue affected?"

Then walk me through IN ORDER (skip steps that don't apply):

1 · SENTRY · any new error type in last 24h matching the symptom?
    Open: sentry.io/issues?statsPeriod=24h&sort=created
    If yes: open the error · show me top stack frame · suggest fix
    If no: move to step 2

2 · DEPLOY HISTORY · any deploy in the window when symptom started?
    Open: Vercel · Lovable · or Git log
    If yes: candidate to roll back · suggest 1-click revert
    If no: move to step 3

3 · SUPABASE/DB · any RLS errors / DB timeouts / auth failures?
    Open: supabase.com/dashboard/[project]/logs
    If yes: identify the query · suggest fix
    If no: move to step 4

4 · POSTHOG · funnel drop spike in same time window?
    Open: my funnel · last 24h vs prior 7d avg
    If yes: which step? which segment of users?
    If no: move to step 5

5 · STRIPE · payment failures or webhook delivery issues?
    Open: stripe.com/dashboard/webhooks
    If yes: which event · what error · retry?

For each step:
  - Tell me exactly what URL to open
  - Tell me what to look for
  - If found: tell me what to do
  - If not found: move to next step calmly

# DELIVERABLE
- The root cause (or "I don't know · here's what to investigate next")
- The 1 fix to ship now (or the rollback to do)
- 1-line post-mortem to add to my Notion (with date + symptom + fix)
- A "follow-up next week" note if the root cause isn't fully fixed

# TONE
Calm. Reassuring. "We'll find it." Don't panic, don't catastrophize.
If revenue is affected, prioritize stopping the bleed before root cause.
Tip: save this prompt as a Cursor snippet or Notion template. When something breaks · paste it · breathe · follow the 5 steps. You'll always find it.