Temporal Workers
Long-running, retry-safe data pipelines — the background backbone of GetMike.
A TypeScript Temporal worker package that syncs clients, orders, products, categories, attributes, and embeddings from Mavis ERP and NopCommerce into Supabase, then transforms staged data into production tables consumed by GetMike.
The task was to create a reliable data-sync pipeline. that's why we settled on Temporal Workers as the workflow engine and a senior developer/colleague handled the Elasticsearch configuration. I developed the core Temporal workflows and activities: retries, heartbeats, resume-from-state logic, transforms, and Supabase staging/production writes.
What was getting in the way.
GetMike's answers are only as good as the data behind them. ERP and commerce APIs are slow, flaky, paginated differently per tenant, and too large for a brittle nightly script. Failures had to be observable, replayable, and isolated per tenant.
How I built around it.
Temporal workflows orchestrate deterministic sync steps while activities own all I/O. Raw pages are staged in Supabase with resume offsets, long activities heartbeat every few seconds, transforms can restart from a named step, and Gemini embedding batches adaptively split on failure. The result is a retry-safe pipeline that can recover from partial failures without silently drifting out of sync.