vadimall.com
Archives
Search...
Log in
Subscribe
Hybrid Search That Actually Works: BM25 + Embeddings + Reranking in TypeScript
June 5, 2026
Pure vector search misses exact-match queries like SKUs and error codes. Fix retrieval with hybrid search in TypeScript: BM25 + embeddings, fused with RRF,...
PII Redaction Middleware: Strip Sensitive Data Before It Reaches the LLM
June 3, 2026
Build TypeScript middleware that redacts PII before it reaches the LLM, then re-hydrates the response - reversible redaction, audit logging, and a test...
Build an AI Eval Suite with Promptfoo: Catch Prompt Regressions Before Production
June 1, 2026
How to use Promptfoo to set up a TypeScript AI eval suite that catches prompt regressions in CI - deterministic asserts, LLM-as-judge, cost budgets, and a...
Why Your AI Feature Needs a Job Queue (And How to Add One with BullMQ)
May 29, 2026
Why synchronous LLM calls in Next.js API routes break under real load — and how to refactor to a BullMQ job queue with idempotency, priority lanes, SSE...
Add AI Image Generation to Your Next.js App with Replicate, Fal, and Cloudflare R2
May 27, 2026
Add AI image generation to your Next.js app end-to-end — call Replicate or Fal with Flux, store outputs in Cloudflare R2, serve via signed URLs, handle...
Build Generative UI with Vercel AI SDK: Stream React Components from an LLM
May 25, 2026
Build generative UI with the Vercel AI SDK — stream real React components from an LLM tool call, render partial state during streaming, and gracefully fall...
Pinecone vs Turbopuffer vs pgvector: Which Vector Database for Production RAG in 2026
May 22, 2026
A real benchmark of Pinecone, Turbopuffer, and pgvector for production RAG in TypeScript. Latency, recall, and monthly cost at 1M, 10M, and 100M chunks. Read...
Build a Text-to-SQL Feature: Let Users Query Your Database in Plain English
May 20, 2026
Build a production-safe text to SQL TypeScript feature with Postgres. Schema context, Zod validation, sandboxed roles, EXPLAIN gating, and a self-correction...
Cut Your Claude API Bill by 90% Using Prompt Caching in TypeScript
May 18, 2026
How to use Anthropic prompt caching in TypeScript to cut Claude API costs by up to 90%. Where to place cache_control breakpoints, TTL tradeoffs, and real RAG...
When Your AI Feature Gets Gamed: Prompt Injection Defense for JavaScript Apps
May 15, 2026
Practical prompt injection defense for JavaScript web apps: input sanitization middleware, system prompt hardening, canary tokens, and output validation with...
How to Write an AI Feature Spec That Engineers Won't Push Back On
May 13, 2026
An AI feature spec template with the eight sections engineers actually want: success metrics, fallback behavior, latency budgets, edge cases, and eval sets....
Build a Voice-Enabled AI Assistant in the Browser with TypeScript
May 11, 2026
Build a voice AI assistant in the browser with TypeScript using the Web Speech API, an LLM, and speech synthesis. Handle interruption, wake words, and mobile...
Add AI-Powered Citations and Source Attribution to Your RAG Chatbot
May 8, 2026
Upgrade your RAG chatbot with inline citations using Claude's Citations API and a React UI that renders clickable source markers. Full TypeScript walkthrough...
How to Structure Your TypeScript Codebase So AI Coding Agents Work Better
May 6, 2026
Practical TypeScript codebase patterns that make Claude Code, Cursor, and Copilot dramatically more effective. CLAUDE.md, module boundaries, typed configs,...
How to Migrate from OpenAI Assistants API to Responses API in TypeScript
May 4, 2026
Migrate your OpenAI Assistants API integration to the Responses API in TypeScript before the mid-2026 sunset. Concept-by-concept mapping, before/after code...
Streaming AI UX in React: Handle Partial Markdown, Citations, and Error States
May 1, 2026
Build a streaming AI UI in React that renders partial markdown without layout shifts, shows citations as they arrive, and recovers from mid-stream errors....
How to Route LLM Requests to Cheap vs Expensive Models Automatically in TypeScript
April 29, 2026
Build an LLM model router in TypeScript that sends simple queries to Haiku and only escalates complex ones to Opus. Real classification logic, fallback...
Mastra vs VoltAgent: The Two New TypeScript Agent Frameworks Compared
April 24, 2026
Build the same AI agent in Mastra and VoltAgent — the two new TypeScript-native frameworks. Honest comparison of DX, memory, MCP support, observability, and...
Google Agent Development Kit for TypeScript: Build a Multi-Agent System from Scratch
April 22, 2026
Build a multi-agent research assistant with Google ADK for TypeScript. Supervisor agent coordinating three specialists — web researcher, data analyst, report...
Build an MCP Client in TypeScript That Connects to Multiple Tool Servers
April 20, 2026
Build a TypeScript MCP client that connects to multiple servers simultaneously and lets an LLM use tools from all of them in one conversation — with...
Older archives