Hugo Santamaria

Rate Processing Performance Improvement

Refactored a large rate-processing workflow using batching and asynchronous processing, reducing processing time by roughly 60%.

Overview / Context

This work happened while I was on ALPS. Transportation rate uploads could contain substantial amounts of data, and the existing processing workflow became slow as those files were handled.

Problem

The workflow had to parse and process rate data while performing validation and lookup-heavy work across many fields. The core engineering problem was reducing processing time and prevent blocking calls from freezing the UI while still producing the same expected output data.

Approach / Implementation

  • Refactored the rate-processing workflow and split large workloads into smaller batches.
  • Processed independent batches concurrently instead of running the entire workflow sequentially.
  • Implemented asynchronous execution using Spring @Async and CompletableFuture.
  • Reduced unnecessary sequential processing in shared workflow paths.
  • Refactored shared processing logic to simplify the overall flow.
  • In the UI, I converted the upload call to the backend into an asynchronous request so the user could continue working while the backend processed the file.

Important Engineering Details

A single rate could contain roughly 90 to 130 Excel columns, and many fields depended on lookup or reference values. That combination made the workflow expensive and made sequential processing a bottleneck.

My Contribution

I worked directly on the refactor and concurrency changes, including batching and asynchronous execution paths for independent rate work.

The goal was still the same expected output in the appropriate tables, but with a faster processing path.

Result

After the refactor, the rate-processing workflow completed roughly 60% faster.