What This Series Builds
This series builds a working ecommerce system that proves you can have sophisticated customer intelligence without storing personal information.
What We Build How It Works...
Wednesday, 31 December 2025 20:00
//
14 minute read
In Part 1 we covered the philosophy: transparent segmentation without PII. Part 2 covers session profiles, signals, and segment definitions.
But first: how do you validate any of this without ever...
Wednesday, 31 December 2025 20:00
//
9 minute read
In Part 1 we covered the philosophy and series overview. In Part 1.1 we built the sample data generator.
Now let's build the core system. This part focuses on:
Zero-PII profile architecture -...
Wednesday, 31 December 2025 20:00
//
20 minute read
Yes and no, I've ALWAYS been able to have multiple ideas in my head at the same time and let them coalesce until it's something I can build (I gave up all the 'social life' parts so it's not ALL...
Tuesday, 30 December 2025 21:35
//
1 minute read
NuGet
npm
.NET
Node.js
This is Part 4 of the DocSummarizer series. See Part 1 for the architecture, Part 2 for the CLI tool, or Part 3 for the deep dive on embeddings.
The hard part of RAG isn't the...
Tuesday, 30 December 2025 17:00
//
16 minute read
Microservices have become the default "serious system" architecture.
If you want to sound mature, you talk about service meshes, event buses, distributed tracing, and "independent deployability". If...
Monday, 29 December 2025 20:00
//
23 minute read
HTTP didn't evolve. It was forced to change by physics, latency, and misuse.
Every version exists because the previous one hit a hard constraint. If you understand those constraints, you understand...
Sunday, 28 December 2025 18:00
//
23 minute read
Small and local LLMs are often framed as the cheap alternative to frontier models. That framing is wrong. They are not a degraded version of the same thing. They are a different architectural choice,...
Sunday, 28 December 2025 16:00
//
7 minute read
In Part 1, we explored why GraphRAG matters. Now let's build a minimum viable GraphRAG that works without per-chunk LLM calls - pragmatic, offline-first, and cheap enough to run on a laptop:
DuckDB...
Saturday, 27 December 2025 14:00
//
11 minute read
Your RAG system is great at "needle" questions: retrieve a few relevant chunks and synthesise an answer. It struggles with two common query types:
Sensemaking: "What are the main themes across this...
Friday, 26 December 2025 12:00
//
21 minute read
I keep seeing the same failure mode in "AI-powered" systems: LLMs are being asked to do jobs we already solved decades ago - badly, probabilistically, and without guarantees.
This isn't cutting edge....
Thursday, 25 December 2025 12:40
//
15 minute read
Most “chat with your data” systems make the same mistake: they treat an LLM as if it were a database.
They shove rows into context, embed chunks, or pick “representative samples” and hope the model...
Monday, 22 December 2025 18:30
//
6 minute read
This is Part 3 of the DocSummarizer series:
Part 1: Building a Document Summarizer with RAG - The architecture and why the pipeline approach beats naive LLM calls
Part 2: Using the Tool - Quick-start...
Sunday, 21 December 2025 12:00
//
30 minute read
GitHub release
.NET
Version
This is Part 2 of the DocSummarizer series. See Part 1 for the architecture and patterns, or Part 3 for the deep technical dive into embeddings and retrieval.
Turn...
Sunday, 21 December 2025 11:00
//
21 minute read
Here's the mistake everyone makes with document summarization: they extract the text and send as much as fits to an LLM. The LLM does its best with whatever landed in context, structure gets...
Sunday, 21 December 2025 10:00
//
13 minute read
📌 Note: This article teaches the fundamentals of web content extraction with LLMs using the simplest possible approach. For production use cases (web summarization, document analysis, agent tools),...
Friday, 19 December 2025 10:00
//
16 minute read
Series: Local LLMs for Data - Part 1 of 2
Here's the mistake everyone makes: they try to feed their CSV into an LLM. Don't. LLMs should generate queries, not consume data.
You've got a 500MB CSV file...
Thursday, 18 December 2025 10:00
//
18 minute read
I'm a .NET developer. When I started building LLM-powered systems, everyone pointed me toward LangChain. "It's the standard," they said. "All the examples use it." And they were right - if you're in...
Thursday, 18 December 2025 10:00
//
14 minute read
Native AOT promises to turn your .NET applications into tiny, self-contained executables that start instantly and run anywhere—no runtime installation required. It's magic when it works. But add...
Tuesday, 16 December 2025 15:00
//
23 minute read
Welcome to Part 9! In previous parts, we've built a robust RAG system that processes markdown blog posts and makes them searchable through semantic embeddings. Now it's time to expand our capabilities...
Monday, 15 December 2025 22:45
//
9 minute read