AI output is never evidence
Citations are enforced in code, not in prompts — ungrounded claims are rejected.
see attached: apps/api/app/llm/guardrails.py ↗SUBJECT: STARTUP IDEA · OPENED OCT 2026 — PRESENT
Validate startup ideas with evidence, not opinions. Founders “validate” by asking people if they like an idea, and AI research tools confidently invent sources.
Preuve turns a startup idea into a hypothesis, open unknowns and target customer profiles, imports web research and keeps only the quotes it can verify on the live page, then maps competitors and scores prospects — with every AI statement labelled fact, inference or assumption.
An LLM breaks the idea into a hypothesis, unknowns and customer profiles, each scored on a weighted rubric.
A versioned Claude Code skill researches the idea and writes a schema-checked research pack.
Preuve fetches every cited page itself and keeps a quote only if it appears verbatim.
Competitors survive only if their cited evidence survives; re-imports merge without overwriting edits.
Companies and contacts get a deterministic, explainable lead score backed by stored evidence.
Preuve re-fetches each cited page itself. A quote survives only if it is really there — otherwise it comes off the board.
“We still email PDFs of site photos every Friday.”
source: interview notes · fetched & matched
VERIFIED“Progress reports take my PM most of a day.”
source: interview notes · fetched & matched
VERIFIED“Everyone in construction hates their software.”
source: interview notes · fetched & matched
QUOTE NOT FOUND* Illustrative quotes. The verification rule is the real one.
A “fact” without evidence fails validation; citing a missing source raises an error.
Tolerant of smart quotes, dashes and ellipses — strict about the words.
Local Qwen for small tasks, Gemini for synthesis, with validation, retries and fallbacks.
Every point in a score shows its reason and evidence ids.
Idea pages with verification badges, import history and competitor panels.
Citations are enforced in code, not in prompts — ungrounded claims are rejected.
see attached: apps/api/app/llm/guardrails.py ↗Claude Code researches; Preuve independently re-fetches every page to check each quote.
see attached: apps/api/app/modules/research/pack.py ↗NFKC normalisation, zero-width stripping, ellipsis-split ordered fragments of 8+ characters.
see attached: apps/api/app/modules/research/matching.py ↗Status: In progress — intake, research verification and competitors are done; prospect scoring is being built.
Open the case files on GitHub ↗