Your chatbot answered correctly. The data was just wrong.

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:

  1. Product manager ran UPDATE products SET status = 'discontinued' at 9am
  2. Batch job refreshes the context store at 2am
  3. Customer asks about Widget Pro at 10am
  4. 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.