Architecture & Tech Stack

What background-job framework is used and what jobs run on it?

Background and scheduled work runs on Hangfire, which persists jobs and exposes a monitoring dashboard at /hangfire. The recurring jobs include: the daily subscription billing sweep (invoices due cycles, runs dunning retries, suspends or cancels per policy); the loyalty expiry sweep (expires points past their date); analytics/report summary refresh (pre-aggregates daily…

Background and scheduled work runs on Hangfire, which persists jobs and exposes a monitoring dashboard at /hangfire. The recurring jobs include: the daily subscription billing sweep (invoices due cycles, runs dunning retries, suspends or cancels per policy); the loyalty expiry sweep (expires points past their date); analytics/report summary refresh (pre-aggregates daily summaries for fast reporting); and the AI recommendation generation jobs (related products and per-customer personalized lists, regenerating only stale entries). On-demand jobs include the bulk catalogue import (with live progress) and the post-import image fetch. Using a real job framework means heavy or scheduled work happens off the request thread, can be retried safely (jobs are written to be idempotent), and is observable through the dashboard.