Der in Toronto geborene Cavallini ist der Sohn eines in Mendoza gebürtigen Vaters und einer kanadischen Mutter. Er hat einen Bruder namens Christian. Im Alter von vier Jahren zog die Familie nach Mississauga. Mit dem Fußballspielen begann er bereits im Alter von drei Jahren im Club Uruguay. Im Alter von 16 oder 17 Jahren ging er nach Uruguay und schloss sich der Jugendmannschaft Nacional Montevideos an.[2]
Der nach Angaben seines Vereins 1,82 Meter[3][4] große Stürmer stieß im Juli 2012 als Leihgabe Nacionals zu Juventud.[5] In der Apertura und der Clausura 2012/13 bestritt der Linksfuß[6] dort 25 Partien in der Primera División und erzielte zehn Tore.[7][8] Nach der Spielzeit 2012/13 kehrte er zu Nacional zurück.[9] Bis zum Abschluss der Apertura 2013 absolvierte er in der Spielzeit vier Ligaspiele (kein Tor). Anfang Januar 2014 schloss er sich dem Ligakonkurrenten Centro Atlético Fénix auf Leihbasis an.[10] In der Clausura 2014 bestritt er dort 13 weitere Erstligapartien und traf zweimal ins gegnerische Tor. In der Saison 2014/15 wurde er in 27 Erstligaspielen (14 Tore) eingesetzt. Während der Spielzeit 2015/16 folgten sieben Treffer in 25 weiteren Erstligaeinsätzen. In der Saison 2016 kam er in elf Erstligaspielen (fünf Tore) und zweimal (kein Tor) in der Copa Sudamericana 2016 zum Einsatz. Im Januar 2017 wechselte er zum Club Atlético Peñarol, für den er 16 mal in der Liga auflief und sechs Tore schoss.[7][11]
In seiner weiteren Karriere wechselte er weiterhin mehrmals den Verein. So spielte er nach seiner 2018 geendeten Zeit bei Peñarol bis 2019 beim Club Puebla, wohin er zuvor bereits von Peñarol verliehen worden war. Von 2020 bis 2022 war er bei den Vancouver Whitecaps aktiv und 2023 dann beim Club Tijuana. Seit Anfang 2024 steht er wieder beim Club Puebla unter Vertrag.
Er absolvierte zudem drei Spiele für die U-23 Kanadas, allesamt im Jahr 2012 beim Olympia-Qualifikationsturnier der CONCACAF. Dort belegte er mit Kanada den vierten Platz. Dabei erzielte er einen Treffer beim 1:1 gegen die kubanische Mannschaft.[15]
Seit 2012 spielt er häufig in der A-Nationalmannschaft der Nordamerikaner. Sein Debüt in dieser Auswahl feierte er am 15. August 2012 im Freundschaftsländerspiel gegen Trinidad und Tobago. Das zweite Länderspiel bestritt er im selben Jahr im Rahmen der WM-Qualifikation gegen Honduras. Anschließend folgte eine längere Nominierungspause. Erst am 13. Oktober 2015 kam er unter Trainer Benito Floro gegen Ghanas Auswahl zu seinem dritten Länderspieleinsatz.[16] Mittlerweile (Stand: Juli 2024) kam er bei 41 Länderspielen des A-Teams zum Einsatz und erzielte dabei 19 Tore.[17]