Castles began his college football career with the California Golden Bears. He played in three games during his true freshman season while maintaining a redshirt on the year and caught one pass, which was a 15-yard reception in Cal's 10-7 win over TCU in the 2018 Cheez-It Bowl.[4] Castles left the team two games into his sophomore season. He later entered the NCAA transfer portal.[5]
Castles ultimately transferred to UC Davis.[6] He was named first-team All-Big Sky Conference after catching 12 passes for 194 yards and three touchdowns in his first season playing for the Aggies, which was shortened and played in the spring of 2021 due to the COVID-19 pandemic in the United States.[7] Castles was named second-team All-Big Sky after recording 27 receptions for 387 yards and four touchdowns.[8] Castles had 30 catches for 347 yards and two touchdowns in his redshirt senior season.[9] After the season, he entered the NCAA transfer portal and utilize the extra year of eligibility granted to college athletes who played in the 2020 season due to the coronavirus pandemic.[10]
Castles committed to transfer to Tennessee.[11] In the 2023 season, Castles played in all 13 games. He had 22 receptions for 283 receiving yards and five receiving touchdowns.[12]
Castles was signed by the Philadelphia Eagles as an undrafted free agent on May 3, 2024.[14] He was also selected by the Memphis Showboats in the ninth round of the 2024 UFL draft on July 17.[15] McCallan was waived with an injury designation on August 3.[16]
Los Angeles Chargers
On October 15, 2024, Castles signed with the Los Angeles Chargers' practice squad.[17] He signed a reserve/future contract with Los Angeles on January 13, 2025.[18] On August 6, Castles was waived by the Chargers.[19]
Los Angeles Rams
On August 11, 2025, Castles signed with the Los Angeles Rams.[20] He was waived on August 24.[21]
Green Bay Packers
On November 4, 2025, Castles signed with the Green Bay Packers' practice squad.[22] He was placed on the practice squad's injured reserve list on January 1, 2026.[23] Castles signed a reserve/future contract with Green Bay on January 12.[24]
On April 17, 2026, Castles was released by the Packers.[25]