Vedette Decide where AI is worth the investment.
Independent project built outside my employment.

The problem
AI proposals often arrive with confident savings figures and no trail back to the facts. A leader cannot tell which numbers came from the business and which were guessed.
What I built
An assessment tool that reads operational material, proposes AI opportunities, and scores each one against the source text it came from. The model proposes. Plain TypeScript calculates every ROI figure.
What works today
- Opportunities ranked by weighted scores across eight dimensions
- Every score opens to the sentence it was based on
- Assumptions are flagged and editable. ROI recalculates when you change one
The evidence
- Public demo, no login
- Public source code with architecture decision records
- 33 automated tests passing in CI
- Default-deny row-level security on all 18 database tables
The current limits
- ROI figures are projections from stated assumptions. There are no achieved results to report
- The demo company is fictional. The analysis is a stored result from a real model run over that fictional material
- Document upload, discovery interviews, and sign-in are planned, not built
How it works
- Next.js and TypeScript on Vercel, with Supabase Postgres and pgvector.
- One analysis agent called through the Vercel AI SDK. Its output is validated against a Zod schema before anything is stored.
- A pure TypeScript ROI engine computes every financial figure from inputs the model proposes, and recalculates in the browser when a reviewer edits one.
- An evidence table links each claim to the source it cites. A database trigger keeps every citation inside the same tenant and engagement.
Controls
- The model’s output schema has no currency fields. It proposes hours, headcount, and rates of change. Code does the math.
- Hourly rates come from a lookup keyed by role band, never from the model.
- A claim with no citation must be marked as an assumption, or validation fails and the call is retried.
- Default-deny row-level security on all 18 tables, multi-tenant by organization. The six database isolation tests need a live database and are skipped in CI.
Hard calls
Three agents, not nine
The first design had a specialist agent for every discovery step. Most were prompts, not agents, and every hop risked dropping evidence ids. Three agents with one schema boundary is something I can audit.
No dollar figure from the model
A number an executive will be held to has to be reproducible and arguable. A pure function is both. A model-written figure is neither.
Show the bad news
Three of the seven opportunities in the demo never pay back inside 36 months. That result is shown unedited, because a tool that only finds wins is not assessing anything.
Planned, not built
- Document upload and ingestion
- Adaptive discovery interviews
- Executive brief with a critic pass
- Sign-in. Unbuilt areas are labelled in the app rather than faked
My contribution
- Designed and built the product end to end: data model, agent boundary, ROI engine, and interface.
- Wrote the fictional company and its documents, including sources that contradict each other, so the demo has realistic enterprise material.
- Decided what the model may decide and what code must own, then enforced it in the schema.