Skip to content

tsensei/WTF-Does-This-Company-Actually-Do

Repository files navigation

WTF Does This Company Actually Do?

Paste any URL. An AI agent scrapes the entire website, cross-references it against reviews, funding data, and news β€” then roasts their marketing BS out loud.

BYOK (Bring Your Own Keys) β€” you provide your own API keys. Nothing stored on our servers.

Built for ElevenHacks Hack #1: Firecrawl x ElevenLabs.


Demo Video

demo.mp4

Screenshots

Light Mode

Landing Analyzing
Landing - Light Analyzing - Light
Roasting Verdict
Roasting - Light Verdict - Light

Dark Mode

Landing Analyzing
Landing - Dark Analyzing - Dark
Roasting Verdict
Roasting - Dark Verdict - Dark

What It Does

  1. Enter your API keys β€” Anthropic, Firecrawl, and ElevenLabs (stored in your browser only)
  2. Paste a URL β€” any company website
  3. Hit "ROAST THIS SITE"
  4. Watch the AI research live β€” Claude autonomously scrapes pages, searches for reviews, funding data, news, and competitors
  5. Hear the roast β€” ElevenLabs TTS delivers a savage comedy roast out loud with a live retro terminal transcript
  6. Get the verdict β€” BS Score, one-liner, red flags, and social sharing

How It Works

BYOK Architecture

Your API keys are stored in your browser's localStorage and sent per-request over HTTPS. They are never persisted, logged, or stored on the server.

Browser (localStorage)
    |
    | Keys sent in POST body per request (HTTPS)
    |
    v
Next.js API Route
    |
    +-- /api/analyze
    |     |-- Creates Anthropic client with your key
    |     |-- Calls Firecrawl API with your key
    |     +-- Returns SSE stream of research events
    |
    +-- /api/speak
          |-- Calls ElevenLabs TTS with your key
          +-- Streams audio back to browser

The Analysis Pipeline

Claude Sonnet 4.6 runs a multi-turn tool-use loop β€” it decides what to scrape, what to search for, and how to combine the data.

User submits URL + keys
        |
Anthropic API (Claude Sonnet 4.6) receives the task
        |
Claude calls tools autonomously (up to 10 turns):
  -> scrape_url: reads landing page, /about, /pricing, /team, /blog
  -> search_web: finds reviews, funding, news, competitors
        |
Each tool call streams as an SSE event to the frontend
  -> Research feed updates in real-time
        |
Claude generates structured JSON:
  -> Voice script (for TTS)
  -> Verdict data (score, red flags, one-liner)
        |
ElevenLabs TTS streams audio chunks via MediaSource API
        |
Audio plays within ~200ms (no waiting for full generation)
        |
Frontend syncs live terminal transcript with audio playback

Firecrawl Integration

Firecrawl powers the research capabilities through two tools:

  • scrape_url β€” Scrapes any URL and returns clean markdown. Claude uses this to read landing pages, about pages, pricing pages, team pages, and blogs. It extracts hero copy, pricing tiers, team size, blog activity, testimonials, and buzzword density.

  • search_web β€” Searches the web and returns structured content from top results. Claude searches for reviews, Crunchbase funding data, recent news, competitor analysis, and social media presence.

Claude calls these tools autonomously in a multi-turn loop, reformulating queries if initial searches don't find what it needs.

ElevenLabs Integration

ElevenLabs Text-to-Speech converts Claude's roast script into natural speech using the Adam voice (the viral AI narration voice) with the eleven_turbo_v2_5 model for consistent, stable audio output.

Audio is streamed in real-time using the MediaSource API β€” playback begins within ~200ms of the first chunk arriving. On Safari (which lacks MediaSource for audio/mpeg), the player falls back gracefully to blob-based playback.

