| 04-10 | 1 | | UEC Road European Championships U23 (CC) | 121.0km |
| 26-09 | 34 | | UCI World Championship Kigali U23 (CM) | 164.0km |
| 22-09 | DNS | | UCI World Championship Kigali TT U23 (CM) | 31.0km |
| | | Tour de l'Avenir (2.NCUP) |
| 29-08 | 1 | 4 | Stage 6aLa Rosière Espace San Bernardo - La Rosière Espace San Bernardo | 41.0km |
| 29-08 | 3 | 2 | Stage 6bLa Rosière-Montvalezan - La Rosière-Montvalezan | 10.0km |
| 28-08 | 1 | 5 | Stage 5Saint-Gervais Mont-Blanc - Tignes | 121.0km |
| 27-08 | 69 | 21 | Stage 4Montagnat - Val Suran | 110.0km |
| 26-08 | 17 | 21 | Stage 3Étang-sur-Arroux - Châtillon-sur-Chalaronne | 158.0km |
| 25-08 | 90 | 22 | Stage 2Saint-Symphorien-sur-Coise - Vitry-en-Charollais | 136.0km |
| 24-08 | 51 | 7 | Stage 1Aoste - Saint-Galmier | 188.0km |
| 23-08 | 6 | 6 | PrologueTignes - Tignes | 3.0km |
| | | Giro Ciclistico della Valle d'Aosta - Mont Blanc (2.2U) |
| 1 | | Standings |
| 1 | | Points |
| 1 | | Mountain |
| 20-07 | 1 | 1 | Stage 5Valtournenche - Breuil-Cervinia | 119.0km |
| 19-07 | 1 | 1 | Stage 4Saint-Pierre - Valsavarenche | 160.0km |
| 18-07 | 1 | 1 | Stage 3Pré-Saint-Didier - Colle del Gran San Bernardo | 121.0km |
| 16-07 | 55 | 55 | Stage 1Aosta - Aosta | 85.0km |
| | | Giro d'Italia Next Gen (2.2U) |
| 22-06 | DNS | | Stage 8Pinerolo - Pinerolo | 127.0km |
| 21-06 | 112 | 34 | Stage 7Bra - Prato Nevoso | 163.0km |
| 20-06 | 35 | 4 | Stage 6Ovada - Acqui Terme | 154.0km |
| 19-06 | 33 | 4 | Stage 5Fiorenzuola d'Arda - Gavi | 153.0km |
| 18-06 | 59 | 1 | Stage 4Manerbio - Salsomaggiore Terme | 134.0km |
| 17-06 | 1 | 1 | Stage 3Albese con Cassano - Passo del Maniva | 144.0km |
| 16-06 | 4 | 23 | Stage 2Rho - Cantù | 146.0km |
| 15-06 | 27 | 27 | Stage 1Rho - Rho | 8.0km |
| | | Ronde de l'Isard (2.2U) |
| 1 | | Standings |
| 3 | | Mountain |
| 1 | | Points |
| 1 | | Youth |
| 25-05 | 34 | 1 | Stage 5Saubens - Saint-Girons | 150.0km |
| 24-05 | 3 | 1 | Stage 4Espéraza - Pla de Soulcem | 124.0km |
| 23-05 | 8 | 1 | Stage 3Aspet - Salies-du-Salat | 142.0km |
| 22-05 | 1 | 1 | Stage 2Luz-Saint-Sauveur - Cauterets-Cambasque | 135.0km |
| 21-05 | 8 | 4 | Stage 1Saint-Mont - Bagnères-de-Bigorre | 149.0km |
| 03-05 | 1 | | Flèche Ardennaise (1.2) | 174.0km |
| 19-04 | 1 | | Liège-Bastogne-Liège U23 (1.2U) | 175.0km |
| | | Circuit des Ardennes (2.2) |
| 2 | | Standings |
| 12 | | Points |
| 3 | | Mountain |
| 1 | | Youth |
| 13-04 | 41 | 2 | Stage 5Chooz - Charleville-Mézières | 160.0km |
| 12-04 | 25 | 2 | Stage 4Lac de Bairon - Lac des Vieilles Forges | 178.0km |
| 11-04 | 1 | 2 | Stage 3Boulzicourt - Saint-Marceau | 172.0km |
| 10-04 | 83 | 66 | Stage 2Rethel - Rethel | 172.0km |
| 09-04 | 43 | 47 | Stage 1Sedan - Nouvion-sur-Meuse | 133.0km |
| | | Settimana Internazionale Coppi e Bartali (2.1) |
| 22 | | Standings |
| 11 | | Points |
| 28 | | Mountain |
| 8 | | Youth |
| 29-03 | 11 | 22 | Stage 5Brisighella - Forlì | 132.0km |
| 28-03 | 17 | 23 | Stage 4Brisighella - Brisighella | 150.0km |
| 27-03 | 74 | 27 | Stage 3Riccione - Cesena | 142.0km |
| 26-03 | 2 | 2 | Stage 2Riccione - Sogliano al Rubicone | 163.0km |
| 25-03 | 128 | 128 | Stage 1Ferrara - Bondeno | 174.0km |
| | | Tour des Alpes-Maritimes (2.1) |
| 7 | | Standings |
| 3 | | Youth |
| 23-02 | 24 | 7 | Stage 2Villefranche-sur-Mer - Vence | 131.0km |
| 22-02 | 5 | 5 | Stage 1Contes - Gourdon | 162.0km |
| 21-02 | 35 | | Classic Var (1.1) | 165.0km |