What's New
Changelog
Every feature shipped, every fix deployed — the full history of Munch from day one through today.
Email Redesign
Complete overhaul of all transactional emails for universal client compatibility and a cleaner look.
- designAll 6 transactional emails redesigned: white card on light gray background, renders correctly in Gmail, Outlook, and Apple Mail
- designBody text increased to 18px, headings to 34px bold italic uppercase
- designTable-based HTML layout replaces div-based CSS — fixes Gmail dark-mode stripping
- designPurple (#9333ea) reserved exclusively for the MUNCH. wordmark, CTA buttons, links, and output pills — all other text is black
- designFrom name standardised: "Munch" for transactional emails, "Munch Support" for failure-help emails
- fixCLAUDE_FAIL email copy rewritten — no AI references. Now reads: "Munchie was full at the moment and couldn't finish munching"
- fixRemoved auto free Munch gifting on CLAUDE_FAIL — prevented users from retrying the same video to accumulate free credits
- infraResend API key rotated after expiry — 11 missed welcome emails delivered retroactively
Reliability, Monitoring & Polish
Post-launch hardening: proactive failure handling, uptime monitoring, and a wave of UX improvements.
- infraUptimeRobot monitoring: 3 monitors every 5 minutes — HTTP check, /api/health "ok" keyword, /api/health "degraded" absence. Alerts to email + Slack.
- feature/api/health endpoint: parallel live checks for Anthropic, Stripe, Resend, and Clerk. Returns 200 {"status":"ok"} or 503 with failure list.
- featureMorning failure-analysis cron (13:00 UTC): analyses overnight failures, sends targeted help emails for user errors, posts fix plans to #munch-failures for system errors
- featureNon-activator email drip: daily cron finds free users 23-25h old with zero Munches and sends a nudge email
- featureTeam usage log: collapsible "Team Activity" section shows last 50 Munches generated by team members
- securityHSTS header added (max-age=31536000; includeSubDomains; preload) + X-Permitted-Cross-Domain-Policies: none
- featureSecurity page at /security: trust signal bar (SOC 2, PCI Level 1, AES-256-GCM, HSTS+TLS), section cards, responsible disclosure info. Linked from all page footers.
- designSecurity page redesign: purple accent bar, green checkmark bullet points, purple-tinted Responsible Disclosure card
- featureNative support form at /support replaces Tally iframe — name, email, textarea, sends to /api/support → Slack. Unauthenticated requests allowed; rate-limited by IP.
- featureFAQPage JSON-LD schema injected via faq/layout.tsx — all 15 Q&As eligible for Google rich snippets
- featureReferral card moved from hidden right-column to full-width card below generator — visible on all screen sizes. Shows Signups, Converted, Munches Earned.
- fixEarly URL validation in repurpose route: non-URL input returns clean 400 before any credit deduction or Slack alert fires
- fixSuppressed Slack failure alerts for user input errors (bad URLs, fetch failures, etc.)
- infraGitHub Actions status-check.yml deleted — fully replaced by UptimeRobot + /api/health
- infraCLAUDE.md split into modular reference files: stripe-prices, github-actions, competitive, GTM plan, product updates, completed log
ProductHunt Launch
Munch goes live on ProductHunt. 8 outputs, 5 pricing tiers, and the full feature set shipped.
- featureLive on ProductHunt — munch.video publicly launched
- featureAll 8 outputs available across all plans (SEO Blog Post gated to Small Business+)
- featureCountdown clock on /launch page flips to "We are live" banner at launch time
- infraAnthropic Tier 4 rate limits approved ahead of launch traffic
- infraVercel Pro ($20/mo) for 300-second function timeout on generation route
Launch Preparation & Security Audit
Pre-launch hardening, ProductHunt assets, and a full security review before going live.
- featureProductHunt launch page at /launch: hero, feature highlights, gallery, countdown clock to March 18 08:00 UTC
- feature5 PH gallery images (1270x760) at /ph-image/[1-5] via ImageResponse
- featureX/Twitter banner at /x-banner (1500x500, dark theme, monster mascot, output pills)
- featurePRODUCTHUNT promo code: +5 bonus Munches on paid subscription, expires 2026-04-01
- featureLAUNCH_REDIRECT_UNTIL_ISO env var: unauthenticated / redirects to /launch until date passes. Social crawlers bypass redirect.
- featurePH badge (producthunt.com embed) on /launch and main dashboard footer
- securityRate limiting added on 5 API routes: repurpose (10/min), chat (20/min), support (5/min), feedback (5/min), health (10/min)
- securitySecurity headers on all routes: X-Frame-Options DENY, X-Content-Type-Options nosniff, Referrer-Policy, Permissions-Policy
- securityStripe webhook idempotency: CreditTopup unique constraint (P2002 = replay skip), subscriptionId matching
- securityCredit race condition fix: credits deducted UPFRONT before work begins, refunded on any failure
- securityRLS enabled on all 14 Supabase tables — locks down PostgREST/Supabase client API surface
- infraSentry error monitoring: @sentry/nextjs, session replay (10% / 100% on error), tracing (10% sample)
- infraDB indexes added on Munch (userId, createdAt), CopyEvent, and GenerationLog tables
- featuremaxDuration exports: repurpose=300s, regenerate=120s, stripe webhook=60s, chat=60s
- fixRegen limit enforced at max 3 regenerations per output
- fixmunchesLeft default fixed (was incorrectly 5, now 0 — free munch granted via Clerk webhook only)
- fixBulk tab gated to paid users only
- fixOld Buffer OAuth routes return 410 Gone
- infraClerk OTP email verification configured — non-Google signups receive email OTP code
- infraStripe full cleanup: all 5 products recreated with clean names and descriptions, all 11 price IDs updated
- infraReferral coupon MUNCH-REFERRAL created in Stripe live (50% off first month, monthly subscriptions only)
Content, SEO & Input Expansion
More ways to feed Munch — article URLs, podcast RSS, persona pages — plus a full FAQ.
- featureArticle / website URL input: paste any non-YouTube/Vimeo URL. A1: plain fetch → A2: Bright Data Web Unblocker fallback. Amber warning banner in UI.
- featurePodcast RSS feed input: /api/rss/episodes fetches and parses RSS, returns up to 10 episodes. Auto-detects RSS URLs.
- featureFAQ page at /faq: 15 Q&As with inline feedback form (POST → /api/feedback → Slack)
- feature6 persona landing pages: /youtubers, /solopreneurs, /newsletters, /marketing, /podcasters, /devrel — shared PersonaLanding component with per-page metadata
- featureDynamic OG images at /og/[persona] — 1200x628px, dark theme, persona headline + format pills
- featureShareable munch links: Munch.shared field, toggle via /api/munch/[id]/share, public read-only page at /share/[id]
- featureDownload all outputs: client-side .txt blob download, filename derived from munch title
- infraOG image redesigned: all 8 outputs single column, larger text, modern dark layout, purple glow, cache-busted to ?v=3
- fix"Munches" replaces "credits" across all user-facing copy
Distribution & Workflow Tools
Publish, schedule, and organise your content without leaving Munch.
- featureBuffer scheduling: connect via personal API key, publish LinkedIn posts and X threads to Buffer queue directly from output cards
- featureBulk processing: paste up to 10 URLs, Munch processes them sequentially. 1 credit each. Status updates per URL (pending / processing / done / error).
- featureStarred favourites: star any output card to save to FavouriteOutput DB. Starred section in sidebar for quick access.
- featureDirect publish links on output cards: LinkedIn, X, Gmail, Outlook, Apple Mail, YouTube Studio
- featureRegenerate single output: ↺ button per card, /api/regenerate route, no credit deducted, max 3 regenerations per output
- featureVideo title in history sidebar: fetched via YouTube/Vimeo oEmbed in parallel, stored on Munch.title
- featureReferral program: unique referral link, MUNCH-REFERRAL Stripe coupon (50% off first month), +5 Munches on referee's first paid renewal
Power Features: Chat, Webhooks & Teams
Ask the Beast, Zapier webhooks, custom brand instructions, and team seat support.
- featureAsk the Beast: collapsed chat panel below output grid. Monthly question pool per plan. Claude replies as the Munch Beast with your content as context. Free/paygo users see upgrade prompt.
- featureWebhook / Zapier integration: POST all 8 outputs to user-configured URL after each generation. Optional HMAC signing. Gated to Pro and above. Config UI in sidebar.
- featureCustom brand instructions: saved per user in User.brandInstructions (max 1350 chars). Applied to every generation alongside brand voice presets.
- featureTeam seats: Small Business (2 seats) + Enterprise (4 seats). Invite by email → TeamMember record + invite email. Team members deduct from owner's credit pool.
- featureClerk webhook auto-accepts pending team invites when a new user signs up with a matching email
- fixTeam members can use Ask the Beast and Regenerate on owner's munches
- fixFirst-login free Munch now appears without a hard refresh — user.reload() called on mount when publicMetadata has no munchesLeft yet
Monetisation Expansion
Annual billing, the full 5-tier plan structure, and Marketing Email for everyone.
- featureAnnual pricing: toggle on pricing page, checkout passes billing: "annual" → grants 12× Munches upfront. Renewal detected via invoice interval.
- featureMarketing Email added as output #7 — subject line, preview text, 200-300 word body, CTA. Available on all plans.
- featurePro plan ($49/mo, 130 Munches) added as 5th tier between Solopreneur and Small Business
- featureEnterprise plan repriced to $299/mo ($3,289/yr) for 50%+ net margin at full utilisation
- featurePay As You Go plan: $9 for 20 Munches (one-time). Sets plan="paygo" in DB → unlocks all 8 outputs including SEO Blog Post.
- featureEnterprise: 50 Munches/day hard cap enforced at the API level
- infraAxiom structured logging (next-axiom) integrated in repurpose route
- performanceTranscript truncation limit increased from 8,000 to 100,000 characters — long videos now use their full transcript
Content Controls & Accessibility
Users can now control language, tone, and length — and Munch meets WCAG 2.1 AA.
- feature16-language selector: English, Spanish, French, German, Portuguese, Japanese, Korean, Chinese, Italian, Dutch, Polish, Arabic, Hindi, Turkish, Indonesian, Swedish
- featureBrand voice dropdown: 6 presets (Professional, Casual, Bold, Empathetic, Witty, Educational) injected into Claude system prompt
- featureOutput length control: Short / Standard / Long — scales all word count targets across every output
- featureWCAG 2.1 Level AA accessibility: skip navigation, ARIA landmarks, form labels, aria-live regions, role=alert
- designMobile-responsive UI overhaul: collapsible history sidebar, responsive padding and text, beast mascot hidden on xs screens
- fixGoogle OAuth resolved — app published to production in Google Cloud Console
Input Expansion: Vimeo & Manual Transcript
Munch is no longer YouTube-only. Paste any Vimeo link or drop in a raw transcript.
- featureVimeo support: transcript extracted via Vimeo player config endpoint
- featureManual transcript paste mode: users can paste raw transcript text directly without a URL
- infraYouTube transcript waterfall hardened: S1 (InnerTube Android) → S2 (TVHTML5) → S3 (timedtext XML) → S4 (HTML parse) → S5 (Bright Data Web Unblocker)
- infraBright Data Web Unblocker integrated as S5 fallback for blocked / region-locked YouTube videos
Payments, Plans & Analytics
Munch becomes a real product: Stripe subscriptions, four pricing tiers, and an admin analytics dashboard.
- featureStripe subscriptions: Creator ($9/mo), Solopreneur ($19/mo), Small Business ($99/mo), Enterprise ($299/mo)
- featurePay As You Go one-time topup: $9 for 20 Munches via Stripe one-time checkout
- featureCancellation flow at /cancel with retention offer before subscription ends
- featureAdmin dashboard at /admin: success rate, avg generation timing, transcript method breakdown, error breakdown, recent GenerationLog table
- featureCopyEvent DB table: tracks every output copy action. GTM events (munch_generated, content_copied) fire on key interactions.
- featureGenerationLog: per-generation performance record — input type, transcript method, timings, token counts, error type, plan
- infraSlack operational alerts across 5 channels: signups, subscriptions, failures, daily report, general fallback
- featureDaily report cron at 14:00 UTC: 24h and all-time stats posted to #munch-daily-report
Core MVP
Munch ships. One YouTube URL in, six pieces of social content out.
- featureYouTube URL → transcript extraction → Anthropic Claude AI → 6 content outputs
- featureOutputs: LinkedIn Post, X Thread, Newsletter Section, Carousel Slide Guide, YouTube Description + Tags, Pull Quotes
- featureSEO Blog Post output (gated to paid plans)
- featureClerk authentication: sign up, sign in, Google OAuth, email OTP
- featureFree Munch on signup — granted via Clerk user.created webhook, credits stored in Clerk publicMetadata
- featureWelcome email via Resend on new user signup
- featureSupabase PostgreSQL database via Prisma ORM
- featureFull munch history with sidebar — all past generations persisted and accessible
- infraHosted on Vercel with automatic deploys from GitHub
- infraSEO foundation: sitemap.xml, robots.txt, OG image, JSON-LD, full metadata
- infraGoogle Tag Manager (GTM-WHP2DWLS) integrated for analytics
- infraCloudflare DNS, Resend transactional email, munch.video domain