How to Force an AI to Generate 100% Valid JSON

Posted on by

Large language models don’t actually follow a format. They generate text by sampling probabilities, one token at a time. You can write the best prompt imaginable—« Respond only with valid JSON. This is extremely important. »—and the model will still occasionally get it wrong. Not every time, but often enough to break a production application. As long…

Is Prompt Engineering Dead? Why Loop Engineering Might Be the Next Skill for AI Engineers

Posted on by

« I don’t write prompts anymore. I build loops. » Several major figures in AI have been repeating some version of this sentence for a few months now, and it’s worth pausing on. Boris Cherny, the creator of Claude Code, explained in an interview that he barely writes prompts himself anymore. His work now consists of building…

RAGAS vs DeepEval: Exploratory Dataset Analysis or a CI/CD Quality Gate?

Posted on by

RAGAS and DeepEval both score RAG systems: faithfulness, context precision, contextual relevancy. The metrics overlap 80%. What separates them is where and how you use them. RAGAS was born from a research paper. DeepEval was born from a CI/CD need. It shows in both APIs, and it determines which one you should install first. On…

Why Vector Search Alone Isn’t Enough — And How the Retrieve → Re-rank Pipeline Fixes It

Posted on by

I used to think vector search was enough.

It isn’t.

Embeddings capture the overall meaning of a text, not its fine-grained requirements.

And when you search for ** »React Senior Paris »** and get ** »React Junior Lyon »** as the top result, that’s exactly the problem: a search engine that understands the domain, but not the actual query.

I wrote a deep dive on the **Retrieve → Re-rank** pipeline: why Dense Retrieval alone eventually hits its limits, how Cross-Encoders fix the problem, and how the two work together in modern RAG architectures.

DDD, Hexagonal Architecture & CQRS with Symfony and Doctrine

Posted on by

Example of a Symfony application using Domain-Driven Design (DDD) and Command Query Responsibility Segregation (CQRS) principles keeping the code as simple as possible. The whole code can be found here. Environment Setup Needed tools Install Docker Clone this project: git clone https://github.com/salletti/symfony-ddd-example.git Move to the project folder: $ cd symfony-ddd-example Application execution If not already done, install Docker Compose Run docker-compose…