Why real-time beats nightly batch for loyalty
A points balance that updates tomorrow is a points balance that missed the moment. Here's why loyalty has to run on live behavior, not overnight jobs.

Most loyalty platforms were built around a nightly job: pull yesterday's transactions, recompute balances, push tomorrow's tiers. That architecture made sense when loyalty meant a punch card. It falls apart the moment loyalty is supposed to react to what a customer is doing right now.
The moment is the product
A customer adds a third item to their cart. They open the app after a two-month gap. They just crossed the spend threshold into your top tier. Each of those is a moment your brand can respond to - a nudge, a reward, a recognition - and each one loses most of its value if the response arrives after the moment has passed. Batch pipelines don't fail loudly; they just make every response late, and late feels indifferent even when the content is right.
What "real-time" actually requires
Real-time isn't a dashboard that refreshes faster. It means the event stream, the ledger, and the rules engine share one live data model - so an event and its consequence happen in the same breath, not in separate systems reconciled once a day. That's an architecture decision, not a feature you bolt on later. Retrofitting it onto a batch core usually means rebuilding the core.
Why we built Weave this way from day one
We built Loom Loyalty's ledger, Weave, as an event-native system precisely so this isn't a tradeoff. Every purchase, visit, and referral lands as an event the moment it happens, and Patterns - our behavior engine - can act on it immediately: adjust a tier, trigger a reward, flag a churn signal. No overnight window where the data is stale and the response is late.
The teams that get the most out of loyalty are the ones who stop thinking of it as a monthly report and start treating it as a live conversation with every customer. That only works if the infrastructure underneath is live too.