Skip to content

honest-agent — build log

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.

DayGoalStatus
Milestone 0Set 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 1Before any answer engine exists, build the doors: three different kinds of caller, each proving who it is in its own way.Done
Day 2Prove 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 3OCR/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 4Ingestion 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 5Agent + grounded answer: PydanticAI, tenant-scoped hybrid retrieval, Gemini behind the interface, typed verdict.Upcoming
Day 6Refusal + prompt-injection guardrail: honest refusal as a first-class outcome; pre-screen and spotlighting; blocks 'ignore previous instructions'-style attacks.Upcoming
Day 7Observability + the non-flapping eval gate: Logfire, Sentry, DeepEval golden set, the three-lane DAG gate in CI.Upcoming
Day 8Red 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 9Minimal dashboard + deploy to a hosted URL, seed two tenants (dev docs), kept private/shareable.Upcoming
Day 10Embeddable Lit/Shadow-DOM widget: isolated, fetch-streaming, CDN bundle, works on three host pages without breaking them.Upcoming
Day 11Injection demo on the live URL (refuse + resist) + adversarial block-rate + widget telemetry + flow polish.Upcoming
Day 12Hardening + 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.