Engineering blog
Practical notes on AI, LLMs and data engineering. RSS
Document parsing for RAG: PDFs, tables and scans
How to parse documents for RAG: extracting clean text from PDFs, keeping tables intact, running OCR on scans, preserving structure and checking quality.
ragdocument-parsingllm
2026-10-29 / 3 min readText-to-SQL with LLMs: making it reliable
How to make text-to-SQL with LLMs reliable: giving the model the right schema, safe read-only execution, validation, few-shot examples and evaluation.
llmsqlanalytics
2026-10-28 / 3 min readRate limiting and retries for LLM APIs
How to handle LLM API rate limits: request and token limits, exponential backoff with jitter, client-side throttling, queues, fallbacks and timeouts.
llmreliabilityapi
2026-10-27 / 3 min readObservability for LLM applications: tracing, cost and quality
How to monitor LLM applications in production: tracing each request, tracking tokens and cost, measuring latency, and evaluating answer quality over time.
llmobservabilitymlops
2026-10-26 / 3 min readIdempotent consumers: handling duplicate events safely
How to build idempotent consumers in event-driven systems: why duplicates happen, idempotency keys, processed-event tables, upserts and the outbox pattern.
event-drivenkafkadata-engineering
2026-10-25 / 3 min readHybrid search for RAG: combining keyword and vector search
Why hybrid search improves RAG: combining BM25 keyword search with vector search, merging results with reciprocal rank fusion, and adding a reranker.
ragsearchvector-search
2026-10-24 / 3 min readBuilding an AI copilot inside a CRM
How to build an AI copilot inside a CRM: useful features, grounding on CRM data, permission-aware retrieval, tool actions, review steps and measuring value.
ai-copilotcrmllm
2026-10-23 / 3 min readReal-time dashboards with Trino and Apache Iceberg
How to build near real-time dashboards on Trino and Apache Iceberg: streaming ingestion, commit intervals, table layout, compaction and fast queries.
trinoicebergdata-engineering
2026-10-22 / 3 min readSemantic caching to cut LLM costs and latency
How semantic caching cuts LLM costs and latency: embedding-based lookups, similarity thresholds, cache keys, invalidation and when caching is unsafe.
llmcachingcost-optimization
2026-10-21 / 3 min readGuardrails for LLM applications: a practical guide
How to add guardrails to LLM applications: input checks, output validation, tool permissions, grounding and monitoring that keep AI features safe and reliable.
llmguardrailsai-safety
2026-10-20 / 4 min readAI agents vs chatbots: what is the difference
AI agents vs chatbots explained: how they differ in goals, tools, memory and control, and how to decide which one your product actually needs.
ai-agentsllmchatbots
2026-10-19 / 4 min readData quality checks in streaming pipelines
How to add data quality checks to streaming pipelines: schema, validity, freshness, volume and duplicates, plus dead-letter queues and alerts that matter.
data-qualitystreamingdata-engineering
2026-10-18 / 4 min readSchema evolution in Apache Iceberg: change tables safely
How Apache Iceberg handles schema evolution with column IDs: adding, renaming, dropping and widening columns without rewriting data or breaking readers.
iceberglakehousedata-engineering
2026-10-17 / 4 min readChange data capture (CDC) explained for data engineers
What change data capture is, how log-based CDC works, how it compares to batch extracts, and the pitfalls to plan for when streaming database changes.
data-engineeringcdcstreaming
2026-10-16 / 4 min readEmbedding models: how to choose one for search and RAG
How to choose an embedding model for semantic search and RAG: quality on your data, dimensions, context length, language, cost, latency and hosting.
embeddingsragvector-search
2026-10-15 / 4 min readRAG evaluation: how to measure answer quality
How to evaluate a RAG system: build a test set, measure retrieval and answer quality separately, use LLM judges carefully and track it in CI.
ragllmevaluation
2026-10-14 / 4 min readMulti-tenant SaaS architecture patterns explained
Multi-tenant SaaS patterns compared: shared schema, schema per tenant and database per tenant, plus isolation, security, scaling and noisy neighbours.
saasarchitecturedatabases
2026-10-13 / 4 min readSpeech-to-text latency in voice bots: where time goes
Why voice bots feel slow and how to cut speech-to-text latency with streaming ASR, better endpointing, partial results and a tighter voice pipeline.
voice-aispeech-to-textlatency
2026-10-12 / 5 min readLLM function calling explained: how tool use works
How LLM function calling works: tool schemas, the request loop, argument validation, errors and security, with a practical example in Python.
llmfunction-callingai-agents
2026-10-11 / 4 min readLakehouse vs data warehouse: differences and when to use each
Lakehouse vs data warehouse compared: storage, table formats, cost, performance, governance and how to choose the right one for your data platform.
data-engineeringlakehouseiceberg
2026-10-10 / 4 min readChunking strategies for RAG: how to split your documents
How to chunk documents for RAG: fixed-size, recursive, structure-aware and semantic splitting, chunk size, overlap and metadata that matter.
ragllmvector-search
2026-10-09 / 5 min readPrompt engineering for structured JSON output
How to make an LLM return valid JSON using a schema, a response format, validation, and a retry when the shape is wrong.
llmprompt-engineeringjson
2026-10-08 / 3 min readApache Flink stateful stream processing basics
How Flink keeps state in a streaming job, including keyed state, checkpoints, watermarks, and what fails in production.
data-engineeringflinkstreaming
2026-10-07 / 3 min readKafka vs Redpanda for real-time pipelines
How Kafka and Redpanda differ for streaming pipelines, covering the API, operations, storage, and when each one fits.
data-engineeringkafkastreaming
2026-10-06 / 3 min readVector Database Comparison: pgvector vs Pinecone
A practical comparison of pgvector and Pinecone for AI and data engineers, focusing on architecture, performance, and use cases.
vector-databasesai-engineeringpostgresql
2026-10-05 / 1 min readHow a voice AI agent works: Twilio, speech, LLM and CRM
The building blocks of a real-time voice AI agent, from telephony and speech-to-text to the LLM, text-to-speech and CRM updates.
AIVoice AILLM
2026-10-04 / 1 min readApache Iceberg time travel: query your data as it was
How Iceberg snapshots let you query past versions of a table with Trino, debug bad loads and roll back safely.
Data EngineeringIcebergTrino
2026-10-03 / 1 min readWhat is RAG? A practical guide for developers
Retrieval-Augmented Generation explained: how it works, when to use it, and the mistakes that make RAG systems give bad answers.
AILLMRAG