<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><title>Dhruv Boghani Blog</title><link>https://www.dhruvboghani.com/blog.html</link><description>AI, LLM and data engineering</description>
<item><title>Document parsing for RAG: PDFs, tables and scans</title><link>https://www.dhruvboghani.com/blog/document-parsing-for-rag-pdfs-tables-and-scans.html</link><guid>https://www.dhruvboghani.com/blog/document-parsing-for-rag-pdfs-tables-and-scans.html</guid><pubDate>Fri, 30 Oct 2026 00:00:00 +0000</pubDate><description>How to parse documents for RAG: extracting clean text from PDFs, keeping tables intact, running OCR on scans, preserving structure and checking quality.</description></item>
<item><title>Text-to-SQL with LLMs: making it reliable</title><link>https://www.dhruvboghani.com/blog/text-to-sql-with-llms-making-it-reliable.html</link><guid>https://www.dhruvboghani.com/blog/text-to-sql-with-llms-making-it-reliable.html</guid><pubDate>Thu, 29 Oct 2026 00:00:00 +0000</pubDate><description>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.</description></item>
<item><title>Rate limiting and retries for LLM APIs</title><link>https://www.dhruvboghani.com/blog/rate-limiting-and-retries-for-llm-apis.html</link><guid>https://www.dhruvboghani.com/blog/rate-limiting-and-retries-for-llm-apis.html</guid><pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate><description>How to handle LLM API rate limits: request and token limits, exponential backoff with jitter, client-side throttling, queues, fallbacks and timeouts.</description></item>
<item><title>Observability for LLM applications: tracing, cost and quality</title><link>https://www.dhruvboghani.com/blog/observability-for-llm-applications-tracing-cost-and-quality.html</link><guid>https://www.dhruvboghani.com/blog/observability-for-llm-applications-tracing-cost-and-quality.html</guid><pubDate>Tue, 27 Oct 2026 00:00:00 +0000</pubDate><description>How to monitor LLM applications in production: tracing each request, tracking tokens and cost, measuring latency, and evaluating answer quality over time.</description></item>
<item><title>Idempotent consumers: handling duplicate events safely</title><link>https://www.dhruvboghani.com/blog/idempotent-consumers-handling-duplicate-events-safely.html</link><guid>https://www.dhruvboghani.com/blog/idempotent-consumers-handling-duplicate-events-safely.html</guid><pubDate>Mon, 26 Oct 2026 00:00:00 +0000</pubDate><description>How to build idempotent consumers in event-driven systems: why duplicates happen, idempotency keys, processed-event tables, upserts and the outbox pattern.</description></item>
<item><title>Hybrid search for RAG: combining keyword and vector search</title><link>https://www.dhruvboghani.com/blog/hybrid-search-for-rag-combining-keyword-and-vector-search.html</link><guid>https://www.dhruvboghani.com/blog/hybrid-search-for-rag-combining-keyword-and-vector-search.html</guid><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><description>Why hybrid search improves RAG: combining BM25 keyword search with vector search, merging results with reciprocal rank fusion, and adding a reranker.</description></item>
<item><title>Building an AI copilot inside a CRM</title><link>https://www.dhruvboghani.com/blog/building-an-ai-copilot-inside-a-crm.html</link><guid>https://www.dhruvboghani.com/blog/building-an-ai-copilot-inside-a-crm.html</guid><pubDate>Sat, 24 Oct 2026 00:00:00 +0000</pubDate><description>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.</description></item>
<item><title>Real-time dashboards with Trino and Apache Iceberg</title><link>https://www.dhruvboghani.com/blog/real-time-dashboards-with-trino-and-apache-iceberg.html</link><guid>https://www.dhruvboghani.com/blog/real-time-dashboards-with-trino-and-apache-iceberg.html</guid><pubDate>Fri, 23 Oct 2026 00:00:00 +0000</pubDate><description>How to build near real-time dashboards on Trino and Apache Iceberg: streaming ingestion, commit intervals, table layout, compaction and fast queries.</description></item>
<item><title>Semantic caching to cut LLM costs and latency</title><link>https://www.dhruvboghani.com/blog/semantic-caching-to-cut-llm-costs-and-latency.html</link><guid>https://www.dhruvboghani.com/blog/semantic-caching-to-cut-llm-costs-and-latency.html</guid><pubDate>Thu, 22 Oct 2026 00:00:00 +0000</pubDate><description>How semantic caching cuts LLM costs and latency: embedding-based lookups, similarity thresholds, cache keys, invalidation and when caching is unsafe.</description></item>
<item><title>Guardrails for LLM applications: a practical guide</title><link>https://www.dhruvboghani.com/blog/guardrails-for-llm-applications-a-practical-guide.html</link><guid>https://www.dhruvboghani.com/blog/guardrails-for-llm-applications-a-practical-guide.html</guid><pubDate>Wed, 21 Oct 2026 00:00:00 +0000</pubDate><description>How to add guardrails to LLM applications: input checks, output validation, tool permissions, grounding and monitoring that keep AI features safe and reliable.</description></item>
<item><title>AI agents vs chatbots: what is the difference</title><link>https://www.dhruvboghani.com/blog/ai-agents-vs-chatbots-what-is-the-difference.html</link><guid>https://www.dhruvboghani.com/blog/ai-agents-vs-chatbots-what-is-the-difference.html</guid><pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate><description>AI agents vs chatbots explained: how they differ in goals, tools, memory and control, and how to decide which one your product actually needs.</description></item>
<item><title>Data quality checks in streaming pipelines</title><link>https://www.dhruvboghani.com/blog/data-quality-checks-in-streaming-pipelines.html</link><guid>https://www.dhruvboghani.com/blog/data-quality-checks-in-streaming-pipelines.html</guid><pubDate>Mon, 19 Oct 2026 00:00:00 +0000</pubDate><description>How to add data quality checks to streaming pipelines: schema, validity, freshness, volume and duplicates, plus dead-letter queues and alerts that matter.</description></item>
<item><title>Schema evolution in Apache Iceberg: change tables safely</title><link>https://www.dhruvboghani.com/blog/schema-evolution-in-apache-iceberg.html</link><guid>https://www.dhruvboghani.com/blog/schema-evolution-in-apache-iceberg.html</guid><pubDate>Sun, 18 Oct 2026 00:00:00 +0000</pubDate><description>How Apache Iceberg handles schema evolution with column IDs: adding, renaming, dropping and widening columns without rewriting data or breaking readers.</description></item>
<item><title>Change data capture (CDC) explained for data engineers</title><link>https://www.dhruvboghani.com/blog/change-data-capture-cdc-explained.html</link><guid>https://www.dhruvboghani.com/blog/change-data-capture-cdc-explained.html</guid><pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate><description>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.</description></item>
<item><title>Embedding models: how to choose one for search and RAG</title><link>https://www.dhruvboghani.com/blog/embedding-models-how-to-choose-one.html</link><guid>https://www.dhruvboghani.com/blog/embedding-models-how-to-choose-one.html</guid><pubDate>Fri, 16 Oct 2026 00:00:00 +0000</pubDate><description>How to choose an embedding model for semantic search and RAG: quality on your data, dimensions, context length, language, cost, latency and hosting.</description></item>
<item><title>RAG evaluation: how to measure answer quality</title><link>https://www.dhruvboghani.com/blog/rag-evaluation-how-to-measure-answer-quality.html</link><guid>https://www.dhruvboghani.com/blog/rag-evaluation-how-to-measure-answer-quality.html</guid><pubDate>Thu, 15 Oct 2026 00:00:00 +0000</pubDate><description>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.</description></item>
<item><title>Multi-tenant SaaS architecture patterns explained</title><link>https://www.dhruvboghani.com/blog/multi-tenant-saas-architecture-patterns.html</link><guid>https://www.dhruvboghani.com/blog/multi-tenant-saas-architecture-patterns.html</guid><pubDate>Wed, 14 Oct 2026 00:00:00 +0000</pubDate><description>Multi-tenant SaaS patterns compared: shared schema, schema per tenant and database per tenant, plus isolation, security, scaling and noisy neighbours.</description></item>
<item><title>Speech-to-text latency in voice bots: where time goes</title><link>https://www.dhruvboghani.com/blog/speech-to-text-latency-in-voice-bots.html</link><guid>https://www.dhruvboghani.com/blog/speech-to-text-latency-in-voice-bots.html</guid><pubDate>Tue, 13 Oct 2026 00:00:00 +0000</pubDate><description>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.</description></item>
<item><title>LLM function calling explained: how tool use works</title><link>https://www.dhruvboghani.com/blog/llm-function-calling-explained.html</link><guid>https://www.dhruvboghani.com/blog/llm-function-calling-explained.html</guid><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><description>How LLM function calling works: tool schemas, the request loop, argument validation, errors and security, with a practical example in Python.</description></item>
<item><title>Lakehouse vs data warehouse: differences and when to use each</title><link>https://www.dhruvboghani.com/blog/lakehouse-vs-data-warehouse.html</link><guid>https://www.dhruvboghani.com/blog/lakehouse-vs-data-warehouse.html</guid><pubDate>Sun, 11 Oct 2026 00:00:00 +0000</pubDate><description>Lakehouse vs data warehouse compared: storage, table formats, cost, performance, governance and how to choose the right one for your data platform.</description></item>
<item><title>Chunking strategies for RAG: how to split your documents</title><link>https://www.dhruvboghani.com/blog/chunking-strategies-for-rag.html</link><guid>https://www.dhruvboghani.com/blog/chunking-strategies-for-rag.html</guid><pubDate>Sat, 10 Oct 2026 00:00:00 +0000</pubDate><description>How to chunk documents for RAG: fixed-size, recursive, structure-aware and semantic splitting, chunk size, overlap and metadata that matter.</description></item>
<item><title>Prompt engineering for structured JSON output</title><link>https://www.dhruvboghani.com/blog/prompt-engineering-for-structured-json-output.html</link><guid>https://www.dhruvboghani.com/blog/prompt-engineering-for-structured-json-output.html</guid><pubDate>Fri, 09 Oct 2026 00:00:00 +0000</pubDate><description>How to make an LLM return valid JSON using a schema, a response format, validation, and a retry when the shape is wrong.</description></item>
<item><title>Apache Flink stateful stream processing basics</title><link>https://www.dhruvboghani.com/blog/apache-flink-stateful-stream-processing-basics.html</link><guid>https://www.dhruvboghani.com/blog/apache-flink-stateful-stream-processing-basics.html</guid><pubDate>Thu, 08 Oct 2026 00:00:00 +0000</pubDate><description>How Flink keeps state in a streaming job, including keyed state, checkpoints, watermarks, and what fails in production.</description></item>
<item><title>Kafka vs Redpanda for real-time pipelines</title><link>https://www.dhruvboghani.com/blog/kafka-vs-redpanda-for-real-time-pipelines.html</link><guid>https://www.dhruvboghani.com/blog/kafka-vs-redpanda-for-real-time-pipelines.html</guid><pubDate>Wed, 07 Oct 2026 00:00:00 +0000</pubDate><description>How Kafka and Redpanda differ for streaming pipelines, covering the API, operations, storage, and when each one fits.</description></item>
<item><title>Vector Database Comparison: pgvector vs Pinecone</title><link>https://www.dhruvboghani.com/blog/vector-database-comparison-pgvector-vs-pinecone.html</link><guid>https://www.dhruvboghani.com/blog/vector-database-comparison-pgvector-vs-pinecone.html</guid><pubDate>Tue, 06 Oct 2026 00:00:00 +0000</pubDate><description>A practical comparison of pgvector and Pinecone for AI and data engineers, focusing on architecture, performance, and use cases.</description></item>
<item><title>How a voice AI agent works: Twilio, speech, LLM and CRM</title><link>https://www.dhruvboghani.com/blog/how-voice-ai-agents-work.html</link><guid>https://www.dhruvboghani.com/blog/how-voice-ai-agents-work.html</guid><pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate><description>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.</description></item>
<item><title>Apache Iceberg time travel: query your data as it was</title><link>https://www.dhruvboghani.com/blog/iceberg-time-travel.html</link><guid>https://www.dhruvboghani.com/blog/iceberg-time-travel.html</guid><pubDate>Sun, 04 Oct 2026 00:00:00 +0000</pubDate><description>How Iceberg snapshots let you query past versions of a table with Trino, debug bad loads and roll back safely.</description></item>
<item><title>What is RAG? A practical guide for developers</title><link>https://www.dhruvboghani.com/blog/what-is-rag.html</link><guid>https://www.dhruvboghani.com/blog/what-is-rag.html</guid><pubDate>Sat, 03 Oct 2026 00:00:00 +0000</pubDate><description>Retrieval-Augmented Generation explained: how it works, when to use it, and the mistakes that make RAG systems give bad answers.</description></item>
</channel></rss>
