Your chatbot answered correctly. The data was just wrong.
Your support chatbot just told a customer that Widget Pro is available for purchase.
Widget Pro was discontinued 6 months ago.
The model is fine. The vector store is fine. The batch job that feeds it just hasn’t run yet.
Here’s what happened:
- Product manager ran
UPDATE products SET status = 'discontinued'at 9am - Batch job refreshes the context store at 2am
- Customer asks about Widget Pro at 10am
- Chatbot answers from 17-hour-old data
Your model did exactly what you trained it to do. You handed it stale context.
Change Data Capture fixes this at the source.
The moment a row changes in PostgreSQL, Debezium reads the Write-Ahead Log and emits a change event to Kafka. Your consumer picks it up in seconds. Your AI context stays current without a single scheduled job.
PostgreSQL (WAL)
│
▼
Debezium Connect ← listens to the Write-Ahead Log
│
▼
Kafka ← change event arrives in real time
│
▼
Python Consumer ← updates AI context immediately
│
▼
Gemini API ← answers with what's actually true right now
I’ll show this live at LLMday Hamburg on June 18.
The full demo is already on GitHub: Docker Compose, Debezium connector, Kafka consumer, Gemini integration. Run it before the talk if you want to show up with questions:
github.com/skayikci/kafka-real-world-demos
I’ll also cover what breaks in production: connector failures, schema evolution, at-least-once delivery, and why managed Kafka on GCP won’t support your Debezium plugin.
See you there.