DEV Community

Cover image for Finding a hackathon idea took me 14 hours and 50 dead ideas. So I automated the killing
Hashir
Hashir

Posted on

Finding a hackathon idea took me 14 hours and 50 dead ideas. So I automated the killing

Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady Submission πŸ¦₯

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady

What I Built

October 20. I needed one idea for this hackathon.

Fourteen hours later I had killed roughly 50 of them by hand. Every single one already existed. I would think of something, search it four different ways, find the product that already did it, and start again.

I asked three different AIs for help. Their five best pitches were all already built too. 0-for-5.

The building was never the hard part. Finding something that wasn't already done was the whole day.

So I built the thing that would have saved it.

Knell β€” the bell that tolls for already-built ideas.

You come in one of two ways:

  • Hackathon mode β€” paste the challenge theme (plus your skills and how much time you have). Knell generates 8 candidates that fit it.
  • Build an app mode β€” you have no idea at all. You bring yourself: your stack, the worlds you know, your time, what you want out of it. Knell invents ideas at that crossing.

Then every candidate gets swept β€” three checks, live against the internet:

  1. Existence β€” is this already built? Searched the way a person would search it, plus targeted sweeps of product directories and app stores. The closest matches get their actual pages read, not just snippets.
  2. Demand β€” is anyone asking for this? Complaints, forum threads, one-star reviews of neighbouring products, "I wish there was an app that…" posts. Unbuilt can mean genius. It usually means nobody wants it.
  3. Incumbent quality β€” if it exists, is the existing version alive and good? A strong incumbent kills. A dead one is an opening.

Verdicts come back as DEAD, NO DEMAND, ZOMBIE GAP, or ALIVE. Survivors are ranked, with the evidence attached.

The rule the whole product is built on: a verdict without a link is an opinion.

It's enforced in code, not in the prompt. A DEAD verdict only stands if it carries at least one real receipt from the actual search results, plus a cause of death. If the judge tries to kill an idea without evidence, the killer fields get wiped and the verdict doesn't render as a kill. The model is not allowed to invent your competition.

Every kill goes into the graveyard. Before any new check spends a single search, it looks in the graveyard first. Dead ideas stay dead β€” and they get cheaper every time.

And before Knell had a name, I ran the sweep on names. It buried 9 of its own:

  • Verdikt β€” killed by tryverdikt.app. A validator of the same name.
  • Unbuilt β€” killed by unbuilt.me. "Don't build what already exists." Including this name.
  • FlipKit β€” killed by SnapSell. Photo to listing to posted, already done.
  • ApplyOnce β€” killed by a Chrome extension with the same name.
  • Morta β€” killed by morta.io, a construction company.
  • Vetta β€” killed by a recruitment AI.
  • Mortem β€” killed by the funeral-software crowd.
  • Mortiq β€” killed by MOTIQ, trademarked signage.
  • Premortem β€” killed by being a method, not a name.

Knell survived. It means the bell rung for a death β€” which is the product: it tolls, and it shows you the body.

Demo

Live on its .tech domain: https://www.knellai.tech

Give it a theme and watch 8 candidates get generated β€” then watch them die one by one, each with the link that killed it. Or run Build an app mode with your own stack and see what survives.

Code

GitHub logo mateir0 / knell

Knell is the death bell for already-built ideas. Give it a hackathon theme, or give it yourself, and it sweeps the internet for what already exists before naming what is worth building.

Knell

Knell is the death bell for already-built ideas.

You give it either a hackathon theme, or yourself β€” a developer who can build but has no idea what to build. Knell names candidate ideas, then sweeps the internet for each one: does it already exist, is anyone asking for it, and is the existing version any good. Ideas that are already built get killed, with the receipt that killed them. Survivors come back ranked, with evidence.

The two modes

Mode You give it It gives you
Hackathon A theme (and optionally your skills, context and time) 8 candidate ideas that fit the theme
Build an app Your stack, what you know or care about, time, goal, platform 8 candidate ideas that sit where your stack meets your worlds

Setup

Requires Node 20+ and npm.

npm install
cp .env.example .env.local   # optional: only if you want to change the model
…
Enter fullscreen mode Exit fullscreen mode

How I Built It

  • Next.js 15 + TypeScript + Tailwind v4 for the app.
  • Mastra runs the pipeline as two typed workflows: knell-generate, and knell-check (write queries β†’ build evidence β†’ judge β†’ validate). Failures travel through the workflow as typed data and get restored by the runner, instead of being swallowed as empty results.
  • SerpApi does the sweep, with Serper as fallback β€” the check has to see what a human Googling would see, because that manual Google is exactly the chore being automated. Search budget is enforced in code (≀28 searches per run), because search quota is the product's oxygen.
  • The model layer is just an endpoint. Generation and judging are separate calls to any OpenAI-compatible endpoint, set by environment variables. The repo defaults to a local open-weight model β€” Gemma running in Ollama, $0, offline. The live site runs a hosted model through the exact same switch. No code cares which one answers.
  • MongoDB Atlas holds the graveyard and run history β€” the agent's long-term memory. Cache-before-search lives here.
  • Sentry agent tracing covers every run end to end β€” generate, search, fetch, judge, graveyard spans β€” so any verdict can be audited afterwards, step by step, instead of trusted.

Why Does Open Innovation Matter?

Because a closed API would make this product a hostage.

Knell's judge has one job: kill ideas honestly. If that judge is a single vendor's model behind a single vendor's API, then my product's honesty is whatever their pricing, their rate limits, and their model's mood say it is this month. I can't swap it, I can't run it offline, and I definitely can't fine-tune it on my own kill data.

Open weights and an open harness fix all three:

  • Swap, don't rewrite. The model is an environment variable. Local Gemma for free and private, a hosted model when I want speed β€” same code, same prompts, same verdict format.
  • It can run on a laptop with no internet. The default setup in the repo is Ollama + Gemma. Your half-formed ideas never have to leave your machine to get judged.
  • The judge can become mine. Every real verdict Knell issues is a labeled training example. The repo ships the full loop β€” export the graveyard as training data, fine-tune a LoRA judge on Tinker, evaluate it against the current judge on verdict agreement and receipt validity β€” and the rule is written down: the tuned judge only ships if it beats the baseline on both. That loop only exists because the model layer is open. You cannot fine-tune a closed API on 50 corpses and keep the result.

Honest part: the fine-tune itself hasn't run yet. The pipeline is built and the data is accumulating; the run happens when the dataset is worth it, and the numbers will say whether it ships. I'm not claiming a trained judge I don't have.

The Lazy Payoff

The numbers, all measured on the live build:

  • Finding one idea by hand: 14 hours, ~50 manual kills.
  • One Knell run: 8 candidates generated and swept in minutes.
  • A fresh check on one idea: 10.1 seconds to judge and kill.
  • The same idea checked again: 1.2 seconds β€” the graveyard answered from memory and spent zero searches.

And yes, I used it this week β€” on itself. The name massacre above is a real Knell output, and the graveyard on the live site is the real kill list, not demo data.

That's the sloth philosophy applied to the worst chore in building: don't spend your energy finding out the hard way. Let the bell ring first.

Prize Categories

  • Best Use of Mastra
  • Best Use of MongoDB Atlas
  • Best Use of SerpApi
  • Best Use of Sentry Agent Tracing
  • Best Use of a .tech Domain

Top comments (0)