The frontend syncs a live terminal-style transcript with the audio playback β€” green monospace text appearing character-by-character as the voice speaks, with source annotations (// SOURCE: BLOG -> Dead since Oct 2024) woven inline.


Tech Stack

Layer Technology
Framework Next.js 16 (App Router)
Styling Tailwind CSS v4
AI Anthropic Claude Sonnet 4.6 (multi-turn tool-use loop)
Web Scraping Firecrawl API (/scrape + /search)
Voice ElevenLabs TTS API (Adam voice, turbo v2.5, streaming)
Real-time Server-Sent Events (SSE) + MediaSource API
Key Storage Browser localStorage (BYOK)
Design 8-Bit Neo-Brutalist aesthetic
Video Remotion (programmatic demo video generation)

Design System

The UI follows an 8-Bit Neo-Brutalist / Retro Arcade Tech aesthetic:

  • Typography: Press Start 2P (chunky pixel font) for headings, Space Mono (monospace) for all body/UI text
  • Colors: Off-white #F2F0EB background, stark black borders, electric blue #0055FF and bright orange #FF4400 accents, terminal green #00FF66
  • UI: 3px solid black borders, sharp 90-degree corners, zero border-radius, zero shadows
  • Graphics: Pixel-art decorations, [X] checkboxes, >_ terminal carets, >> arrows, retro window dots
  • Dark mode: #0C0C0C background, #333333 borders, same accent colors preserved

Getting Started

Prerequisites

  • Node.js 18+
  • pnpm

API Keys Required

You'll need keys from three services (all have free tiers):

Service Get your key at Used for
Anthropic console.anthropic.com AI analysis (Claude Sonnet 4.6)
Firecrawl firecrawl.dev Web scraping and search
ElevenLabs elevenlabs.io Text-to-speech voice

Install and Run

pnpm install
pnpm dev

Open http://localhost:3000 β€” you'll be prompted to enter your API keys on first visit.


Project Structure

src/
  app/
    layout.tsx              # Root layout, fonts (Press Start 2P + Space Mono)
    page.tsx                # Main page - key gating + 4-screen state machine
    globals.css             # Design tokens, light/dark themes
    api/
      analyze/route.ts      # SSE endpoint - Claude tool-use loop + Firecrawl
      speak/route.ts        # ElevenLabs TTS streaming endpoint
  components/
    key-setup.tsx           # BYOK key input screen
    url-input.tsx           # URL input + CTA
    research-feed.tsx       # Live research feed with [X] checkboxes
    voice-player.tsx        # Retro terminal transcript + audio player
    verdict-card.tsx        # Verdict card with BS Score
    share-buttons.tsx       # Social share actions
    theme-toggle.tsx        # Light/dark mode toggle
  lib/
    firecrawl-tools.ts      # Firecrawl API functions + tool definitions
    prompts.ts              # Roast system prompt
    types.ts                # Shared TypeScript types
product-video/              # Remotion project for demo video generation

The Roast

"Hundred fifty billion dollar market cap β€” and their tagline is 'Put AI to Work for People.' That's not a value proposition, that's a fortune cookie."

Every roast is backed by real data. The AI agent scrapes the actual website, searches for real reviews and funding data, then generates a savage comedy script referencing specific details β€” exact headlines, exact dates, exact numbers. No generic humor. Every punchline hits because it's true.

The roast prompt uses named comedy techniques: The Math Roast, The Time Roast, The Comparison Roast, The Funding Roast, The Copyright Roast. It escalates from devastating to career-ending and closes with a quotable one-liner that twists the company's own tagline.


Security

  • API keys are stored in your browser's localStorage only
  • Keys are sent per-request in the POST body over HTTPS
  • The server never logs, persists, or stores your keys
  • Keys exist in server memory only for the duration of each request
  • Each request creates a fresh API client β€” no shared state

Tags

#ElevenHacks @elevenlabsio @firecrawl_dev


License

MIT

About

Paste any URL. AI scrapes the website, cross-references reviews & funding data, then roasts their marketing BS β€” out loud. πŸ”₯

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages