All work
Project05

Temporal Workers

Long-running, retry-safe data pipelines — the background backbone of GetMike.

DisciplineBackground processing
Year2026
RoleData-sync pipeline developer
SectorInfrastructure
Temporal Workers product interface screenshotTEMPORAL WORKERS· HERO · 16:9
Overview

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.

Challenge & Approach
The Challenge

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.

The Approach

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.

Stack — full breakdown
Runtime
Node 22TypeScripttsxTemporal TypeScript SDK
Data sources
Mavis ERPNopCommerceCustom REST adapters
Storage / search
SupabasePostgrespgvectorElasticsearch
AI pipeline
Gemini embedding-001Batch embeddingsL2 normalization
Ops
Temporal CloudmTLSGraceful shutdownWorkflow status tables
Previous

Scanapp

Next

CarbWatch