Noureddine RAMDI / Inside santifer/cv-santiago: a production-grade AI-powered portfolio with robust security and evaluation

Created Tue, 05 May 2026 16:46:42 +0000 Modified Sat, 23 May 2026 20:41:27 +0000

santifer/cv-santiago

An interactive portfolio CV with a production-grade AI chatbot might sound like overkill, but santifer/cv-santiago goes beyond a simple showcase. It combines advanced AI retrieval and generation techniques with serious operational rigor — including multi-layer prompt injection defenses, real-time jailbreak alerts, and a closed-loop evaluation system that generates tests from production failures. This is a rare example where an AI-powered personal project tackles AI security and observability head-on.

What santifer/cv-santiago is and how it’s built

At its core, santifer/cv-santiago is an interactive portfolio CV augmented with a sophisticated AI chatbot. Unlike typical static portfolios, this one supports dual-mode interaction: you can chat by text or use voice commands. The voice interface is powered by OpenAI’s Realtime API, while the text generation relies on Anthropic’s Claude Sonnet.

Under the hood, the chatbot uses an agentic Retrieval-Augmented Generation (RAG) pipeline. This pipeline employs a hybrid search strategy combining vector search with pgvector and lexical search with BM25. This hybrid approach aims to balance semantic understanding with precise keyword matching, which can improve retrieval quality in practice.

After retrieval, a reranking step powered by Claude Haiku refines the results. This reranking helps prioritize the most relevant pieces of information from the portfolio or supporting documents.

The front end is built with React 19 and TypeScript, providing a modern, type-safe framework for the interactive UI. The backend runs on Vercel Edge Functions, enabling low-latency execution close to the user, ideal for conversational AI workloads.

A standout architectural aspect is the closed-loop AI operations system. Interaction traces from the chatbot are continuously monitored and scored online. When failures or unexpected behaviors occur, the system automatically generates new tests based on these production failures. This feedback loop helps maintain and improve the chatbot’s performance over time.

LLMOps observability is handled through Langfuse, which provides detailed monitoring, traceability, and analytics for large language model-powered applications. This tooling is essential for understanding how the AI behaves in production and catching issues early.

The project implements 71 automated evaluation tests across 10 categories. These tests serve as quality gates to ensure the chatbot behaves as expected under various scenarios.

How santifer/cv-santiago approaches AI security and evaluation

What really sets this project apart is its focus on prompt injection defenses and operational robustness. AI prompt injection (or jailbreak) attacks are a known vulnerability in LLM-powered systems — malicious inputs can manipulate the AI’s behavior in unintended ways.

santifer/cv-santiago uses a 6-layer prompt injection defense system. While the analysis doesn’t detail each layer, such a multi-layered approach typically involves input sanitization, context management, prompt rewriting, runtime checks, and anomaly detection. The system also includes real-time jailbreak alerts, which notify operators immediately if suspicious prompt injection attempts are detected.

This proactive defense is critical for an AI chatbot exposed to public interaction, especially when it can execute code or access sensitive data.

The closed-loop evaluation pipeline complements this security approach. By continuously monitoring production interactions and automatically generating tests from any failures or unexpected behavior, the system can quickly adapt to new attack vectors or edge cases. This kind of automated feedback loop isn’t common in personal portfolio projects — it’s more typical of enterprise AI systems.

The hybrid search mechanism using both pgvector and BM25 is another key technical strength. Pure vector search can sometimes miss precise keyword matches, while pure lexical search might miss semantic similarity. Combining them allows the system to cover both bases, improving relevance.

Using Claude Haiku for reranking adds an additional semantic layer to filter retrieval results. Haiku is a lighter-weight LLM variant suitable for fast reranking, helping keep latency low while improving output quality.

The combination of modern React 19 with TypeScript ensures the UI code is maintainable and type-safe, which is important for a complex interactive app. Deploying on Vercel Edge Functions aligns well with the need for global low-latency conversational AI.

Finally, Langfuse integration gives developers deep visibility into the model’s behavior in production, including token usage, prompt completions, and error cases. This observability is essential for real-world AI applications.

Quick start

git clone https://github.com/santifer/cv-santiago.git
cd cv-santiago
npm install
npm run dev

Open localhost:5173 in your browser to start interacting with the portfolio and AI chatbot.

Environment variables

The project requires some environment variables, but these are not detailed in the analysis. You will likely need API keys for OpenAI Realtime API (for voice) and Anthropic Claude APIs (for text generation and reranking).

verdict

santifer/cv-santiago is not your average portfolio. It demonstrates how to run an AI chatbot in production with layered security defenses, comprehensive evaluation tests, and real-time operational monitoring.

The repo is relevant for developers interested in AI productization, LLMOps, and prompt injection mitigation strategies. It’s a smart example of how to build a sophisticated AI interface on top of a personal project.

That said, the architecture is complex, and the technologies involved require some familiarity with TypeScript, React, serverless functions, and LLM APIs. The 6-layer prompt injection defense and closed-loop evaluation pipeline especially signal a project designed for serious AI experimentation rather than a simple demo.

If you want to see how an AI-powered portfolio can also double as a testbed for production-grade AI security and observability, santifer/cv-santiago is worth a deep look.


→ GitHub Repo: santifer/cv-santiago ⭐ 525 · HTML