Loading...
Loading...
Build Your First Software Factory Execution Harness live Thursday, Oct 1, 12:00 PM ET
Oct 1, Reserve a seatInteractive courses, ebooks, and deep dives. Filter by type or skim the whole feed.
Build production agentic AI systems, from architecture to deployment.
Reverse-engineer how Claude Code works. Then build your own production AI coding agent from scratch.
Build MCP servers and clients from scratch. No more glue code.
Every AI tutorial assumes you know Python. This one doesn't.
Master the core building blocks of RAG, from embeddings to agentic retrieval.
From SELECT to production PostgreSQL mastery on 100k+ real e-commerce orders.
Build AI agents with pure Python. No LangChain. No CrewAI. No magic.
Battle-tested agent patterns. The reference guide that didn't exist until now.
Orchestrate specialized agents with LangGraph to analyze documents at production quality.
Build a Telegram AI assistant that remembers, uses tools, and runs its own background tasks.
Emit JSON logs with request IDs and OpenTelemetry spans across every tool call so you can click a trace and see exactly what your agent did.
Build a production-shaped FastAPI service with typed endpoints, Pydantic models, and a lifespan that loads a model once.
6 hands-on projects. 6 core AI skills. Zero fluff.
The prompting techniques senior AI engineers use daily, and most tutorials skip.
Write your own AI assistant in Python, one short file at a time. From one API call to a multi-agent system that remembers you, runs commands safely, and keeps its own schedule.
Write your own Redis in Python, one short file at a time. Sockets, the wire language, the store, expiry, persistence, fan-out, and a backup machine. Every line is yours to read.
Write your own Redis in Go, one short main.go at a time. Sockets, the wire language, the store, expiry, persistence, fan-out, and a backup machine. Pure standard library.
Write your own Redis in Node.js, one short .mjs at a time. Sockets, the wire language, the store, expiry, persistence, fan-out, and a backup machine. Pure standard library.
Write your own Redis in Rust on tokio, one short crate at a time. Sockets, the wire language, the store, expiry, persistence, fan-out, and a backup machine.
Write your own Redis in Ruby, one short server.rb at a time. Sockets, the wire language, the store, expiry, persistence, fan-out, and a backup machine. Pure standard library.
Write your own Redis in Elixir on the BEAM, one short server.exs at a time. Sockets, the wire language, the store, expiry, persistence, fan-out, and a backup machine.
Become the engineer who can ship the server, not just the screen.
Make the modern frontend stack finally make sense. From raw DOM to a Fullstack app you actually understand.
Become the backend engineer who can defend every design choice in a senior interview.
Stream LLM responses in real-time and master prompt engineering fundamentals.
Extract structured data from images with vision LLMs and Pydantic validation.
Hybrid retrieval with dense vectors, sparse keywords, RRF fusion, and cross-encoder reranking.
Build a grounded RAG chatbot with ChromaDB, web scraping, and cross-encoder reranking.
Add query rewriting, sub-graphs, PII scrubbing, and RAGAS scoring to a production RAG pipeline.
Orchestrate specialist agents with AutoGen GroupChat and a supervisor router.
Build a real-time voice AI agent with LiveKit, Deepgram, and tool calling.
Orchestrate specialized voice agents that hand off conversations without losing context.
Search the web, extract article content with BeautifulSoup, and synthesize cited answers with LLMs, like building a mini Perplexity.
Record audio in the browser, transcribe locally with Whisper, and clean output with an LLM pipeline.
Skip the vector database. Navigate document trees with an LLM agent and get cited answers.
Implement direct LLM chat, native tool RAG, and LangChain vector RAG in one Next.js app with the Vercel AI SDK.
Build a grounded YouTube video Q&A assistant with hybrid retrieval and clickable timestamps.
Build a conversational AI tutor over long PDFs with chapter-aware chunking and memory-backed retrieval.
Swap OpenAI, OpenRouter, Gemini, and Ollama behind one chat() function with automatic fallback.
Build a long-running, multi-turn agent with typed state, intent routing, and checkpointed memory.
Model multi-turn chat as a typed LangGraph state machine with streaming and thread memory.
Production FastAPI patterns for AI apps: SSE, jobs, CORS, probes, logs, Docker, graceful shutdown.
Build an MCP server that reviews GitHub pull requests end to end.
Ship a multi-step AI agent in one Next.js app with streaming tools and memory.
Route user messages to specialist subagents with a LangGraph supervisor and stream each one over SSE.
Build a multi-task NLP service powered by focused LLM prompts and per-task streaming.
Build a knowledge graph from raw text, ask natural-language questions over it, and beat vector RAG on multi-hop queries.
Build a zero-dependency coding agent in Go with tool calling, safety guards, and a distroless binary.
Ship a RAG service that survives real production traffic on Kubernetes.
Role-gated RAG chatbot: per-role document walls, session auth, rate limits, and an admin panel.
Ship a real-time phone voice agent over WebRTC with FastRTC, Whisper, and swappable TTS.
Architect an agent as seven composable layers with per-request traces.
Bronze, silver, gold warehouse patterns with DuckDB and pandas, rehearsed on a real dataset before you touch Airflow or Spark.
Orchestrate batch pipelines with Airflow and Spark, gate them with Great Expectations, and front the warehouse with a FastAPI control plane that triggers DAGs and serves datasets.
Run a twenty-service production data platform end to end: batch, streaming, warehouse, ML tracking, lineage, observability, and a typed FastAPI control plane.
Write a PySpark transform that runs identically locally and on AWS Glue 4.0. Ship via CodeBuild, validate with a local smoke run, and skip the surprise DPU bills.
Lambda to S3 to Glue PySpark to Iceberg in the Glue Data Catalog, queried by Snowflake as external tables. Airflow orchestrates. Terraform provisions. CodeBuild ships.
GCS to BigQuery to dbt star schema, with Cloud Run hosting the dbt runner and Cloud Build deploying on push. Airflow schedules the run. Terraform owns the infra.
Build a four-stage personalized recommender: two-tower retrieval, ranking, optional LLM rerank, served by FastAPI on local Postgres, Qdrant, and MLflow.
Which language should you build Redis in? I rebuilt it from scratch in six of them: Python, Go, Node.js, Rust, Ruby, and Elixir. Same architecture every time, t...
Param Harrison·May 21, 2026
Routing agents, relevance checks, reflection loops. The patterns that turn a RAG prototype into a self-improving system.
Event loops, tool contracts, memory tiers, evals, deploy flags. The agent patterns that survive production load.
Build a Claude Code-style agent: streaming loop, permission-governed tools, context management, sandboxing.
The patterns, budgets, and bulkheads that keep an AI system running when the model, the vendor, or the load turns against you.
Stop guessing. Start investigating. The four-phase forensic process for bugs that refuse to die.
HyDE, multi-query fan-out, decomposition, step-back. The rewriting layer that rescues vague user queries.
Indexing, HNSW vs IVF, hybrid wiring, scaling cost, migration. The vector DB reference you pin.
Clean, normalize, dedup, gate. The preprocessing layer that decides RAG quality before retrieval runs.
JSON schemas, validators, repair loops, grounding checks. Structured output that holds under load.
Extractive, abstractive, hierarchical, map-reduce. The summarization strategies that survive long context and tight budgets.
Unicode, tokenization, encoding, language, PII. The text cleaning rules that keep RAG retrieval honest.
Sandbox, timeout, allowlist, audit. The shell layer that lets a coding agent run commands without burning the host.
Streaming, tool events, state visualization, error recovery. The UX patterns that make coding agents usable.
Layout-preserving PDFs, AST-aware code, table extraction, multi-modal. The parsing layer RAG needs for real docs.
Your RAG returns different answers depending on whether the user's name sounds senior A junior engineer asks "how do I approve this PR?" The retriever pulls th...
Param Harrison·Apr 8, 2026
Choosing between pip, uv, and poetry for a Python AI service comes down to three things: how fast it installs, how trustworthy its lockfile is, and how long you...
Asep Bagja Priandana·Apr 7, 2026
Your agent retries a 400 Bad Request 5 times and your bill shows it The user sent a malformed prompt. Your agent got back a 400 Bad Request. Your retry loop di...
Ahmed Aleryani·Apr 6, 2026
Your eval scores are garbage because you picked the wrong judge You built an LLM-as-judge eval pipeline. You picked the cheapest model because "it's just gradi...
Sunil Samson Suresh·Apr 5, 2026
Your RAG scores 95 percent on relevancy and your users still complain You ran RAGAs. Relevancy came back at 0.94. You shipped it, declared victory, and opened ...
Sunil Samson Suresh·Apr 4, 2026
Your RAG planner returns a different JSON shape every single call You asked the LLM to "return a plan as JSON." On call 1 it returned {"steps": [...]}. On call...
Sunil Samson Suresh·Apr 3, 2026
Your RAG pipeline never says "I don't know" and you wonder if it is hallucinating Your pipeline handles every query confidently. Users ask in-scope questions a...
Sunil Samson Suresh·Apr 2, 2026
Your RAG pipeline has zero tests and you ship changes by running curl manually Your RAG pipeline works. You know because you ran 3 curl commands against the /c...
Sunil Samson Suresh·Apr 1, 2026
Your RAG answer sounds confident and is partly made up Your RAG pipeline retrieved the right chunks. The LLM wrote a fluent, confident answer. A user points ou...
Param Harrison·Mar 31, 2026
Your users ask "how does this work" and your retriever returns random chunks The user types "how does this work". Your retriever embeds the string and returns ...
Param Harrison·Mar 30, 2026
Your retriever returns 10 chunks and 6 of them are noise Your RAG retriever returns the top 10 chunks by vector similarity. You send all 10 to the final LLM. T...
Sunil Samson Suresh·Mar 29, 2026
Your retriever returns 5 chunks because the tutorial said 5 Every RAG tutorial uses k=5 for top-k retrieval. You shipped with k=5 because that is what the tuto...
Sunil Samson Suresh·Mar 28, 2026
Your RAG pipeline needs docs from 3 sources and you put them all in one index Your agent needs to answer questions using internal docs, a public knowledge base...
Sunil Samson Suresh·Mar 27, 2026
You reached for Pinecone before checking if FAISS already does the job You started a new RAG project. The tutorial you followed used Pinecone. You signed up, g...
Sunil Samson Suresh·Mar 26, 2026
The user reported a bug 3 minutes ago and you are still looking for the trace Slack ping: "My chat just gave me a wrong answer." You open Langfuse. You search ...
Sunil Samson Suresh·Mar 25, 2026
Your OpenAI bill doubled last month and you don't know why You opened the invoice. It is double last month's. Usage is up but not 2x. You have 1000 traces a da...
Sunil Samson Suresh·Mar 24, 2026
You have Langfuse for traces, Prometheus for metrics, and no single view You wired Langfuse into your agent and can now debug any individual trace. You also ad...
Sunil Samson Suresh·Mar 23, 2026
Your p95 latency is 8 seconds and you have no idea which step is slow Users complain the agent is slow. Your dashboard shows p95 at 8 seconds. You open the tra...
Ahmed Aleryani·Mar 22, 2026
Your agent works on your laptop and dies at 50 concurrent users You tested your agent by sending curl requests one at a time. All 10 requests worked. You shipp...
Ahmed Aleryani·Mar 21, 2026
You built an eval framework and nobody runs it You shipped LLM-as-a-judge. You shipped Ragas. You shipped a custom metric registry. All 3 work. Nobody on your ...
Sunil Samson Suresh·Mar 20, 2026
Your eval pipeline hardcodes metrics and you cannot add one without redeploying Your eval script imports RAGAS faithfulness, context precision, and answer rele...
Sunil Samson Suresh·Mar 19, 2026
Your LLM judge scored the same output 4 and 2 on two different runs You ran the eval. Your judge gave an output a 4 on correctness. You re-ran the eval with th...
Sunil Samson Suresh·Mar 18, 2026
You ship agent changes and measure quality by vibes Your team shipped an agent update. The retrieval looks better in a handful of queries you spot-checked. You...
Sunil Samson Suresh·Mar 17, 2026
Setting up the agent stack on a new laptop takes half a day A new engineer joins your team. Their first day looks like: install Postgres, install Redis, clone ...
Asep Bagja Priandana·Mar 16, 2026
Your OpenAI API key is baked into the Docker image and someone just cloned it You needed to pass an API key to a build step. You ran docker build --build-arg O...
Ahmed Aleryani·Mar 15, 2026
Your Docker build worked yesterday and now fails with a 500-line error trace You added one dependency. docker build now fails 4 minutes in with a wall of gcc e...
Asep Bagja Priandana·Mar 14, 2026
The production RAG reference. Chunking, retrieval, reranking, evaluation, failure modes.
Your frontend gets CORS errors and you set allow_origins=[""] to make them go away Your agent API lives on api.yourservice.com. Your frontend lives on app.your...
Ahmed Aleryani·Mar 13, 2026
Your LLM client is instantiated at module import time and you wonder why deploys are flaky Your agent service has client = AsyncAnthropic() at the top of llm.p...
Ahmed Aleryani·Mar 12, 2026
Your service leaks database connections until it dies at 2am Your FastAPI agent service runs fine for hours. Then it starts returning 500s. Logs say QueuePool ...
Asep Bagja Priandana·Mar 11, 2026
Your LangGraph demo works in a notebook and breaks behind FastAPI You prototyped your chatbot in a Jupyter notebook with LangGraph. State flows through the gra...
Ahmed Aleryani·Mar 10, 2026
Every route handler re-parses the JWT, re-hits the database, and you can't test any of it You shipped JWT auth for your agent API. Every route handler starts w...
Ahmed Aleryani·Mar 9, 2026
Your agent restarts and every conversation disappears A user is mid-conversation with your agent. You ship a deploy. The container restarts. The user sends the...
Ahmed Aleryani·Mar 8, 2026
Your route handler is the agent loop and you cannot test either Open your agent's /chat route. It is 180 lines. It parses the request, validates auth, loads a ...
Ahmed Aleryani·Mar 7, 2026
Your AI service image is 2.8 GB and takes 12 minutes to pull You Dockerized your agent service the way every tutorial shows: FROM python:3.12, COPY . ., RUN pi...
Asep Bagja Priandana·Mar 6, 2026
Your env vars are strings and your bugs prove it You set MAX_RETRIES=3 in your .env file. Your Python code reads os.environ.get('MAX_RETRIES') and passes it to...
Asep Bagja Priandana·Mar 5, 2026
Your agent codebase is a 900-line main.py and nobody wants to touch it You started with one file. Prompt, tool registry, agent loop, FastAPI routes, database s...
Ahmed Aleryani·Mar 4, 2026
Your agent is slow and you have no dashboard A user complains that the agent got slower over the last week. You check your logs. You grep for latency. You find...
Ahmed Aleryani·Mar 3, 2026
Your LangChain chain was fine until you needed a loop You built your first agent with a LangChain chain. Prompt template, LLM, output parser, done. It worked f...
Ahmed Aleryani·Mar 2, 2026
When the LLM provider went down, your whole agent went with it OpenAI had a 20-minute incident. Your service has retry logic with 3 attempts and exponential ba...
Ahmed Aleryani·Mar 1, 2026
Your agent goes down every time OpenAI has a bad afternoon A provider has a bad 30 minutes. Your agent starts returning 500s to users. Your on-call pager fires...
Ahmed Aleryani·Feb 28, 2026
Your agent works great until it doesn't, around message 40 The first 30 messages of an agent conversation are smooth. Then around message 40 or 50, quality dro...
Param Harrison·Feb 27, 2026
Your frontend validates, your backend trusts, and now you have a problem Your frontend has beautiful input validation. Max length is 500 characters. No HTML. N...
Ahmed Aleryani·Feb 26, 2026
You broke the API and nobody will let you ship again You added a required field to a response. Nothing crazy, just a metadata object that was nice-to-have on t...
Ahmed Aleryani·Feb 25, 2026
pip install takes 4 minutes and you do it 15 times a day You just added langchain to your production AI agent project. pip install runs for 4 minutes. You add ...
Asep Bagja Priandana·Feb 24, 2026
Your agent answered wrong and you have no idea why A user screenshots a bad answer and posts it in Slack. You ask which session. You get the ID. You grep produ...
Ahmed Aleryani·Feb 23, 2026
Your RAG graph has 18 nodes and you cannot find anything You started with a clean 6-node RAG graph. Then you added a reranker (+1 node). Then grounding (+2 nod...
Param Harrison·Feb 22, 2026
Your RAG pipeline is a mental model nobody shares Your RAG pipeline has 7 steps: query rewrite, vector retrieve, rerank, quote extract, grade, generate, and fa...
Param Harrison·Feb 21, 2026
Your RAG answers look confident and are half wrong You ask your RAG system "which 2 services were affected by the outage and why?" It returns a confident parag...
Sunil Samson Suresh·Feb 20, 2026
The reference for AI engineering interviews: scope by level, recurring questions, system design patterns, and portfolio shapes.
You picked an embedding model off a leaderboard and shipped. Now retrieval is bad. You picked the top embedding model from the MTEB leaderboard, shipped it, an...
Sunil Samson Suresh·Feb 19, 2026
Your retriever is returning half-sentences and you wonder why Your RAG pipeline chunks documents at every 500 characters with a fixed splitter, not a recursive...
Sunil Samson Suresh·Feb 18, 2026
Your agent forgets everything between sessions and it's driving you crazy You tell your agent "we use pytest, not unittest, and all our services live under src...
Ahmed Aleryani·Feb 17, 2026
Your agent keeps reimplementing the same helper, poorly Your agent has read_file, edit_file, run_bash. You ask it to "find all callers of validate_token and ad...
Ahmed Aleryani·Feb 16, 2026
Your agent's grep is reading binary files and returning node_modules Your coding agent needs to find usages of a function across the codebase. Your grep tool r...
Ahmed Aleryani·Feb 15, 2026
Your agent edited the wrong line and there is no undo You asked the agent to fix the bug on line 42 of auth.py. It ran edit_file with old="validate(token)" and...
Ahmed Aleryani·Feb 14, 2026
Your agent rebuild takes 8 minutes every time you touch one line You change a Python file in your agent. You run docker build. 8 minutes later it finishes. You...
Asep Bagja Priandana·Feb 13, 2026
Your agent had 3 tools and the code was clean. It has 15 now. You started with read_file, edit_file, run_bash. The dispatch block was a 10-line if/elif. Then y...
Ahmed Aleryani·Feb 12, 2026
Your agent took 30 seconds and your token expired A user kicks off a long agent task. The agent does its planning, calls 3 tools, hits the LLM twice, and final...
Ahmed Aleryani·Feb 11, 2026
One curl loop and your agent bill is $2000 You ship your agent. A friendly user writes a benchmarking script. The script hits your /chat endpoint in a tight lo...
Ahmed Aleryani·Feb 10, 2026
Your API just returned the password hash. Again. A user hits GET /users/me. Your handler loads the user row and returns it. Somewhere in the JSON body you see ...
Ahmed Aleryani·Feb 9, 2026
Your agent is multi-tenant. Your schema is not. You built the agent as a prototype. One user, one conversation, a messages table with a content column, and lif...
Ahmed Aleryani·Feb 8, 2026
Your agent works at 10 users and dies at 100 You load-test your agent service with 10 concurrent users. Everything is fine. You push it to 100 and the logs fil...
Ahmed Aleryani·Feb 7, 2026
Your agent's database is a giant JSON blob and you know it Open your agentic AI Postgres. Look at the agent_runs table. You will probably find a data column of...
Asep Bagja Priandana·Feb 6, 2026
Pure vector search is giving you half the answer You asked your RAG system "which customers did the new pricing affect, and which contracts are tied to them?" ...
Param Harrison·Feb 5, 2026
Your coding agent has a shell. Now what? The moment you give a coding agent a run_bash tool, the job changes. You are no longer building a model that produces ...
Ahmed Aleryani·Feb 4, 2026
You changed the retriever and you have no idea if it got better You swapped your embedding model, tuned your chunk size, added a reranker, and shipped. A week ...
Sunil Samson Suresh·Feb 3, 2026
Your RAG pipeline can't reason because you built a straight line Your first RAG pipeline is a straight line, not agentic, not planning anything: embed the ques...
Param Harrison·Feb 2, 2026
Single-pass RAG is the reason half your hard questions fail You ask your RAG system "what changed in the auth flow between v3 and v4 and why?" The retriever fe...
Param Harrison·Feb 1, 2026
Your RAG answer looked right and was still wrong You retrieve 5 chunks. You stuff them into a prompt that says "answer the question using only this context." Y...
Param Harrison·Jan 31, 2026
You picked chain_type='stuff' and your summary crashed above 50 pages You wired up a LangChain summarization chain in 5 minutes. It worked great on the test PD...
Param Harrison·Jan 30, 2026
Your RAG system sends whole pages when it should send sentences Your advanced RAG pipeline retrieves 5 chunks, each 800 tokens long. Total context: 4,000 token...
Param Harrison·Jan 29, 2026
The first coding agent you build should fit in 100 lines Most people learn coding agents the wrong way around. They install a framework, run a demo, and end up...
Param Harrison·Jan 28, 2026
Your agent container is running as root and you probably did not notice Pull any popular Python base image. Run docker run -it python:3.12 whoami. The answer i...
Ahmed Aleryani·Jan 27, 2026
Your LangGraph agent forgot everything when the server restarted You built a multi-step agent in LangGraph. It plans, calls tools, refines, and replies. On you...
Ahmed Aleryani·Jan 26, 2026
A coding agent is just a while loop you have not written yet Open up Claude Code, Cursor's agent mode, or Aider. Watch one work for 30 seconds. It reads a file...
Param Harrison·Jan 25, 2026
The most common way agent teams leak API keys Your agent has one .env file for every environment. It holds your real OpenAI key, your real Postgres URL, and DE...
Asep Bagja Priandana·Jan 24, 2026
You shipped an agent. Then you shipped it twice. Your agent works perfectly on your laptop. You wrap it in a FastAPI route, run uvicorn main:app --reload, send...
Ahmed Aleryani·Jan 23, 2026
What is The challenge? "Build a chatbot" is the new "Build a URL shortener." It sounds like a junior interview question, but in 2024, it is a distributed syste...
Param Harrison·Jan 22, 2026
We've all had the same thought: "I wish I could upload my bank statements, credit card bills, and investment portfolio to ChatGPT and just ask it to fix my fina...
Param Harrison·Nov 27, 2025
In [Part 1](/blog/architecting-coderabbit-ai-agent-at-scale), we built the Ingestion Engine to handle webhook storms and filter noise. In [Part 2](/blog/archit...
Param Harrison·Nov 26, 2025
In [Part 1](/blog/architecting-coderabbit-ai-agent-at-scale), we built the "Eyes and Ears" of our system. We learned how to ingest events, filter noise, build c...
Param Harrison·Nov 25, 2025
Building a tool that reviews code is not just about prompting an LLM. It is a massive data pipeline problem. At production scale, you face three immediate kill...
Param Harrison·Nov 24, 2025
For a pet hotel, a missed call is a missed booking. For a medical clinic, a language barrier is a lost patient. For any service business, an AI receptionist isn...
Param Harrison·Nov 23, 2025
We have mastered the 1:1 voice agent. You speak, it answers. Simple. Clean. But real-world problem solving rarely happens in isolation. Imagine entering a voic...
Param Harrison·Nov 22, 2025
In our previous posts, we built agents that can "think" (reasoning) and "act" (tools). But they still have a fatal flaw: Amnesia. If you tell your agent, "My n...
Param Harrison·Nov 20, 2025
Voice data is messy. Users mumble, interrupt, go off-topic, and answer questions you haven't asked yet. If you are building a "chatty" companion, this is fine....
Param Harrison·Nov 20, 2025
In text-based chatbots, "routing" is invisible. You click "Support," and the backend silently switches endpoints. In Voice AI, routing is a human experience. T...
Param Harrison·Nov 19, 2025
In a text chatbot, "memory" is easy. If the user scrolls up, they see the history. If the bot forgets something, the user can just re-read the previous messages...
Param Harrison·Nov 18, 2025
In our previous text-based agents, a 2-second delay was acceptable. The user sees a "typing..." indicator and waits. In Voice AI, 2 seconds is an eternity. If...
Param Harrison·Nov 17, 2025
In our previous posts, we mastered RAG (see our [RAG introduction](/blog/rag-retrieval-augmented-generation-giving-llms-open-book)). RAG allows agents to read y...
Param Harrison·Nov 16, 2025
In the previous posts, we discussed agents as abstract concepts (see our [multi-agent coordination guide](/blog/multi-agent-coordination-patterns)). Now, let's ...
Param Harrison·Nov 15, 2025
We often strive for "fully autonomous" agents. But in the real world, full autonomy can be dangerous. If you are building a Legal Case Intake bot, a Financial ...
Param Harrison·Nov 14, 2025
In our previous posts, we mastered the single agent. We gave it tools (see our [tool calling guide](/blog/giving-your-llm-hands-deep-dive-tool-calling)), memory...
Param Harrison·Nov 13, 2025
In our [last post](/blog/multi-hop-rag-query-decomposition), we built a powerful, multi-hop RAG agent. It's smart, it's complex, and it's... slow. And expensive...
Sunil Samson Suresh·Nov 12, 2025
In our [last post](/blog/production-rag-handling-failures), we built a resilient agent that can handle tool failures. It's reliable, but it's still "dumb." It c...
Param Harrison·Nov 11, 2025
In our [last post](/blog/rag-evaluation-metrics-that-matter), we learned how to measure our RAG agent's quality. We built a "golden set" and used RAGAs to score...
Param Harrison·Nov 10, 2025
In our previous posts, we've built a complete, self-correcting RAG agent (see our [RAG agent series](/blog/why-your-simple-rag-is-failing)). We've added routing...
Sunil Samson Suresh·Nov 9, 2025
In our [last post](/blog/building-self-correcting-rag-agent), we built all the "thinking" nodes for our agent: the Router, the Grader, and the Generator. We hav...
Param Harrison·Nov 8, 2025
In our [last post](/blog/building-agent-brain-with-langgraph), we built the foundation for our advanced RAG agent. We defined its "memory" (GraphState) and its ...
Param Harrison·Nov 7, 2025
In our [last post](/blog/why-your-simple-rag-is-failing), we proved that a simple, linear RAG pipeline is "brittle." It fails when a user's question requires in...
Param Harrison·Nov 6, 2025
In our previous projects, we built a RAG (Retrieval-Augmented Generation) pipeline. It follows a simple, linear checklist: 1. Retrieve documents. 2. Stuff them...
Param Harrison·Nov 5, 2025
In our [last post](/blog/function-calling-vs-mcp-direct-request-vs-conversational-protocol), we explored how a single agent talks to its "hands" (tools) using t...
Param Harrison·Nov 4, 2025
In our previous posts, we've built agents that can reason and even critique their own work (see our [self-critique guide](/blog/prompt-engineering-self-critique...
Param Harrison·Nov 3, 2025
In our [last post](/blog/giving-your-llm-hands-deep-dive-tool-calling), we built a "Tool Calling" agent. It's a powerful pattern, but it has a massive, hidden f...
Param Harrison·Nov 2, 2025
Welcome back to our AI engineering series. In our first projects, we've treated LLMs as brilliant "brains in a jar." They can talk, they can reason, they can ev...
Param Harrison·Nov 1, 2025
In our last posts, we've built RAG pipelines (see our [introduction to RAG](/blog/rag-retrieval-augmented-generation-giving-llms-open-book)), chosen frameworks ...
Sunil Samson Suresh·Oct 31, 2025
In our previous posts, we've built RAG pipelines from scratch (see our [introduction to RAG](/blog/rag-retrieval-augmented-generation-giving-llms-open-book) and...
Sunil Samson Suresh·Oct 30, 2025
In our previous posts, we've learned how to build agents from the "Build-it-Yourself" kits: LangChain and LlamaIndex (see our [RAG framework comparison](/blog/c...
Param Harrison·Oct 29, 2025
In our previous projects, we've built agents and pipelines from scratch. We learned that a RAG (Retrieval-Augmented Generation) system is the "open book" that g...
Param Harrison·Oct 28, 2025
In our previous posts, we built agents from scratch. We wrote Python functions for tools (see our [ReAct agents guide](/blog/prompt-engineering-react-agents-too...
Param Harrison·Oct 27, 2025
We've built agents that are specific ([explicit instructions](/blog/prompt-engineering-generic-bot-to-expert-agent)), structured ([structured output](/blog/prom...
Param Harrison·Oct 26, 2025
In our previous posts, we've pushed prompting to its absolute limit. We've taught our AI to be specific ([explicit instructions](/blog/prompt-engineering-generi...
Param Harrison·Oct 25, 2025
We've built bots that are specific ([explicit instructions](/blog/prompt-engineering-generic-bot-to-expert-agent)), formatted ([structured JSON](/blog/prompt-en...
Param Harrison·Oct 24, 2025
We've built bots that are specific ([explicit instructions](/blog/prompt-engineering-generic-bot-to-expert-agent)), formatted ([structured JSON](/blog/prompt-en...
Param Harrison·Oct 23, 2025
We've built a bot that gives specific answers ([explicit instructions and role prompting](/blog/prompt-engineering-generic-bot-to-expert-agent)) and another tha...
Param Harrison·Oct 22, 2025
In our [last post](/blog/prompt-engineering-generic-bot-to-expert-agent), we built a support bot that gives helpful, specific answers. Now, we'll tackle a diffe...
Param Harrison·Oct 21, 2025
Welcome to our prompt engineering series! If you've ever built a bot and been disappointed by its vague, useless answers, this post is for you. This is the fir...
Param Harrison·Oct 20, 2025
Welcome to the next post in our AI Engineering in Practice series! In our last projects, we built a complete, [streaming RAG agent](/blog/advanced-rag-building...
Param Harrison·Oct 19, 2025
Welcome to our project-based learning series: The AI Application Stack! Our mission: To build a complete AI Bedtime Story Generator. We'll start with the simpl...
Param Harrison·Oct 18, 2025
We've seen that LLMs are brilliant. We can ask them a question, and they'll give us a well-written paragraph. But what if you asked an intern to compile a list...
Param Harrison·Oct 17, 2025
We've spent a lot of time building complex RAG systems. We've optimized [chunking](/blog/rag-splitting-techniques-art-of-right-chunk), added [web search](/blog/...
Sunil Samson Suresh·Oct 16, 2025
In our last lessons, we [built a RAG system from the ground up](/blog/rag-retrieval-augmented-generation-giving-llms-open-book). We had to manage every single s...
Param Harrison·Oct 15, 2025
Our previous [RAG systems](/blog/advanced-rag-building-self-correcting-systems) were like diligent interns following a rigid checklist: 1. Retrieve documents 2...
Param Harrison·Oct 14, 2025
In our last post, we learned about the [standard RAG pipeline](/blog/rag-retrieval-augmented-generation-giving-llms-open-book). For building RAG with frameworks...
Param Harrison·Oct 13, 2025
In our last posts, we learned how to [build a RAG pipeline](/blog/rag-retrieval-augmented-generation-giving-llms-open-book) and how to ["chunk" documents](/blog...
Sunil Samson Suresh·Oct 12, 2025
In our last post, we built a [RAG pipeline](/blog/rag-retrieval-augmented-generation-giving-llms-open-book). The most important step, which we glossed over, was...
Sunil Samson Suresh·Oct 11, 2025
In our last posts, we learned how to [talk to LLMs](/blog/prompt-engineering-how-to-talk-to-llm) (Prompt Engineering) and [what they are](/blog/llm-basics-how-m...
Param Harrison·Oct 10, 2025
In the last post, we learned that [LLMs are powerful pattern-matching engines](/blog/llm-basics-how-machines-think). But their output is highly sensitive to the...
Param Harrison·Oct 9, 2025
The big idea: it's all about prediction If you saw the sentence: The dog chased the ___, what word comes next? You probably thought ball, cat, or squirrel. Yo...
Sunil Samson Suresh·Oct 8, 2025
What challenges do AI agents face? You built a chatbot that can call tools. Now product asks it to autonomously plan multi-step tasks (book travel, update ticke...
Param Harrison·Oct 7, 2025
What is The challenge? Your AI API is live. Usage triples overnight. Suddenly: - You see random 500 errors from the model proxy - Token bills spike - One use...
Param Harrison·Oct 6, 2025
What is The challenge? Your product just hit 1,000 concurrent AI sessions. - Some requests hang, others timeout - GPU utilization drops even as queues grow - ...
Param Harrison·Oct 5, 2025
What is The challenge? Your chat app's users start typing faster than your LLM replies. - Requests pile up - Some clients disconnect mid-generation - Metrics ...
Param Harrison·Oct 4, 2025
What is The challenge? You've built an AI summarizer in a notebook. It works great, until 10 users hit it at once. Suddenly: - Latency spikes from 1s → 8s - ...
Param Harrison·Oct 3, 2025
For engineers who use GPT APIs but don’t trust the “it’s magic” answer. Large Language Models (LLMs) like GPT‑4 or Claude aren’t magical. They’re predictive en...
Sunil Samson Suresh·Oct 2, 2025
LLMs aren’t just “APIs you hit”, they’re probabilistic interfaces you design. This guide shows how to engineer model behavior reliably using: - Prompt contrac...
Sunil Samson Suresh·Oct 1, 2025