Monica’s Digital Twin

A reliable conversational agent designed to say “I don’t know.”

Solo designer and engineer · Live since May 2026 · Python, OpenAI, ChromaDB, Gradio

The problem

A recruiter or hiring manager wants fast, accurate answers about me. A chatbot that invents facts is worse than no chatbot. The question: how does a public AI earn trust with strangers?

The result

  • A public agent grounded in retrieved source documents, live since May 2026.
  • 66-case golden question set graded by an LLM judge; the 7 newest cases (streaming and hardening) pass 7/7.
  • 12 attack tests run against the real request handler.

Key design decisions

  1. Honesty is the feature. If the sources cannot answer, it says “I don’t know” and tells me, instead of guessing. A gap becomes a to-do, not a hallucination.
  2. Escalate to a human. Hiring or collaboration interest triggers a push notification to my phone within seconds. The agent’s only real-world action is notifying a person.
  3. Answers you can trace. Every reply is built from retrieved passages with source attribution.
  4. It feels fast. Replies stream token by token, and errors become a clean retry message instead of a crash.
  5. Guardrails you can’t talk past. Private details are never disclosed, and a redaction guard runs on every streamed chunk. Forged conversation history is stripped.
  6. Built so each stage can be tested. Chunking, embedding, retrieval, context and generation are separate, so a bad answer can be traced to one stage.

How it earns trust: reliability and availability

  • Live and operating since May 2026. Hosted on Hugging Face Spaces.
  • Errors never crash a session. An embedding or API failure becomes a clean retry message and is logged for follow-up.
  • Abuse and cost bounds. Rate limits, a 2,000-character message cap, a 3-round tool-loop cap, a bounded request queue, and a monthly spend limit keep it available and affordable.
  • Measured, not assumed. The golden set, the attack tests, and latency are tracked per release.

How it fails safely

  • If it does not know: it says “I don’t know” and notifies a human. It never guesses.
  • If something breaks: embedding, API or tool errors become a clean retry message and are logged. One failure never crashes a session.
  • If someone abuses it: rate limits, a 2,000-character message cap, a 3-round tool-loop cap, a bounded request queue, and a monthly spend limit.
  • If someone tries to trick it: forged conversation history is stripped, private details are redacted even mid-stream, and 12 attack tests cover these paths.
  • How I know it works: a 66-case golden set graded by an LLM judge, with latency tracked per release.

What I would do next

  • Retrieval scoring (recall@k, MRR) and a regression gate on every deploy.
  • Usage metrics: p95 latency and cost per query.
  • Watch real visitor conversations to refine tone and escalation wording.

Skills shown

Conversational interface design, trust and transparency, guardrails, evals, observability, and shipping and operating AI in production.