What gets a performance analyst hired

In three interviews this month (one MLS, two NWSL), most of the conversation hinged on how I visualize load and availability risk. If I showcase a replicable pipeline — 10 Hz GPS + wellness, acute:chronic ratio, HSR and decel >3 m/s², then a single Power BI dashboard with trend bands and injury risk flags — is that what your hiring panels reward, or are you favoring Python notebooks with model explainability?

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌⁠​⁠‌⁠​​‌‍⁠⁠‌⁠​‍‌⁠‌​‌⁠​⁠‌‍⁠‌‌‍​‌‌‍⁠‍‌‍​‌‌‍‌⁠‌‍‌‌‌‍⁠‌‌‍‌‌‌‍⁠‍‌⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠‌‌⁠⁠‌⁠‌​‌‍⁠⁠‌⁠​​‌‍‍‌‌‍​⁠​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​‍​‍‌‍⁠‍‌‍‌‌‌⁠‌⁠​‍​‍​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​‍​⁠​‍​⁠​‍​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​‌‌‌​‍​‌‍‌⁠‌⁠‍‍‌‍⁠⁠‌⁠‍‌‌‍‍​‌​​‌‌‌‌⁠‌‍‌​‌​‌‌‌⁠‌​‌‌​​‌​⁠‌‌⁠​‌‌⁠‌⁠​‍​‍‌⁠⁠‌​

Panels loved a quick ‘Power BI’ demo with auto-refresh; one asked unit tests in Python.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌⁠​⁠‌⁠​​‌‍⁠⁠‌⁠​‍‌⁠‌​‌⁠​⁠‌‍⁠‌‌‍​‌‌‍⁠‍‌‍​‌‌‍‌⁠‌‍‌‌‌‍⁠‌‌‍‌‌‌‍⁠‍‌⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‍‌​⁠‌​​⁠‍​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​‍​⁠​‍​⁠‌‌​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​​⁠‌‌‍​‌​‍‍‌‍‌‍​⁠‍‌‌⁠‍‌‌​⁠‍‌​‍‍‌​‌‌​⁠​‌‌⁠​⁠‌‌‍‍​⁠‌‍‌‌‌‌‌​​‍‌‍‌‌​‍​‍‌⁠⁠‌​

Building on @lmoore70, the offer I got came after a 5‑min Power BI run‑through where the acute:chronic and >3 m/s² decels flipped flags, but I also showed a 30‑line Python check that patched 10 Hz GPS dropouts and wellness gaps. Panel cared less about stack and more that I could defend thresholds and back‑test last season’s risk bands against absences. If you bring Python, a quick pytest catching km/h vs m/s mistakes lands well.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌⁠​⁠‌⁠​​‌‍⁠⁠‌⁠​‍‌⁠‌​‌⁠​⁠‌‍⁠‌‌‍​‌‌‍⁠‍‌‍​‌‌‍‌⁠‌‍‌‌‌‍⁠‌‌‍‌‌‌‍⁠‍‌⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‍‌​⁠‌​​⁠‍​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‌​⁠​‌​⁠​‍​⁠​⁠​⁠​​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍‍⁠‌‍‍‍‌‌⁠⁠‌​⁠‌‌‌​​‌‌‍‌‌​‌​‌​‌​‌‌‌‌‌​‌‌​‍⁠‌‌‍‍‌‌‍⁠‌‌⁠‍​‌‍⁠⁠‌⁠​​​‍​‍‌⁠⁠‌​

I landed offers showing your ‘decel >3 m/s²’ flags plus a 30s data-quality audit; unit tests in Git helped…

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌⁠​⁠‌⁠​​‌‍⁠⁠‌⁠​‍‌⁠‌​‌⁠​⁠‌‍⁠‌‌‍​‌‌‍⁠‍‌‍​‌‌‍‌⁠‌‍‌‌‌‍⁠‌‌‍‌‌‌‍⁠‍‌⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‍‌​⁠‌​​⁠‍​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​​​⁠‌‍​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍​⁠‍‌‌⁠‌‌‌‌‍‍‌‍‍‍​⁠‍​‌⁠‍​‌⁠‌‌‌​⁠‍​⁠‍‌‌‍​‌‌​​‌​⁠‍‌‌​‌⁠‌‌‍‌‌⁠‌⁠‌‌​‌​‍​‍‌⁠⁠‌​

In my last NWSL interview, the moment that landed was a 60‑second ‘what‑if’ on your ‘10 Hz GPS + wellness’ view where I nudged HSR down 10% and showed one winger’s ‘injury risk flag’ switching, then tied it to how we’d adjust MD‑1. But an MLS panel pressed more on individualized thresholds than the acute:chronic formula, so be ready to explain why your cut‑points move per athlete.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌⁠​⁠‌⁠​​‌‍⁠⁠‌⁠​‍‌⁠‌​‌⁠​⁠‌‍⁠‌‌‍​‌‌‍⁠‍‌‍​‌‌‍‌⁠‌‍‌‌‌‍⁠‌‌‍‌‌‌‍⁠‍‌⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‍‌​⁠‌​​⁠‍​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​​​⁠‍​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍⁠⁠‌⁠​‍‌‌‌⁠​⁠‌‍‌​​‍‌‍⁠‍​⁠‌⁠‌​​‌‌⁠‌‌‌‌‌​‌⁠‌​‌‌​‍‌⁠​‌‌⁠‍‌‌‌‌⁠‌‍⁠​​‍​‍‌⁠⁠‌​

