I've been building websites for clients for years. And every time
I looked at their sites, I saw the same problems — unclear CTAs,
hero sections that try to say everything at once, cookie-cutter
layouts that put the booking form three scrolls deep.
The feedback I'd give them privately was always more honest than
what anyone would write in a formal audit. So I built a tool that
does exactly that.
What it does
knallhart.dev does one thing:
- You submit a URL and your email
- Pay €10 via Stripe
- Our service takes a full-page Playwright screenshot
- Sends it to Gemini 2.5 Flash with a brutally honest prompt
- You get an email with 3 specific critiques + actionable fixes
No dashboards, no subscriptions, no 47-point audit template.
Just three things that are actually wrong and how to fix them.
The tech stack
- Next.js on Vercel (frontend + webhook handling)
- Playwright for full-page screenshots (headless Chromium)
- Gemini 2.5 Flash for the AI analysis
- Stripe for payments
- Resend for email delivery
The hardest part was getting Playwright to reliably handle
lazy loading on modern sites. The trick: scroll until
window.scrollY stops changing rather than calculating
scrollHeight upfront — that value is unreliable on
too many sites.
Real example output
Here's what it said about basecamp.com:
Welcome to Visual Overload — Seriously, did a screenshot
gallery throw up on your hero section? "Refreshingly
straightforward" indeed, if "straightforward" means immediately
overwhelming me with a static, unreadable dump of your entire
application UI before I even know what Basecamp is.
Fix: Replace the dense UI screenshots with a clean,
aspirational visual that highlights benefits, not features.
The Great Wall of Founder's Text — A full-page novel
from the co-founder right after being visually assaulted.
This isn't a fireside chat; it's a product page.
Fix: Break it into scannable sections. Move the full letter
to an About page.
Testimonial Tsunami — Nine testimonials in a 3x3 grid
and then a button promising a thousand more. This isn't
social proof; it's a marathon reading challenge.
Fix: 2-3 high-impact quotes max, placed near relevant features.
What I learned
Gemini 2.5 Flash is surprisingly good at visual critique
when you give it proper context. The prompt matters a lot —
telling it this is a full-page desktop screenshot, that fixed
elements may be mispositioned, and to focus on the first 900px
as the critical first impression made a huge difference in
output quality.
Bot protection is a real problem. Large e-commerce sites
(Otto, Zalando) detect headless browsers immediately and serve
a gray placeholder. I handle this by checking screenshot file
size before sending to Gemini — anything suspiciously small
triggers an automatic Stripe refund.
Serverless + async don't mix the way you think.
On Vercel, fire-and-forget async operations get killed the
moment you return a response. You have to await the service
call even if the service itself handles things asynchronously.
Try it
If you want your site roasted: knallhart.dev
If you have questions about the build, drop them in the comments.
Top comments (0)