killmyidea
Startup-idea evaluator that chooses kill, fix, or ship.
# Kill My Idea Describe a startup idea. Jev decides: **KILL IT**, **FIX IT** or **SHIP IT**. No generative LLM. One request asks [TypeSafe](https://typesafe.ai) Jev 10 questions in parallel: 8 plain indie-hacker questions scored 0–4, plus the category and whether the idea is understandable. ``` idea → Jev (8 scores) → each × 25 → weighted average → clarity gate → KILL / FIX / SHIP ``` ## 1. Install ```bash npm install ``` ## 2. Environment ```bash cp .env.example .env ``` ``` TYPESAFE_API_KEY=your_key ``` The key is only read by `api/evaluate.ts` and never reaches the browser. Successful evaluations are archived in SQLite at `data/analytics.sqlite` by default. Set `ANALYTICS_DB_PATH` to an absolute path on a persistent disk in production. Users can opt out per request with the checkbox below private history. `SITE_URL` (optional) sets the absolute URL used in the canonical and OG/Twitter tags, `robots.txt`, `sitemap.xml`, `/mcp.md` and `llms.txt` (generated at build time). It defaults to `https://killmyidea.biz`. The image itself is `public/og.png` (1200×630). For UI work without a key, set `TYPESAFE_MOCK=1`. The API then returns deterministic fake answers labelled `MOCK DATA` in the raw-data panel. Mock mode is ignored in production. ## 3. Run locally ```bash npm run dev # http://127.0.0.1:5317 (serves /api/* and /mcp/ too) npm test # unit tests npm run benchmark # balanced scoring benchmark; requires the app to be running ``` Every result has a collapsed "How Jev decided" panel with raw Jev answers, probabilities, confidence, the average, the verdict, latency and token usage. `?debug=1` opens it by default. ## 4. Build ```bash npm run build # typecheck + static build in dist/ ``` ## 5. Deploy (Laravel Forge) The site r