Is it possible to fire a remote to the server to team the player from a string?

Yeah, there’s nothing wrong with your actual logic; that’s fine. If the text you’re sending is not the same case as the Team name it’s not going to work. Also, your use of FindFirstChild offers no benefit (you can just use square brackets).

Found the solution, I created another variable inside the localscript called “FiringTeam”.
Then with the FireServer, I changed the CurrentTeam there to firing team.

Then, I simply change the variable to the table’s team names and it worked.

ClickSound:Play()
FiringTeam = i
CurrentTeam = i:upper()
GUI.Selected.Text = "SELECTED TEAM: " .. CurrentTeam

You could also just do

GUI.Selected.Text = "SELECTED TEAM: " .. CurrentTeam:upper()

and leave the variable (if you only use it there). Seems pointless creating a variable to only use it once.