Most teams reach for streaming too early. Here’s a simple batch job that covers 90% of cases before you ever need Kafka:

# daily batch: load, transform, write
import pandas as pd

def run(date):
    df = pd.read_parquet(f"raw/{date}.parquet")
    df = df[df.amount > 0]
    df.to_parquet(f"clean/{date}.parquet")

No brokers, no consumers, no 3am pages. If your data lands once a day, a job like this is enough.

When streaming earns its keep

Reach for streaming when the value of the data decays in seconds — fraud detection, live dashboards, alerting. If a one-hour delay is fine, batch is almost always cheaper to build and run.

Rule of thumb: start with batch, and let a real latency requirement — not excitement — pull you toward streaming.