Inspiration

We've all been there. You spend 48 hours straight building a technically brilliant hackathon project—clean code, perfect architecture, innovative features—and then you throw together a landing page in 15 minutes. The judges land on it, get confused, and click away. Your project dies not because it's bad, but because your landing page couldn't communicate its value in 5 seconds.

Most feedback loops for landing pages are broken. Design consultants cost $400/hour. Co-founders say "yeah, looks good" to be polite. User testing takes days. We realized that if we could compress that feedback loop into 30 seconds using AI, we could save builders from the #1 reason great projects fail: poor first impressions.

That's why we built Ship Score.

What it does

Ship Score is an AI-powered landing page critique tool that gives you instant, brutally honest feedback on any URL. Here's how it works:

Paste any URL—yours, a competitor's, or the one you can't stop thinking about.

Our edge scraper fetches the page and extracts the raw signals: title, meta, copy, structure.

An AI senior PM—modeled on the taste of people who ship at Linear, Stripe, and Figma—judges it across four criteria:

  1. Product Thinking (0-25): Is the problem worth solving? Is the audience clear?
  2. Craft (0-25): Is the experience coherent? Is the copy intentional?
  3. Originality (0-25): Does it feel fresh and distinct?
  4. Shippedness (0-25): Is it a real, working product a stranger could use?

You get a total score (0-100) and a clear verdict: SHIP IT, FIX IT FIRST, or KILL IT—plus specific, actionable reasons for each score.

No corporate hedging. No polite lies. Just the truth you need to actually improve.

How we built it

We built Ship Score to be fast, reliable, and production-ready. Here's our tech stack:

Frontend & Routing: React 19 with TanStack Start v1 (full-stack framework) and TanStack Query for data fetching.

Build Tool & Styling: Vite 7 with Tailwind CSS v4 (custom typography using Fraunces & JetBrains Mono for an editorial feel)

AI Backend: Google Gemini-3-Flash-Preview via the Lovable AI Gateway, integrated with the Vercel AI SDK for streaming responses

Edge Computing: Custom raw-HTML scraper running on Edge Workers (Cloudflare Workerd-compatible) for sub-2-second page fetches

Analytics & Verification: Novus.ai tracking script installed at the root level (__root.tsx) to log every session, URL submission, and score

Key Technical Decisions:

Edge scraping over Puppeteer: Traditional headless browsers take 5-10 seconds and cost significant compute. We wrote an optimized raw HTML parser that strips styling and JavaScript, delivering results in under 2 seconds at 1/10th the cost.

Deterministic JSON extraction: Preview models (like Gemini-3-Flash) don't always return strict JSON. We built a robust fallback extractJson function using regex to isolate the payload from any markdown wrappers.

Root-level Novus integration: Instead of bolting analytics on as an afterthought, we embedded Novus at the application root to capture granular telemetry from the first user interaction.

Challenges we ran into

  1. Getting Fast, Clean HTML at the Edge The biggest challenge was fetching and parsing pages quickly without spinning up heavy browsers. Most solutions (Puppeteer, Playwright) are too slow and expensive for real-time use. Our solution: a custom edge-native scraper that fetches raw HTML, strips non-content elements, and extracts metadata (title, meta tags, visible text) in pure JavaScript. For 90% of landing pages, it works in <2 seconds.

  2. Making Gemini Output Reliable JSON Gemini-3-Flash-Preview is powerful but chatty. It loves to wrap JSON in markdown code blocks or add explanatory text. We solved this with a two-step approach: first, we prompt-engineered it to "respond only with valid JSON, no explanations." Second, we built a robust extraction function that finds the first { and last } in the response and parses that—even if the model gets creative with formatting.

  3. Balancing "Brutal" with "Useful" We knew the product needed to be honest, but we didn't want to be mean for the sake of it. The challenge was designing a prompt that makes the AI critique like a senior PM—direct, specific, and focused on improvement—rather than a cynical troll. We iterated on the persona prompt heavily, testing it on dozens of landing pages until we found the right tone: "You're a senior PM at a top-tier product company. You're direct, witty, and have zero tolerance for fluff. Your goal is to help the builder improve, not to tear them down."

  4. Proving Shippedness with Novus The hackathon required Novus.ai installation so we integrated it at the root level, but the challenge was ensuring it captured the right events (URL submissions, scores generated, verdicts rendered) without slowing down the user experience. We solved this by using Novus's lightweight event tracking and validating the dashboard data live before submission.

Accomplishments that we're proud of

A working product: We went from idea to deployed, working product with real users. That's not a prototype—it's a shippable tool.

Sub-2-second response times: Our edge scraper and streaming AI integration deliver critiques faster than most human PMs can read a landing page.

Real user data: Novus.ai shows actual sessions, submissions, and scores. We don't just claim shippedness—we prove it.

A brand that sticks: "Your landing page is probably mid. Let's prove it." The tone is bold, memorable, and perfectly matched to the builder community.

The "Brutal but Useful" balance: Every roast includes specific, actionable feedback. Users leave with a clear path to improvement, not just a score.

What we learned

  1. Edge computing is a game-changer for real-time AI tools. For content analysis, raw HTML scraping at the edge delivers 80% of the value at 10% of the cost and latency. This is a pattern we'll reuse for future products.

  2. "Brutal honesty" is a feature, not a bug. In user testing, we found that people actually prefer the harsh truth over polite lies. They know their landing page has problems—they just need someone (or something) to tell them what they are. Honest, specific feedback is more valuable than vague praise.

  3. Prompt engineering is the new middleware. Getting LLMs to return structured data reliably requires a hybrid approach: clear prompts + deterministic parsing + fallback logic. Treat LLMs as probabilistic systems, not deterministic APIs.

What's next for Ship Score

Ship Score is just the beginning. Here's our roadmap:

Historical Tracking & Trends: Allow users to save scores and track improvements over time. "Your score went from 62 to 84 in two weeks."

Shareable Roast Cards: Generate shareable images with your score and verdict—perfect for social proof or team discussions.

Human-in-the-Loop: For paid users, offer a human PM review that combines AI scoring with expert commentary.

Browser Extension: A Chrome extension that analyzes any page you're on with one click—instant feedback on the fly.

API Access: Open the scoring engine as an API for other tools to integrate, creating a wider ecosystem.

Built With

  • cloudflare-workers-(edge)
  • css
  • fraunces
  • google-gemini-3-flash-preview
  • html
  • javascript
  • jetbrains-mono
  • lovable
  • lovable-ai-gateway
  • lucide-react
  • novus.ai
  • openai-compatible-api
  • react-19
  • tailwindcss-v4
  • tanstack-query
  • tanstack-router
  • typescript
  • vercel-ai-sdk
  • vite-7
Share this project:

Updates