It was Thanksgiving morning, and my brother Steve was visiting from SoCal. He’s a cyclist, but an outdoor one exclusively (weirdo). We decided it would be fun to put in a long Zwift ride together here in the Zwift Insider Pain Lab before sitting down for the big family meal. Because pumpkin pie.

The plan: a Z2/warmup spin for ~90 minutes, followed by a 30-minute race and cooldown. I poked around the event schedule until I found a race that looked like it would be fun for Steve: the right length, a flatter course, a good number of signups. Then we headed out and rode with different RoboPacers so Steve could get the feel of riding in a pack. (He’s done some Zwifting in the past, but it’s been a couple of years.)

Race Structure: F365 Racing League: Week 6 / Neokyo / Neokyo Crit Course
As we spun around Fuego Flats I pulled up the race details to make sure we knew what we were getting ourselves into. The “Week 6” in the title indicated this race was part of a series, so we already knew the real race was for the overall series. But this would be a one-off effort for us.
The race covered 6 laps of the Neokyo Crit Course. Reading further I discovered this was actually a points race. Hmph. Not exactly what I was shooting for, as I was trying to keep it simple for Steve. But this was still the best race in our time window, so we stuck with it.
Digging into the points structure, I was struck by the complexity of it. Here’s what the text said:
- Finishing points (100,95,90,85,80,75,70,65,60,55,50,45,40,35,30,25,20,15,10,5,5,5,5,5,5)
- Primes
- Alley Sprint – laps 2 and 4 FAL (25,20,18,16,14,12,10,5,3,1)
- Castle Park Sprint – laps 1, 3 and 5 FAL (25,20,18,16,14,12,10,5,3,1)
It was the primes that seemed extra-confusing. How were our oxygen-depleted race brains supposed to remember which sprints counted on which laps? All part of the challenge, I guess. “Alley Sprint on even laps, Castle Park on odd laps.” That’s how I locked it into my mind.
Steve’s group (C) started 1 minute behind me (B), so I would be able to give him previews of course features before he hit them. Time to race!
The First Half (Laps 1-3)
67 B riders started from Neokyo’s harbor pen. The pace wasn’t frantic, which was great news for me since we had 5 sprints and a finish to contest. As the pack calmed down through the Alley Sprint, Steve spun up his watts and started his C race.
We entered the parking lot which delivers you to the Castle Park Reverse Sprint start line and I revved up the watts for the first sprint of the day. I wasn’t pushing 100% (we had too many sprints left) but I wanted to give it a good go and see how competitive these sprints would be.

4th place. Not bad.
The Alley Sprint and lap 2 were just up the road, and the pack was not slowing down. We hit the start line of the Alley Sprint and I pushed the effort, coming over the line in 4th. Then we got to take a break, since the next Castle Sprint wasn’t awarding points (it was an even lap after all) and neither was the next Alley Sprint (since that would be lap 3).
But something unexpected happened as we hit the Alley Sprint: the group revved up and riders went hard! I had to push just to hold the wheels, and in my hubris I thought, “Some riders got the confusing points/laps structure mixed up. Poor schmucks!” This was lap 3, after all. Alley Sprint on even laps, Castle Park on odd.

We hit the Castle Park sprint and I finished 9th, thanks to having no powerup. Let’s talk about this for a moment…
Suggestion: Please Kill the XP Bonus
If race organizers don’t ask Zwift to manually set up a custom powerup mix, riders get the standard randomized mix of powerups at each banner:

Here’s the problem: no racer wants an XP bonus during a race. Especially when the race has primes!
My suggestion for Zwift: remove the XP bonuses from race events.
The Second Half (Laps 4-6)
My sprints weren’t feeling great, and I kept getting friggin XP bonuses instead of the aeros I desperately wanted. So on the lap 4 Alley Sprint I got 6th, then on the lap 5 Castle Park Sprint I got 10th. It wasn’t looking pretty.
At the same time, there was clearly plenty of confusion in the B peloton, which (again, in my hubris) I figured would work in my favor. Riders were messaging and asking, “When is the next sprint prime?” I thought about sowing more confusion, but decided that, having closely studied the race description, I would chime in with my trustworthy knowledge.
Steve, next to me on Boone’s Wahoo KICKR Bike, had been dropped from the front group of C’s after a tough Castle Park Sprint. But he was wisely sitting in the chase group and saving his legs for the final push.
The Finish

