Ground project and experience claims in source-linked evidence.
Portfolio
Agentic RAG
A live technical concierge that retrieves verified evidence before it answers—and says when the portfolio cannot support a claim.
A recruiter needs evidence—not a general-purpose chatbot.
The agent must answer exact facts, compare systems, and map a job description to demonstrated experience. It must also recognize when a request—such as solving an unrelated coding problem—does not belong to the portfolio at all. Fluency is secondary to scope, traceability, predictable cost, and honest claim boundaries.
Map requirements to proof and expose unsupported gaps.
Reject general coding and assistant tasks before paid services run.
Decide whether the request deserves an AI call.
A local preflight gate runs before embeddings, vector search, or the Responses API. It protects the recruiter experience and the API budget without pretending that retrieval planning is a domain classifier.
Question, follow-up, or job description
IP window · portfolio signals · conversation limit
General coding task → contact Ying
0 model · 0 embedding tokensWork permit, education, contact
0 model tokensPortfolio Q&A or job fit
paid path begins hereUsage policy: blocked requests still count toward the IP and conversational limits, but they never trigger retrieval or generation.
Turn project pages into evidence the agent can cite.
Each system is decomposed into section-level chunks for its problem, architecture, algorithms, validation, contribution, and limitations. Every chunk keeps its project ID, source URL, keywords, and corpus version.
Reviewed project narratives and verified recruiter facts.
Small, section-specific claims with source metadata.
Local lexical corpus + Firestore vector embeddings.
The UI exposes the page supporting each answer.
One bounded loop connects planning, tools, and evidence.
For an in-scope complex request, deterministic planning first constrains the relevant projects. The model then requests evidence through a strict, read-only function. Backend code validates the arguments, executes retrieval, and returns structured tool output. A second and final model call synthesizes the answer with tool use disabled.
Responses API receives the question, allowed project scope, and one tool.
Strict schema: query, project IDs, result limit.
Validate arguments, retrieve evidence, return structured output.
Tool choice is none. Answer, gaps, and source links are produced.
Project names, frameworks, metrics, and named technologies.
Query embedding → Firestore cosine KNN over verified chunks.
Fuse rankings and preserve planned project coverage.
The same evidence engine serves two recruiter tasks.
Handles technical details, ownership, comparisons, validation, and limitations without searching irrelevant projects.
Maps requirements to demonstrated proof, recommends the relevant résumé, and labels unsupported skills instead of inferring them.
Failures, abuse, and cost are part of reliability.
Local scope gate, IP request window, conversational cap, daily budget, and organization hard limit.
Embedding or Firestore failure degrades to the local lexical corpus.
Job fit can still return supported evidence and explicit gaps.
Session counts fall back to memory; operational events fall back to JSONL.
The model can search evidence; it cannot mutate portfolio data.
Operational logs retain workflow and evidence IDs, not recruiter content.
Regression tests cover routes—not only final prose.
The suite tests FAQ routing, off-domain code rejection, workflow detection, retrieval scope, cross-project coverage, source exposure, résumé selection, unsupported claims, and dependency fallbacks. The next evaluation layer measures retrieval Recall@K, citation correctness, refusal precision, unsupported-claim rate, latency, and estimated cost.