Custom ETL services

The pipeline somebody wrote in 2019 and then left

No DAG, no lineage graph, no vendor. A service that consumes a queue, batches, parses, maps and bulk-inserts — with the interesting behaviour spread across code, config files and a scheduler.

Shapes Decim understands

Queue consumers

A listener that batches on size or elapsed time. The batch id is your run, and its counts are the reconciliation.

Spool and handoff files

Memory-mapped files, staging directories, and other inter-process buffers that no diagram ever includes.

Config as routing

When a JSON or XML file decides which table a row lands in, that file is the pipeline — and it drifts from the database copy.

Bulk insert paths

The batch that fails, rolls back, retries row-by-row, and logs each failure somewhere nobody reads.

Retry and dead letters

Retry workers, error tables, and the cycle back into the parser. Rarely drawn, frequently the cause.

Multiple workloads, one service

Loading, events, aggregation and sync running on separate clocks in one process — and blocking each other.

Get started

Bring us a pipeline that broke last week

The fastest way to evaluate this is a real incident you already know the answer to. If Decim gets it wrong, that is a far more useful demo than one where it doesn't.