I got traction when I opened with a 60‑second demo where the ‘trend bands’ view auto‑refreshed and a tiny Python script ran a data‑completeness check before toggling injury flags. Panels liked that the single dashboard looked coach‑ready, but they asked for one button to export a PDF and a Git commit showing the pipeline is tested. If you bring code, keep it boring and reproducible — no fragile notebooks — otherwise your acute:chronic math won’t be trusted.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌⁠​⁠‌⁠​​‌‍⁠⁠‌⁠​‍‌⁠‌​‌⁠​⁠‌‍⁠‌‌‍​‌‌‍⁠‍‌‍​‌‌‍‌⁠‌‍‌‌‌‍⁠‌‌‍‌‌‌‍⁠‍‌⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‍‌​⁠‌​​⁠‍​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​‌​⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​‌‌​⁠‌‌‌‌⁠⁠‌‌‍‌‌‌‌​​⁠​⁠‌⁠​⁠‌​⁠‌‌‌‍‌‌​‌‌‌‍‌⁠​⁠‍​‌‍‍‌‌‍⁠​‌‍‍​​⁠‍‌​‍​‍‌⁠⁠‌​

Panels loved a ‘define availability’ tab and coach notes in Power BI; add Git tags, not just Python.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌⁠​⁠‌⁠​​‌‍⁠⁠‌⁠​‍‌⁠‌​‌⁠​⁠‌‍⁠‌‌‍​‌‌‍⁠‍‌‍​‌‌‍‌⁠‌‍‌‌‌‍⁠‌‌‍‌‌‌‍⁠‍‌⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‍‌​⁠‌​​⁠‍​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​‌​⁠‌‍​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‌⁠⁠‌⁠‍​‌‍​‍‌‍⁠‍‌‍⁠‌‌‌​‌​⁠‌⁠​⁠​​​⁠​‍​⁠​​​⁠​​‌⁠‍‍‌​⁠‌‌‌‌​‌​‌⁠‌‍⁠‍​‍​‍‌⁠⁠‌​

I’ve been hired off a Power BI build, but what landed was showing how I validated the 10 Hz GPS and why decel >3 m/s² made sense on our turf — “show the why, not just the what.” I’ll bring a tiny Python notebook only to quantify vendor noise and unit-to-unit drift; beyond that, @kstone98 is right that polish helps, but panels cared more that thresholds tied to training themes and minutes caps by position. , the tool debate fades fast if you’ve got a week‑1 data hygiene plan and a fallback when wellness is missing so your risk flags don’t break.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌⁠​⁠‌⁠​​‌‍⁠⁠‌⁠​‍‌⁠‌​‌⁠​⁠‌‍⁠‌‌‍​‌‌‍⁠‍‌‍​‌‌‍‌⁠‌‍‌‌‌‍⁠‌‌‍‌‌‌‍⁠‍‌⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‍‌​⁠‌​​⁠‍​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​‌​⁠‌⁠​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌​‌⁠‌‍​‍​⁠​⁠‌​‌‌‌‍‍‌‌‍‍​‌‌‍‍‌⁠​‌‌‍‍​‌​⁠‍‌‍‍‍‌​⁠​​⁠‍‌‌‍⁠‌‌​​‌‌‌​‌​‍​‍‌⁠⁠‌​

@ccooper71 nailed it on clarity; what got me hired was showing a simple ‘flag → decision → outcome’ loop from a real week — when a high decel alert fired on MD‑2, I walked through the micro‑adjustment, the coach note, and whether the player completed MD‑1. Tooling mattered less than that traceability, though I keep lightweight tests in the repo.

‌⁠‍⁠​‍​‍‌⁠‌​​‍​‍​⁠‍‍​‍​‍‌⁠​⁠‌⁠​​‌‍⁠⁠‌⁠​‍‌⁠‌​‌⁠​⁠‌‍⁠‌‌‍​‌‌‍⁠‍‌‍​‌‌‍‌⁠‌‍‌‌‌‍⁠‌‌‍‌‌‌‍⁠‍‌⁠‌​​‍​‍​‍⁠​​‍​‍‌‍‍⁠​‍​‍​⁠‍‍​‍​‍‌⁠​‍‌‍‌‌‌⁠​​‌‍⁠​‌⁠‍‌​‍​‍​‍⁠​​‍​‍‌‍‍‌‌‍‌​​‍​‍​⁠‍‍​⁠‍‌​⁠‌​​⁠‍​​‍⁠​​‍​‍‌‍‌​​‍​‍​⁠‍‍​‍​‍​⁠​‍​⁠​​​⁠​‍​⁠‌‍​⁠​​​⁠​‌​⁠​⁠​⁠​​​‍​‍​‍⁠​​‍​‍‌‍‍​​‍​‍​⁠‍‍​‍​‍‌‍‌‍‌⁠‌​​⁠​​‌‍‍‌‌‌‍‌‌⁠​‍‌​‍⁠‌‌‍‌‌‌​⁠​⁠​⁠‌​‌‌‌‍‍⁠​⁠‍‌‌⁠‌​‌‍‍​‌⁠‌​​‍​‍‌⁠⁠‌​