Skip to content

SharkRoast

2025·SaaS / AICompleted
ReactNode.jsPostgreSQLRedisGemini APIClaude APIPuppeteerStripe

A SaaS platform where an AI Shark character delivers brutal yet actionable website audits. The Node.js backend orchestrates a Puppeteer scraping pool, 1500+ technology detection, and a dual-AI pipeline (Gemini 2.0 Flash for generation, Claude 3.5 Haiku for quality control). The React 19 frontend delivers a theatrical experience from scan to result. The admin dashboard manages roasts, newsletters, and articles. GDPR compliant with data encryption.

Context

Website owners struggle to get honest, actionable UX feedback. Design agencies are expensive, and automated audit tools generate dry technical reports that no one reads. SharkRoast reframes the audit as entertainment: an AI Shark character delivers a scathing yet technically grounded critique, sharp enough to motivate real change. Two products: the Self-Roast (€9.90, audit your own site) and the Shark Bomb (€4.90, anonymously send an audit to someone else's site).

Architecture

The project consists of three independent applications and an artificial intelligence pipeline.

The Node.js/Express backend is the core of the system. 14 Sequelize models structure data in PostgreSQL 16, while Redis 7 and BullMQ 5 orchestrate processing queues. A Puppeteer pool of 3 concurrent browsers handles scraping, screenshots (desktop, mobile, key sections), and 12-page PDF report generation. Wappalyzer detects over 1500 technologies on each audited site. A scanner checks for 12 exposed sensitive files (.env, .git, wp-config, etc.). Payments flow through Stripe Checkout, transactional emails through AWS SES, and assets (screenshots, certificates, PDFs) are stored on S3 with CloudFront distribution. The entire system is GDPR compliant: AES-256-GCM email encryption, DSAR and right-to-be-forgotten support. 24 specialized services cover the full codebase.

The dual-AI pipeline is the technical differentiator. Gemini 2.0 Flash generates the roast from scraped data: punchlines, verdict, per-category scores (design, UX, content, credibility), and priority recommendations. Claude 3.5 Haiku then performs quality control on 100% of generated roasts. Three modes based on score: REWRITE below 60 (full rewrite), POLISH between 60 and 84 (targeted improvements), VALIDATE above 85 (factual verification). This dual-model architecture ensures no roast ships without validation.

The React 19 frontend is an SPA built with Vite 7, React Router 7, and vanilla CSS. The aesthetic is dark and edgy, true to the Shark character. 14 pages compose a theatrical user journey: URL submission on the home page, ECG animation during pre-payment analysis, unlock page with hook preview and Stripe payment, waiting room with real-time polling and progressive phases, then the result page with animated score gauge, confetti, per-category verdicts, downloadable certificate, and social sharing buttons. Shark Bomb enables anonymous audits. The Wall of Shame archives public roasts. The Gazette serves as an editorial blog. Google Analytics 4 is integrated with Consent Mode v2.

The admin dashboard is a separate React 19 application with TanStack Query 5, Tailwind CSS, Shadcn/ui, and Recharts. It provides a real-time dashboard with statistics, system health, and queue visualization. Admins can retry failed roasts individually or in batch, manage promo codes (full CRUD), run the newsletter (subscribers, editions, test/approve/reject workflow, readiness checks), and generate AI articles for the Gazette across 6 categories. A moderation module handles email banning and archive exclusion.

Technical challenges

Dual-AI pipeline with systematic quality control. Chaining two different LLMs reliably introduces coordination challenges: Gemini generates, Claude validates, and each model has its own failure modes. Retry logic adjusts temperature and tokens on each attempt. A circuit breaker protects the pipeline if Claude is unavailable during POLISH or VALIDATE modes — the roast passes unchanged rather than blocking. The core challenge remains balancing humor with actionable recommendations: the critique must sting enough to be memorable without sacrificing technical value.

Robust scraping at scale. The Puppeteer pool manages 3 concurrent Chromium browsers with full lifecycle management: allocation, crash recovery, memory cleanup. Each audited site presents unique challenges: SPAs that load content via JavaScript, authentication walls, bot protection, cookie popups to dismiss before captures. The stealth plugin bypasses basic detection. DOM investigation extracts UX signals (navigation, CTAs, SEO, accessibility) from radically different site architectures.

Real-time theatrical experience. Rather than a standard loading spinner, the frontend builds a dramatic experience: the ECG animation during pre-payment analysis, polling with progressive phases in the waiting room (observation, AI analysis, verdict writing), and the payoff with the animated score gauge, color-coded confetti based on score, and certificate generation. The technical challenge is managing the asynchronous gap between Stripe payment and roast delivery, with an adaptive polling pattern (3s → 6s → 10s) and rotating themed messages to maintain engagement.

Project scale

  • Backend: 14 Sequelize models, 24 specialized services, BullMQ (roast + email queues), Puppeteer pool with 3 browsers, 432+ Jest tests
  • AI: dual pipeline Gemini 2.0 Flash + Claude 3.5 Haiku, 21 weighted-signal scoring
  • Frontend: 14 pages, dark aesthetic, theatrical animations (ECG, gauge, confetti, certificate), multi-platform sharing
  • Admin: real-time dashboard, Recharts, newsletter management, AI article generation (6 categories), content moderation
  • Infrastructure: Stripe payments, AWS SES/S3/CloudFront, multi-stage Docker, Sentry, GDPR (AES-256-GCM encryption, DSAR, RTBF)

Current status

All three repositories (backend, frontend, admin) are functional with the complete user journey from URL submission to roast delivery with PDF report. The dual-AI pipeline, Puppeteer scraping pool, and Stripe payment integration are operational. Next steps are production deployment and the public launch of SharkRoast.io.

View project →