honest-agent is a multi-tenant, embeddable AI support assistant. An owner feeds it their own content (PDFs, including scanned/image PDFs), drops one script tag on their site, and the widget answers visitors grounded only in that owner’s content — refusing, with an honest verdict, when it cannot ground an answer. The reliability and evaluation layer is the actual product, not a feature bolted onto a chatbot.
This site documents how the project was built. The product demo is private and shareable on request — there is no live demo link here, and there will not be one. This is a process log, not a product front door.
Every day of the build is listed below from day one, most still marked Upcoming, so the full intended arc is visible before it happens — not just what has landed so far.
| Day | Goal | Status |
|---|
| Milestone 0 | Set up the codebase so it reads as senior and so AI coding agents can work in it without drifting, before writing a single feature. | Done |
| Day 1 | Before any answer engine exists, build the doors: three different kinds of caller, each proving who it is in its own way. | Done |
| Day 2 | Prove one customer can never see another customer's data: RLS forced in Postgres, two Weaviate tenants, a test that attacks the isolation rather than just checking it. | Done |
| Day 3 | OCR/vision PDF spike: native text to gated OCR to Gemini-vision for image pages; poison PDFs parsed in a subprocess to a dead-letter queue. | Done |
| Day 4 | Ingestion end-to-end: presigned upload, queue, idempotent upsert, status, dead-letter queue, backpressure. Plus the one-hour Weaviate-hosting spike so Day 9's deploy isn't ambushed. | Upcoming |
| Day 5 | Agent + grounded answer: PydanticAI, tenant-scoped hybrid retrieval, Gemini behind the interface, typed verdict. | Upcoming |
| Day 6 | Refusal + prompt-injection guardrail: honest refusal as a first-class outcome; pre-screen and spotlighting; blocks 'ignore previous instructions'-style attacks. | Upcoming |
| Day 7 | Observability + the non-flapping eval gate: Logfire, Sentry, DeepEval golden set, the three-lane DAG gate in CI. | Upcoming |
| Day 8 | Red to green: push a bad change, CI goes red, fix it, CI goes green, reproducibly. Plus an agentic metric and the online referenceless scorer. | Upcoming |
| Day 9 | Minimal dashboard + deploy to a hosted URL, seed two tenants (dev docs), kept private/shareable. | Upcoming |
| Day 10 | Embeddable Lit/Shadow-DOM widget: isolated, fetch-streaming, CDN bundle, works on three host pages without breaking them. | Upcoming |
| Day 11 | Injection demo on the live URL (refuse + resist) + adversarial block-rate + widget telemetry + flow polish. | Upcoming |
| Day 12 | Hardening + README essay with the week's real numbers + MCP OAuth and scale-seam write-ups + architecture diagram + a 60-90s clip. | Upcoming |
This is a resume artifact and a peer-facing archive: one page that proves the work happened, in order, with the failures left in. See About this site for the honesty rule this site holds itself to.