Portfolio Agent
This site's own concierge: a retrieval-augmented agent that answers questions about Javier, grounded in a curated corpus and live GitHub activity, with a published eval to back it.
Product
The shipped product: live link, the problem it solves, and the stack it runs on.
The problem
A portfolio can claim seniority; it is harder to prove it. The Portfolio Agent turns the claim into a working system: a grounded, cited chat that only answers from a real corpus, refuses everything off topic, pulls live commit data, traces every reply in public, and publishes its own accuracy score so nothing has to be taken on faith.
Stack
Screenshots

How I built it
Product requirements
Open the PRDThe full PRD lives in the repo. Open it above.
The Portfolio Agent runs as a LangGraph.js graph with four named nodes. The guardrail declines anything off topic or any prompt-injection attempt in a single redirect sentence, retrieve does a top-6 pgvector cosine search over the embedded corpus, the agent node runs deterministic tools (real GitHub commits, the published eval score), and answer composes a grounded, cited reply. Cost is engineered, not hoped for: all generation flows through OpenRouter on a prepaid key hard-capped at $5 a month at the billing layer, the visitor picks the answer model from a server-enforced allowlist, and if the credit is ever exhausted (an HTTP 402) the graph degrades to the Groq free tier with an honest caption instead of an outage. Every reply carries a public Langfuse trace with one span per node. The accuracy is measured, not asserted: a 40-question golden set (facts, live tools, guardrail probes, and Spanish) is graded by a free cross-family judge and published as a real table. The honest part is the iteration. The score moved from 92.5% to 100%, and every early miss was a judge limitation caught and fixed through a human review of disagreements, never a fabrication by the agent, whose anti-fabrication behavior is architectural: it answers from real tool output or says the lookup failed. Built in public with the agentic-dev-kit, one backlog item at a time, spec first.
Evaluation
The agent is measured, not asserted. A golden set runs on every build and the results are published here, straight from the committed JSON the agent itself reads.
100% on a 40-question golden set
Facts, live tools, guardrail probes, and Spanish, run against google/gemini-3.5-flash and graded by a cross-family judge (llama-3.3-70b-versatile, free tier). Measured 2026-07-07. Not a self-graded number: the judge is a different model family, and its disagreements were reviewed by hand.
| Category | Passed | Score |
|---|---|---|
| Facts | 20/20 | 100% |
| Live tools | 8/8 | 100% |
| Guardrails | 6/6 | 100% |
| Spanish | 6/6 | 100% |
| Overall | 40/40 | 100% |
Timeline
- milestoneJul 7, 2026
Chat UI, public Langfuse traces, and a published 100% eval (40-question golden set, cross-family judge)
- milestoneJul 7, 2026
Cost + guardrails: OpenRouter primary hard-capped at $5/mo, Groq free fallback on 402, Upstash rate limits and kill-switch
- milestoneJul 5, 2026
LangGraph graph (guardrail, retrieve, agent, answer) over a pgvector RAG corpus, streaming grounded cited answers
Recent commits
All commitsLive from GitHub, as of Aug 25, 2026
- c8d2847Jul 26, 2026
feat(web): blipsmith exhibit, an agent-playable deterministic synthesizer (#27)
- 0264d62Jul 15, 2026
feat(web): CV positioning to Full Stack Developer + SE fundamentals (#26)
- b44f715Jul 8, 2026
feat(web): reposition CV around generative AI + per-role tech lines (#25)
- e326167Jul 8, 2026
feat(web): refresh CV with metrics-led positioning + new projects (#24)
- c3a9758Jul 7, 2026
feat(agent): live exhibit screenshot + B11 deploy runbook and conventions (#23)
- 356ae6bJul 7, 2026
feat(agent): Portfolio Agent, a RAG concierge built in public (#22)
- 50fd69dJul 7, 2026
- 1fc861eJul 2, 2026
feat(web): positioning, conversion, and detail-page overhaul
Metrics
Each metric carries an honesty tag. Verified numbers read solid; targets and placeholders read muted.
Built the same way, every time.
Every exhibit runs the same loop: spec, implement, verify, ship. If you want this kind of work on your team, full-time or freelance, let's talk.