Seconds to understand and act
Users needed clear templates, early validation, a fast preview, confident mapping, and an honest explanation of what would happen next.
Case study 02 · Enterprise performance data
I designed and delivered the Custom Metrics workflow across file preparation, validation, schema mapping, asynchronous execution, recovery, and KPI reporting.
01 · Two clocks, one experience
Users needed clear templates, early validation, a fast preview, confident mapping, and an honest explanation of what would happen next.
Validation, queueing, chunked processing, storage, and result aggregation continued after the browser request had finished.
I defined the workflow rules, state transitions, API expectations, polling and cleanup behaviour, recovery paths, and verification strategy. I aligned Product, Design, backend, data, and QA around one lifecycle contract so the interface never implied certainty the system did not yet have.
02 · The product journey
The interface became progressively more specific: establish the contract, inspect the data, preserve its meaning, then hand work to the asynchronous system.
The user downloads the correct template, reviews the field specification, acknowledges the requirements, selects the destination metric, and uploads a CSV up to 10 MB. Invalid structure or format stops the journey before preview.
Row and column totals establish scale while the first three records let users verify headers, values, and structure without making the interface carry the full file.
Required system fields are paired with CSV columns using sample values from the file. Execution remains unavailable until every mandatory mapping is complete.
The import enters the queue, reports its lifecycle, and resolves into processed, successful, and failed totals with duration, error recovery, another import action, and KPI dashboard navigation.
03 · Behind Execute
The interface stayed anchored to one import identity while responsibility moved from synchronous validation to asynchronous processing and back to a user-facing result.
04 · Recovery by design
I treated failure as part of the normal product lifecycle, not an exceptional screen added after the happy path.
A structurally valid file could still target the wrong metric or omit a required business field.
Refreshing or navigating away could interrupt polling even though accepted work continued in the backend.
Some rows could succeed while others failed validation, making a binary success or failure message misleading.
Verification and release
05 · Product outcomes
The durable unit was the import, not the browser session.
That decision kept progress, recovery, and partial results coherent while work moved through the API, queue, worker, storage, and reporting system.