As we rode easily through the final Castle Park Sprint, a rider attacked off the front with 1.5km to go. I sat in the wheels, waiting for others to pull him back. But nobody was doing it!
I had an aero powerup (finally) that I’d saved for the finishing sprint. I’m not sure if it was brilliant racecraft, my brother looking on, or my ongoing hubris problem. But I decided now was the time to jump and try to go long for the win.
As the brick path tilted upward after the sprint banner, I hit the watts hard, jumping away from the group quickly. I reached the attacker within a few seconds and blew past him. Somewhere in all of this I activated my powerup.
But the meters were counting down so slowly. I had a 10s gap at one point, but the pack began eating into that as the distance counted down to 600 meters, 500 meters…
With 150 meters to go, I wasn’t sure how I was even pedaling. Steve was yelling, “Keep pushing, keep pushing! You’ve still got this!” My arms and legs felt like they were flopping all over the place in the final 10 seconds as the pack bore down on me and I did whatever I could to turn the pedals over.
As I crossed the finish line another rider flew past. I thought I’d been pipped! The results screen popped up, but that didn’t answer my question, because it wasn’t showing the results for the B race (a repeated problem I’ve seen recently). I would have to check ZwiftPower.
Lo and behold: ZwiftPower showed me finishing first. Hurray!
See activity on Strava >
See results on ZwiftPower >

When Is a Win Not a Win?
Of course, this was a points race, not a scratch race. I may have crossed the finish line first, but I didn’t think I had enough points for the win. I knew I would have to wait for F365 to tabulate the scores using their funky prime setup, so I hit the showers and joined the family downstairs.
Later that day I was poking around Facebook and noticed a discussion in the F365 group. Riders were asking about the Alley Sprint – which laps counted for points?
“Laps 2 and 4, obviously,” I thought. Then I read further, and someone explained that the Alley Sprint start line comes before the lap banner, while the finish line is after the banner. Here’s my helpful illustration:

So does “lap 2” mean the Alley Sprint starts on lap 2, or ends on it?
Uh-oh. I was basing my sprints on the finish line, not the start line. But clearly many riders were basing them on the start line (hence the confusing hard sprints on laps I thought were supposed to be easy).
F365 admins confirmed it was the lap count at the start, not the finish, which they were using. And with that, I gave up any hopes I had of winning!
In the end, I finished third in points. Steve was a respectable 28th across the line (out of 85), but didn’t get a final points result since he’s not on ZwiftPower.
Takeaways
This was my first long finish attack in quite a while, and I’m stoked with how it turned out. In fact, I set new 2022 power bests between 60-120 seconds with that final effort! Stoked with that, and stoked that my brother got to see some full-on Zwift racing action.

While I’m generally good at pre-race recon, I’m constantly amazed at the details my brain misses mid-race. (I’ve sprinted for the wrong finish line more than once, for example.) And in this race the fact that the lap banner came mid-Alley Sprint didn’t even phase me. I never considered the possibility that I was sprinting on the wrong laps! Pure hubris.
Lastly, I’ll say this: there’s a fine line between creating a race with strategic elements that make it more interesting, and creating a race that takes so much research and thought that it’s actually less fun. I think the points setup for this was a bit more complex than the average Zwifter can take on, given the weird Alley Sprint setup. That said, I applaud F365 for creating an event that’s different from what others are doing. That takes a lot of thought and effort, and small mistakes will be made along the way because you’re doing things nobody has done before. No big deal, I say. Learn and ride on!
Your Thoughts
Questions or comments? Post below!
Yes get rid of 10xp points on races – it’s so unfair and demotivating when races become stacked against you just because of the luck of the power up. Or get rid of power ups for races completely.
I’m a powerup fan. But the XP bonus is no powerup! #killtheracebonus
Was great to see you in that race and that alley sprint is a confusing one and one that we will not be using again! We did have a scratch race but seemed many people wanted the incentive of the primes for points, guess we all want different races and its good that here are so many different organisers to be able to offer what people want and congrats on the power pb! Live segments would be nice to have for sprint efforts
honestly they just need to get rid of powerups in races full stop.
finishing places should be decided by what you got in the tank and not RNGsus.
Test 2
Test
Test 3
“My suggestion for Zwift: remove the XP bonuses from race events.” YES! I’ve been complaining about this during the monthly series races. I also recently did one of the Pineapple No Power Up races. It was kinda refreshing not having to worry about it. That said, I do appreciate the strategy and “gameness” of Zwift, so as long as the 10xp is removed from races, I’m good. “The results screen popped up, but that didn’t answer my question, because it wasn’t showing the results for the B race (a repeated problem I’ve seen recently)” It’s not intuitive, but if you… Read more »
Oh, I clicked the B! That didn’t fix the problem at all. Made it worse actually. At least the initial screen showed my name. Clicking B made me disappear!
Oh…well then that stinks! Hopefully the new update takes care of it?
Copy Eric’s observation. I had this in many races (maybe 70% of them over the last 4 weeks, maybe?).
Huh…it’s worked for me when I clicked the B again today. I’ve not had that issue (I’ve got plenty of other complaints, so I’m glad there’s one less for me to worry about…).