Inspiration
Small business owners get cold emails every week saying their website is broken. Some of it is true. Much of it is a scary sales pitch that nobody could check from outside the site. Owners can't tell which is which, so they either ignore all of it or pay for problems that were made up.
What it does
You paste the email and type your site address. Claim Check lists every claim in the email, in order. It loads your home page once and gives each claim a verdict: True or False, with the line from your page that shows it, or Can't be checked for claims about rankings, penalties, traffic, competitors or hackers, which nobody can see from outside the site. It stores nothing.
How we built it
It's one Cloudflare Worker with no dependencies and no AI key. A fixed claim library matches the email's wording clause by clause. One fetch of the home page answers each claim: title, H1, meta description, viewport, https, tap-to-call links, image alt text, up to 10 broken links, page weight, WordPress version on show, and whether the site loads at all. It was planned with the Devpost Learn skills (scope.md, prd.md and spec.md are in the repo's devpost folder) and built in four small slices. It has 29 tests and runs with node --test.
Challenges we ran into
Real audit emails pack several claims into one sentence ("it's slow, has broken links, and your title is missing"). Splitting by sentence lost two of them, so the finder now splits by clause. Some sites block automated visitors, so Claim Check says it couldn't open the site rather than guessing.
What we learned
Planning before building kept the scope small. Every new claim type stayed one library entry, one check and its tests, with no AI layer bolted on.
What's next for Claim Check
Checking pages beyond the home page, and adding more claim phrasings from real emails.
Log in or sign up for Devpost to join the conversation.