Previous KPI
The reference value that gives the change meaning.
Case study 03 · Performance analytics
I led the full stack delivery of Coaching Effectiveness, defining how filters, KPI calculations, aggregation rules, API responses, and chart behaviour worked as one analytical contract.
01 · The decision behind the dashboard
The experience shows observed KPI movement in context; it does not treat correlation as proof that coaching caused the change. Time context, calculation rules, and incomplete evidence remain consistent across the API and interface.
Compare KPI performance before and after the selected coaching context while keeping both values visible.
Express movement without hiding the baseline or confusing points with percentages.
Keep the comparison legible as the view moves between daily, weekly, and monthly evidence.
02 · The comparison contract
I defined the metric contract before designing the chart so the summary cards, series, tooltips, and backend response could not disagree about what improvement meant.
The reference value that gives the change meaning.
The result for the selected comparison window.
The percentage movement calculated from the same two values.
GuardrailWhen the baseline is missing or zero, the product must not manufacture a percentage. It should explain that the comparison cannot be calculated.
03 · One decision surface
The reading order was deliberate: choose the coaching context, see the headline evidence, then inspect how the result changed over time.
Choose the coaching journey or population being evaluated.
Choose the performance measure that defines success.
Start with a useful default while keeping the comparison configurable.
Time grain and tooltip context
Useful for short windows where each day carries enough context to stand alone.
The tooltip names the start and end dates so an aggregated point remains traceable.
Longer windows group evidence into a stable trend while preserving the selected KPI meaning.
04 · Full stack contract
I governed both sides of the boundary so filters, calculations, grouping, and incomplete states remained consistent from PostgreSQL to the rendered chart.
Make Path, KPI, and period explicit, with stable defaults and clear selected state.
Validate the request and return one comparison contract for the selected context.
Render daily, weekly, and monthly labels without changing the meaning of a point.
Aggregate at the requested grain and return the boundaries required by labels and tooltips.
Show KPI value and percentage movement together, each with explicit units.
Apply the same baseline and current formula and return a clear unavailable state when the calculation is not valid.
Distinguish no result, insufficient comparison data, and a genuine zero.
Preserve missing values instead of converting absence into a misleading result.
05 · Interpretation boundaries
The dashboard presents a before and after comparison. It does not claim that coaching alone produced the change.
The two axes keep KPI values and relative percentage movement connected without presenting them as the same unit.
An unavailable baseline, an empty result, and a failed service response remain distinct instead of collapsing into a misleading zero.
Verification focus
06 · What the product made explicit
A chart is only as trustworthy as the comparison contract behind it.
Making units, time grain, missing evidence, and attribution explicit mattered more than choosing the visualization.