Your file tells me what happened.
You tell me how it felt. I read the raw file of every key session: power, heart rate, terrain, cadence. Not the app summary. This is what comes back to you.
Burned against eaten, hour by hour.
From your power I estimate how much carbohydrate each hour cost you. Against it goes what you actually ate. The gap comes out of your stores, and when the stores run low, the fade starts. Many late-race collapses are a fuel problem that looks like a fitness problem.
Then we practise the race-day number in training, so your gut is ready on the day.

One number is never the whole story.
Your engine is the power you can hold for a long time. Your battery is the extra work you can spend above it before you have to back off. Two riders with the same engine can race very differently: the bigger battery wins the short climbs and the attacks, the engine settles the long efforts.
I estimate both from your own files, give each a range, and say which test would firm it up.

Everything that moves your power, and what it buys.
Training, fuel, sleep and heat shape your physiology. Your physiology sets your power. Then aero, position, weight, equipment, course and pacing decide how much speed each watt buys. We work on the parts that move yours, not on all of them at once.

- Terrain first. A slower second hour is not tiredness if the road climbed.
- Same window, same effort. I only pair heart rate and power that happened together.
- Race day is not training day. Adrenaline lifts early race heart rate, so your zones never come from a race file.
- Every number labelled. Lab, field or estimate. If it is an estimate, you get the range.
You see the outputs. The models behind them stay mine.