DEV Community

Cover image for Haunt Audit: Exorcising Bad Website Copy with Open-Weight AI 👻
fab-pe
fab-pe

Posted on

Haunt Audit: Exorcising Bad Website Copy with Open-Weight AI 👻

Hacktoberfest Open-Source AI Challenge: Ghost in the Machine Submission 👻🌼

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine

What I Built

Haunt Audit is a spooky website copy inspector that helps small businesses find what’s haunting their messaging.

Users enter their business type, target audience and website copy. The app reveals up to three “hauntings,” each with a priority, a quote from the original text, an explanation and a practical fix.

It also generates an improved headline, introduction and call to action, ready to copy and review.

I interpreted the theme through the ghosts hiding in everyday websites:

  • Buried information: Details visitors need but can’t find in the supplied copy.
  • Ghosted visitors: Missing or unclear calls to action.
  • Cobweb copy: Generic wording that doesn’t explain what a business actually offers.

As a junior web developer building websites for small businesses, I wanted to make something playful that could also be useful beyond Halloween.

Demo

👻 Try Haunt Audit

Click Try an example to load sample business copy, then Reveal the Hauntings.

You can copy the improved text, restore your latest successful audit after refreshing, or clear it from your browser.

The app reviews the text you provide; it doesn’t crawl websites or perform technical SEO, accessibility or page-speed checks.

Code

View Haunt Audit on GitHub

How I Built It

I used Next.js, TypeScript and Tailwind CSS, with a Next.js API route handling the AI request.

The model is Qwen3-30B-A3B-Instruct-2507, an open-weight model accessed through OpenRouter. It performs the core analysis and generates the suggested improvements.

The request flow is:

  1. The browser submits the business context and website copy.
  2. The server validates the inputs with Zod.
  3. The server sends the audit instructions and copy to the model.
  4. The response is parsed and validated before being displayed.

I also check that each evidence quote appears in the submitted copy. If the model returns an inaccurate quote or an invalid response structure, the app reports an error rather than displaying it as a completed audit.

The API key stays on the server. The latest successful audit is saved in browser localStorage, and the app is deployed on Vercel.

This project changed up my usual React/Vite and Express stack. Building it step by step helped me practise Next.js server routes, TypeScript types and Tailwind styling.

Why Does Open Innovation Matter?

The open-weight model is what makes Haunt Audit work: it interprets the copy, identifies weaknesses and produces the rewrite.

Its downloadable weights give the project a path to self-hosting and experimentation beyond a single hosted service. I can adapt the prompts, evaluate different models and change how inference is provided without rebuilding the interface.

That flexibility became relevant during development. My first model choice had been deprecated, so I changed the configured model and continued using the same application flow.

The current demo uses hosted inference through OpenRouter. It requires an internet connection and sends submitted text to OpenRouter and its model provider. Local browser storage preserves the latest result; it does not make inference local.

Open weights give me more control over where the project could go next, including a self-hosted version.

The Spirit of It

The fun was turning familiar copy problems into something worth investigating.

“We can do it all” becomes a haunting: what does “all” actually include? A paragraph that ends without a next step becomes a ghosted visitor.

Testing also revealed a ghost inside the machine itself. Early rewrites added phrases such as “free quote” and “trusted” when the input hadn’t confirmed them. I tightened the instructions and added concrete examples to discourage unsupported claims.

It was a useful reminder that fluent AI output still needs review. Haunt Audit helps bring copy back to life—but the business owner gets the final word.

Top comments (0)