diff --git a/scouting/db/db.go b/scouting/db/db.go
index 578edb6..cf1c823 100644
--- a/scouting/db/db.go
+++ b/scouting/db/db.go
@@ -82,7 +82,7 @@
 
 type NotesData struct {
 	ID             uint `gorm:"primaryKey"`
-	TeamNumber     int32
+	TeamNumber     string
 	Notes          string
 	GoodDriving    bool
 	BadDriving     bool
@@ -94,7 +94,7 @@
 }
 
 type Ranking struct {
-	TeamNumber         int `gorm:"primaryKey"`
+	TeamNumber         string `gorm:"primaryKey"`
 	Losses, Wins, Ties int32
 	Rank, Dq           int32
 }
@@ -108,9 +108,9 @@
 
 	ID          uint `gorm:"primaryKey"`
 	MatchNumber int32
-	Rank1       int32
-	Rank2       int32
-	Rank3       int32
+	Rank1       string
+	Rank2       string
+	Rank3       string
 }
 
 type ParsedDriverRankingData struct {
@@ -340,14 +340,14 @@
 	return shifts, result.Error
 }
 
-func (database *Database) QueryActions(teamNumber_ int) ([]Action, error) {
+func (database *Database) QueryActions(teamNumber_ string) ([]Action, error) {
 	var actions []Action
 	result := database.
 		Where("team_number = ?", teamNumber_).Find(&actions)
 	return actions, result.Error
 }
 
-func (database *Database) QueryNotes(TeamNumber int32) ([]string, error) {
+func (database *Database) QueryNotes(TeamNumber string) ([]string, error) {
 	var rawNotes []NotesData
 	result := database.Where("team_number = ?", TeamNumber).Find(&rawNotes)
 	if result.Error != nil {
@@ -361,7 +361,7 @@
 	return notes, nil
 }
 
-func (database *Database) QueryRankings(TeamNumber int) ([]Ranking, error) {
+func (database *Database) QueryRankings(TeamNumber string) ([]Ranking, error) {
 	var rankins []Ranking
 	result := database.Where("team_number = ?", TeamNumber).Find(&rankins)
 	return rankins, result.Error
diff --git a/scouting/db/db_test.go b/scouting/db/db_test.go
index 94dce7e..d7001b8 100644
--- a/scouting/db/db_test.go
+++ b/scouting/db/db_test.go
@@ -114,12 +114,12 @@
 
 	correct := []Ranking{
 		Ranking{
-			TeamNumber: 123,
+			TeamNumber: "123",
 			Losses:     1, Wins: 7, Ties: 0,
 			Rank: 2, Dq: 0,
 		},
 		Ranking{
-			TeamNumber: 125,
+			TeamNumber: "125",
 			Losses:     2, Wins: 4, Ties: 0,
 			Rank: 2, Dq: 0,
 		},
@@ -691,22 +691,22 @@
 
 	testDatabase := []Ranking{
 		Ranking{
-			TeamNumber: 123,
+			TeamNumber: "123",
 			Losses:     1, Wins: 7, Ties: 2,
 			Rank: 2, Dq: 0,
 		},
 		Ranking{
-			TeamNumber: 124,
+			TeamNumber: "124",
 			Losses:     3, Wins: 4, Ties: 0,
 			Rank: 4, Dq: 2,
 		},
 		Ranking{
-			TeamNumber: 125,
+			TeamNumber: "125",
 			Losses:     5, Wins: 2, Ties: 0,
 			Rank: 17, Dq: 0,
 		},
 		Ranking{
-			TeamNumber: 126,
+			TeamNumber: "126",
 			Losses:     0, Wins: 7, Ties: 0,
 			Rank: 5, Dq: 0,
 		},
@@ -719,13 +719,13 @@
 
 	correct := []Ranking{
 		Ranking{
-			TeamNumber: 126,
+			TeamNumber: "126",
 			Losses:     0, Wins: 7, Ties: 0,
 			Rank: 5, Dq: 0,
 		},
 	}
 
-	got, err := fixture.db.QueryRankings(126)
+	got, err := fixture.db.QueryRankings("126")
 	check(t, err, "Failed QueryRankings()")
 
 	if !reflect.DeepEqual(correct, got) {
@@ -830,22 +830,22 @@
 
 	correct := []Ranking{
 		Ranking{
-			TeamNumber: 123,
+			TeamNumber: "123",
 			Losses:     1, Wins: 7, Ties: 2,
 			Rank: 2, Dq: 0,
 		},
 		Ranking{
-			TeamNumber: 124,
+			TeamNumber: "124",
 			Losses:     3, Wins: 4, Ties: 0,
 			Rank: 4, Dq: 2,
 		},
 		Ranking{
-			TeamNumber: 125,
+			TeamNumber: "125",
 			Losses:     5, Wins: 2, Ties: 0,
 			Rank: 17, Dq: 0,
 		},
 		Ranking{
-			TeamNumber: 126,
+			TeamNumber: "126",
 			Losses:     0, Wins: 7, Ties: 0,
 			Rank: 5, Dq: 0,
 		},
@@ -1021,27 +1021,27 @@
 
 	testDatabase := []Ranking{
 		Ranking{
-			TeamNumber: 123,
+			TeamNumber: "123",
 			Losses:     1, Wins: 7, Ties: 2,
 			Rank: 2, Dq: 0,
 		},
 		Ranking{
-			TeamNumber: 124,
+			TeamNumber: "124",
 			Losses:     3, Wins: 4, Ties: 0,
 			Rank: 4, Dq: 2,
 		},
 		Ranking{
-			TeamNumber: 125,
+			TeamNumber: "125",
 			Losses:     5, Wins: 2, Ties: 0,
 			Rank: 17, Dq: 0,
 		},
 		Ranking{
-			TeamNumber: 126,
+			TeamNumber: "126",
 			Losses:     0, Wins: 7, Ties: 0,
 			Rank: 5, Dq: 0,
 		},
 		Ranking{
-			TeamNumber: 125,
+			TeamNumber: "125",
 			Losses:     2, Wins: 4, Ties: 1,
 			Rank: 5, Dq: 0,
 		},
@@ -1054,13 +1054,13 @@
 
 	correct := []Ranking{
 		Ranking{
-			TeamNumber: 125,
+			TeamNumber: "125",
 			Losses:     2, Wins: 4, Ties: 1,
 			Rank: 5, Dq: 0,
 		},
 	}
 
-	got, err := fixture.db.QueryRankings(125)
+	got, err := fixture.db.QueryRankings("125")
 	check(t, err, "Failed QueryRankings()")
 
 	checkDeepEqual(t, correct, got)
@@ -1072,14 +1072,14 @@
 
 	expected := []string{"Note 1", "Note 3"}
 
-	err := fixture.db.AddNotes(NotesData{TeamNumber: 1234, Notes: "Note 1", GoodDriving: true, BadDriving: false, SolidPlacing: false, SketchyPlacing: true, GoodDefense: false, BadDefense: true, EasilyDefended: true})
+	err := fixture.db.AddNotes(NotesData{TeamNumber: "1234", Notes: "Note 1", GoodDriving: true, BadDriving: false, SolidPlacing: false, SketchyPlacing: true, GoodDefense: false, BadDefense: true, EasilyDefended: true})
 	check(t, err, "Failed to add Note")
-	err = fixture.db.AddNotes(NotesData{TeamNumber: 1235, Notes: "Note 2", GoodDriving: false, BadDriving: true, SolidPlacing: false, SketchyPlacing: true, GoodDefense: false, BadDefense: false, EasilyDefended: false})
+	err = fixture.db.AddNotes(NotesData{TeamNumber: "1235", Notes: "Note 2", GoodDriving: false, BadDriving: true, SolidPlacing: false, SketchyPlacing: true, GoodDefense: false, BadDefense: false, EasilyDefended: false})
 	check(t, err, "Failed to add Note")
-	err = fixture.db.AddNotes(NotesData{TeamNumber: 1234, Notes: "Note 3", GoodDriving: true, BadDriving: false, SolidPlacing: false, SketchyPlacing: true, GoodDefense: true, BadDefense: false, EasilyDefended: true})
+	err = fixture.db.AddNotes(NotesData{TeamNumber: "1234", Notes: "Note 3", GoodDriving: true, BadDriving: false, SolidPlacing: false, SketchyPlacing: true, GoodDefense: true, BadDefense: false, EasilyDefended: true})
 	check(t, err, "Failed to add Note")
 
-	actual, err := fixture.db.QueryNotes(1234)
+	actual, err := fixture.db.QueryNotes("1234")
 	check(t, err, "Failed to get Notes")
 
 	if !reflect.DeepEqual(expected, actual) {
@@ -1092,20 +1092,20 @@
 	defer fixture.TearDown()
 
 	expected := []DriverRankingData{
-		{ID: 1, MatchNumber: 12, Rank1: 1234, Rank2: 1235, Rank3: 1236},
-		{ID: 2, MatchNumber: 12, Rank1: 1236, Rank2: 1235, Rank3: 1234},
+		{ID: 1, MatchNumber: 12, Rank1: "1234", Rank2: "1235", Rank3: "1236"},
+		{ID: 2, MatchNumber: 12, Rank1: "1236", Rank2: "1235", Rank3: "1234"},
 	}
 
 	err := fixture.db.AddDriverRanking(
-		DriverRankingData{MatchNumber: 12, Rank1: 1234, Rank2: 1235, Rank3: 1236},
+		DriverRankingData{MatchNumber: 12, Rank1: "1234", Rank2: "1235", Rank3: "1236"},
 	)
 	check(t, err, "Failed to add Driver Ranking")
 	err = fixture.db.AddDriverRanking(
-		DriverRankingData{MatchNumber: 12, Rank1: 1236, Rank2: 1235, Rank3: 1234},
+		DriverRankingData{MatchNumber: 12, Rank1: "1236", Rank2: "1235", Rank3: "1234"},
 	)
 	check(t, err, "Failed to add Driver Ranking")
 	err = fixture.db.AddDriverRanking(
-		DriverRankingData{MatchNumber: 13, Rank1: 1235, Rank2: 1234, Rank3: 1236},
+		DriverRankingData{MatchNumber: 13, Rank1: "1235", Rank2: "1234", Rank3: "1236"},
 	)
 	check(t, err, "Failed to add Driver Ranking")
 
diff --git a/scouting/webserver/driver_ranking/driver_ranking.go b/scouting/webserver/driver_ranking/driver_ranking.go
index 82e34e1..82445bf 100644
--- a/scouting/webserver/driver_ranking/driver_ranking.go
+++ b/scouting/webserver/driver_ranking/driver_ranking.go
@@ -76,9 +76,9 @@
 			// Most of the data is unused so we just fill in empty
 			// strings.
 			"", "", "", "",
-			strconv.Itoa(int(ranking.Rank1)),
-			strconv.Itoa(int(ranking.Rank2)),
-			strconv.Itoa(int(ranking.Rank3)),
+			ranking.Rank1,
+			ranking.Rank2,
+			ranking.Rank3,
 		})
 	}
 
diff --git a/scouting/webserver/driver_ranking/driver_ranking_test.go b/scouting/webserver/driver_ranking/driver_ranking_test.go
index 47a412e..98a60e8 100644
--- a/scouting/webserver/driver_ranking/driver_ranking_test.go
+++ b/scouting/webserver/driver_ranking/driver_ranking_test.go
@@ -28,8 +28,8 @@
 func TestDriverRankingRun(t *testing.T) {
 	var database MockDatabase
 	database.rawRankings = []db.DriverRankingData{
-		db.DriverRankingData{MatchNumber: 1, Rank1: 1234, Rank2: 1235, Rank3: 1236},
-		db.DriverRankingData{MatchNumber: 2, Rank1: 971, Rank2: 972, Rank3: 973},
+		db.DriverRankingData{MatchNumber: 1, Rank1: "1234", Rank2: "1235", Rank3: "1236"},
+		db.DriverRankingData{MatchNumber: 2, Rank1: "971", Rank2: "972", Rank3: "973"},
 	}
 
 	GenerateFullDriverRanking(&database, "./fake_driver_rank_script")
diff --git a/scouting/webserver/match_list/match_list.go b/scouting/webserver/match_list/match_list.go
index c5af661..2ac5133 100644
--- a/scouting/webserver/match_list/match_list.go
+++ b/scouting/webserver/match_list/match_list.go
@@ -6,7 +6,6 @@
 	"github.com/frc971/971-Robot-Code/scouting/db"
 	"github.com/frc971/971-Robot-Code/scouting/scraping"
 	"log"
-	"strconv"
 	"strings"
 )
 
@@ -14,66 +13,32 @@
 	AddToMatch(db.TeamMatch) error
 }
 
-func parseTeamKey(teamKey string) (int, error) {
+func parseTeamKey(teamKey string) string {
 	// TBA prefixes teams with "frc". Not sure why. Get rid of that.
 	teamKey = strings.TrimPrefix(teamKey, "frc")
-	magnitude := 0
-	if strings.HasSuffix(teamKey, "A") {
-		magnitude = 0
-		teamKey = strings.TrimSuffix(teamKey, "A")
-	} else if strings.HasSuffix(teamKey, "B") {
-		magnitude = 9
-		teamKey = strings.TrimSuffix(teamKey, "B")
-	} else if strings.HasSuffix(teamKey, "C") {
-		magnitude = 8
-		teamKey = strings.TrimSuffix(teamKey, "C")
-	} else if strings.HasSuffix(teamKey, "D") {
-		magnitude = 7
-		teamKey = strings.TrimSuffix(teamKey, "D")
-	} else if strings.HasSuffix(teamKey, "E") {
-		magnitude = 6
-		teamKey = strings.TrimSuffix(teamKey, "E")
-	} else if strings.HasSuffix(teamKey, "F") {
-		magnitude = 5
-		teamKey = strings.TrimSuffix(teamKey, "F")
-	}
-
-	if magnitude != 0 {
-		teamKey = strconv.Itoa(magnitude) + teamKey
-	}
-
-	result, err := strconv.Atoi(teamKey)
-	return result, err
+	return teamKey
 }
 
 // Parses the alliance data from the specified match and returns the three red
 // teams and the three blue teams.
-func parseTeamKeys(match *scraping.Match) ([3]int32, [3]int32, error) {
+func parseTeamKeys(match *scraping.Match) ([3]string, [3]string, error) {
 	redKeys := match.Alliances.Red.TeamKeys
 	blueKeys := match.Alliances.Blue.TeamKeys
 
 	if len(redKeys) != 3 || len(blueKeys) != 3 {
-		return [3]int32{}, [3]int32{}, errors.New(fmt.Sprintf(
+		return [3]string{}, [3]string{}, errors.New(fmt.Sprintf(
 			"Found %d red teams and %d blue teams.", len(redKeys), len(blueKeys)))
 	}
 
-	var red [3]int32
+	var red [3]string
 	for i, key := range redKeys {
-		team, err := parseTeamKey(key)
-		if err != nil {
-			return [3]int32{}, [3]int32{}, errors.New(fmt.Sprintf(
-				"Failed to parse red %d team '%s' as integer: %v", i+1, key, err))
-		}
-		red[i] = int32(team)
+		team := parseTeamKey(key)
+		red[i] = team
 	}
-	var blue [3]int32
+	var blue [3]string
 	for i, key := range blueKeys {
-		team, err := parseTeamKey(key)
-		if err != nil {
-			return [3]int32{}, [3]int32{}, errors.New(fmt.Sprintf(
-				"Failed to parse blue %d team '%s' as integer: %v", i+1, key, err))
-		}
-		blue[i] = int32(team)
+		team := parseTeamKey(key)
+		blue[i] = team
 	}
 	return red, blue, nil
 }
@@ -97,32 +62,32 @@
 			{
 				MatchNumber: int32(match.MatchNumber),
 				SetNumber:   int32(match.SetNumber), CompLevel: match.CompLevel,
-				Alliance: "R", AlliancePosition: 1, TeamNumber: strconv.Itoa(int(red[0])),
+				Alliance: "R", AlliancePosition: 1, TeamNumber: red[0],
 			},
 			{
 				MatchNumber: int32(match.MatchNumber),
 				SetNumber:   int32(match.SetNumber), CompLevel: match.CompLevel,
-				Alliance: "R", AlliancePosition: 2, TeamNumber: strconv.Itoa(int(red[1])),
+				Alliance: "R", AlliancePosition: 2, TeamNumber: red[1],
 			},
 			{
 				MatchNumber: int32(match.MatchNumber),
 				SetNumber:   int32(match.SetNumber), CompLevel: match.CompLevel,
-				Alliance: "R", AlliancePosition: 3, TeamNumber: strconv.Itoa(int(red[2])),
+				Alliance: "R", AlliancePosition: 3, TeamNumber: red[2],
 			},
 			{
 				MatchNumber: int32(match.MatchNumber),
 				SetNumber:   int32(match.SetNumber), CompLevel: match.CompLevel,
-				Alliance: "B", AlliancePosition: 1, TeamNumber: strconv.Itoa(int(blue[0])),
+				Alliance: "B", AlliancePosition: 1, TeamNumber: blue[0],
 			},
 			{
 				MatchNumber: int32(match.MatchNumber),
 				SetNumber:   int32(match.SetNumber), CompLevel: match.CompLevel,
-				Alliance: "B", AlliancePosition: 2, TeamNumber: strconv.Itoa(int(blue[1])),
+				Alliance: "B", AlliancePosition: 2, TeamNumber: blue[1],
 			},
 			{
 				MatchNumber: int32(match.MatchNumber),
 				SetNumber:   int32(match.SetNumber), CompLevel: match.CompLevel,
-				Alliance: "B", AlliancePosition: 3, TeamNumber: strconv.Itoa(int(blue[2])),
+				Alliance: "B", AlliancePosition: 3, TeamNumber: blue[2],
 			},
 		}
 
diff --git a/scouting/webserver/rankings/rankings.go b/scouting/webserver/rankings/rankings.go
index 0d20b54..9ffa503 100644
--- a/scouting/webserver/rankings/rankings.go
+++ b/scouting/webserver/rankings/rankings.go
@@ -4,7 +4,6 @@
 	"github.com/frc971/971-Robot-Code/scouting/db"
 	"github.com/frc971/971-Robot-Code/scouting/scraping"
 	"log"
-	"strconv"
 	"strings"
 )
 
@@ -12,10 +11,10 @@
 	AddOrUpdateRankings(db.Ranking) error
 }
 
-func parseTeamKey(teamKey string) (int, error) {
+func parseTeamKey(teamKey string) string {
 	// TBA prefixes teams with "frc". Not sure why. Get rid of that.
 	teamKey = strings.TrimPrefix(teamKey, "frc")
-	return strconv.Atoi(teamKey)
+	return teamKey
 }
 
 func GetRankings(database Database, year int32, eventCode string, blueAllianceConfig string) {
@@ -26,12 +25,7 @@
 	}
 
 	for _, rank := range rankings.Rankings {
-		teamKey, err := parseTeamKey(rank.TeamKey)
-
-		if err != nil {
-			log.Println("Failed to parse team key: ", err)
-			continue
-		}
+		teamKey := parseTeamKey(rank.TeamKey)
 
 		rankingInfo := db.Ranking{
 			TeamNumber: teamKey,
diff --git a/scouting/webserver/rankings/rankings_test.go b/scouting/webserver/rankings/rankings_test.go
index 4ab3c34..748bcf8 100644
--- a/scouting/webserver/rankings/rankings_test.go
+++ b/scouting/webserver/rankings/rankings_test.go
@@ -58,15 +58,15 @@
 	}
 
 	beginningThreeExpected := []db.Ranking{
-		{TeamNumber: 359, Losses: 1, Wins: 11, Ties: 0, Rank: 1, Dq: 0},
-		{TeamNumber: 5254, Losses: 1, Wins: 11, Ties: 0, Rank: 2, Dq: 0},
-		{TeamNumber: 3990, Losses: 1, Wins: 11, Ties: 0, Rank: 3, Dq: 0},
+		{TeamNumber: "359", Losses: 1, Wins: 11, Ties: 0, Rank: 1, Dq: 0},
+		{TeamNumber: "5254", Losses: 1, Wins: 11, Ties: 0, Rank: 2, Dq: 0},
+		{TeamNumber: "3990", Losses: 1, Wins: 11, Ties: 0, Rank: 3, Dq: 0},
 	}
 
 	endThreeExpected := []db.Ranking{
-		{TeamNumber: 5943, Losses: 10, Wins: 2, Ties: 0, Rank: 34, Dq: 0},
-		{TeamNumber: 4203, Losses: 10, Wins: 2, Ties: 0, Rank: 35, Dq: 0},
-		{TeamNumber: 5149, Losses: 10, Wins: 2, Ties: 0, Rank: 36, Dq: 0},
+		{TeamNumber: "5943", Losses: 10, Wins: 2, Ties: 0, Rank: 34, Dq: 0},
+		{TeamNumber: "4203", Losses: 10, Wins: 2, Ties: 0, Rank: 35, Dq: 0},
+		{TeamNumber: "5149", Losses: 10, Wins: 2, Ties: 0, Rank: 36, Dq: 0},
 	}
 
 	if !reflect.DeepEqual(beginningThreeExpected, database.rankings[0:3]) {
diff --git a/scouting/webserver/requests/debug/cli/cli_test.py b/scouting/webserver/requests/debug/cli/cli_test.py
index b944564..d11b506 100644
--- a/scouting/webserver/requests/debug/cli/cli_test.py
+++ b/scouting/webserver/requests/debug/cli/cli_test.py
@@ -101,7 +101,7 @@
 
         # First submit some data to be added to the database.
         json_path = write_json_request({
-            "team": 100,
+            "team": "100",
             "notes": "A very inspiring and useful comment",
             "good_driving": True,
             "bad_driving": False,
@@ -124,7 +124,7 @@
         self.assertIn(
             textwrap.dedent("""\
             {
-            Team: (int32) 100,
+            Team: (string) (len=3) "100",
             Notes: (string) (len=35) "A very inspiring and useful comment",
             GoodDriving: (bool) true,
             BadDriving: (bool) false,
@@ -140,10 +140,10 @@
 
         # First submit some data to be added to the database.
         json_path = write_json_request({
-            "matchNumber": 100,
-            "rank1": 101,
-            "rank2": 202,
-            "rank3": 303,
+            "match_number": 100,
+            "rank1": "101",
+            "rank2": "202",
+            "rank3": "303",
         })
         exit_code, _, stderr = run_debug_cli(
             ["-submitDriverRanking", json_path])
@@ -160,9 +160,9 @@
             textwrap.dedent("""\
             {
             MatchNumber: (int32) 100,
-            Rank1: (int32) 101,
-            Rank2: (int32) 202,
-            Rank3: (int32) 303
+            Rank1: (string) (len=3) "101",
+            Rank2: (string) (len=3) "202",
+            Rank3: (string) (len=3) "303"
             }"""), stdout)
 
     def test_request_all_matches(self):
diff --git a/scouting/webserver/requests/messages/request_all_driver_rankings_response.fbs b/scouting/webserver/requests/messages/request_all_driver_rankings_response.fbs
index dcc9712..8ce0ef2 100644
--- a/scouting/webserver/requests/messages/request_all_driver_rankings_response.fbs
+++ b/scouting/webserver/requests/messages/request_all_driver_rankings_response.fbs
@@ -1,10 +1,10 @@
 namespace scouting.webserver.requests;
 
 table Ranking {
-    matchNumber:int (id: 0);
-    rank1:int (id: 1);
-    rank2:int (id: 2);
-    rank3:int (id: 3);
+    match_number:int (id: 0);
+    rank1:string (id: 1);
+    rank2:string (id: 2);
+    rank3:string (id: 3);
 }
 
 table RequestAllDriverRankingsResponse {
diff --git a/scouting/webserver/requests/messages/request_all_notes_response.fbs b/scouting/webserver/requests/messages/request_all_notes_response.fbs
index 70504d3..1afdf25 100644
--- a/scouting/webserver/requests/messages/request_all_notes_response.fbs
+++ b/scouting/webserver/requests/messages/request_all_notes_response.fbs
@@ -1,7 +1,7 @@
 namespace scouting.webserver.requests;
 
 table Note {
-    team:int (id: 0);
+    team:string (id: 0);
     notes:string (id: 1);
     good_driving:bool (id: 2);
     bad_driving:bool (id: 3);
diff --git a/scouting/webserver/requests/messages/request_notes_for_team.fbs b/scouting/webserver/requests/messages/request_notes_for_team.fbs
index 9bda6d3..aa93a2b 100644
--- a/scouting/webserver/requests/messages/request_notes_for_team.fbs
+++ b/scouting/webserver/requests/messages/request_notes_for_team.fbs
@@ -1,7 +1,7 @@
 namespace scouting.webserver.requests;
 
 table RequestNotesForTeam {
-    team:int (id: 0);
+    team:string (id: 0);
 }
 
 root_type RequestNotesForTeam;
diff --git a/scouting/webserver/requests/messages/submit_driver_ranking.fbs b/scouting/webserver/requests/messages/submit_driver_ranking.fbs
index ac1e218..052728c 100644
--- a/scouting/webserver/requests/messages/submit_driver_ranking.fbs
+++ b/scouting/webserver/requests/messages/submit_driver_ranking.fbs
@@ -1,10 +1,10 @@
 namespace scouting.webserver.requests;
 
 table SubmitDriverRanking {
-    matchNumber:int (id: 0);
-    rank1:int (id: 1);
-    rank2:int (id: 2);
-    rank3:int (id: 3);
+    match_number:int (id: 0);
+    rank1:string (id: 1);
+    rank2:string (id: 2);
+    rank3:string (id: 3);
 }
 
 root_type SubmitDriverRanking;
diff --git a/scouting/webserver/requests/messages/submit_notes.fbs b/scouting/webserver/requests/messages/submit_notes.fbs
index 845a601..332b612 100644
--- a/scouting/webserver/requests/messages/submit_notes.fbs
+++ b/scouting/webserver/requests/messages/submit_notes.fbs
@@ -1,7 +1,7 @@
 namespace scouting.webserver.requests;
 
 table SubmitNotes {
-    team:int (id: 0);
+    team:string (id: 0);
     notes:string (id: 1);
     good_driving:bool (id: 2);
     bad_driving:bool (id: 3);
diff --git a/scouting/webserver/requests/requests.go b/scouting/webserver/requests/requests.go
index 51612ff..af67386 100644
--- a/scouting/webserver/requests/requests.go
+++ b/scouting/webserver/requests/requests.go
@@ -84,7 +84,7 @@
 	ReturnStats2023() ([]db.Stats2023, error)
 	ReturnStats2023ForTeam(teamNumber string, matchNumber int32, setNumber int32, compLevel string, preScouting bool) ([]db.Stats2023, error)
 	QueryAllShifts(int) ([]db.Shift, error)
-	QueryNotes(int32) ([]string, error)
+	QueryNotes(string) ([]string, error)
 	QueryPitImages(string) ([]db.RequestedPitImage, error)
 	AddNotes(db.NotesData) error
 	AddPitImage(db.PitImage) error
@@ -367,7 +367,7 @@
 	}
 
 	err = handler.db.AddNotes(db.NotesData{
-		TeamNumber:     request.Team(),
+		TeamNumber:     string(request.Team()),
 		Notes:          string(request.Notes()),
 		GoodDriving:    bool(request.GoodDriving()),
 		BadDriving:     bool(request.BadDriving()),
@@ -671,7 +671,7 @@
 		return
 	}
 
-	notes, err := handler.db.QueryNotes(request.Team())
+	notes, err := handler.db.QueryNotes(string(request.Team()))
 	if err != nil {
 		respondWithError(w, http.StatusInternalServerError, fmt.Sprintf("Failed to query notes: %v", err))
 		return
@@ -790,9 +790,9 @@
 
 	err = handler.db.AddDriverRanking(db.DriverRankingData{
 		MatchNumber: request.MatchNumber(),
-		Rank1:       request.Rank1(),
-		Rank2:       request.Rank2(),
-		Rank3:       request.Rank3(),
+		Rank1:       string(request.Rank1()),
+		Rank2:       string(request.Rank2()),
+		Rank3:       string(request.Rank3()),
 	})
 
 	if err != nil {
diff --git a/scouting/webserver/requests/requests_test.go b/scouting/webserver/requests/requests_test.go
index e50583b..0797bc1 100644
--- a/scouting/webserver/requests/requests_test.go
+++ b/scouting/webserver/requests/requests_test.go
@@ -449,7 +449,7 @@
 
 	builder := flatbuffers.NewBuilder(1024)
 	builder.Finish((&submit_notes.SubmitNotesT{
-		Team:           971,
+		Team:           "971",
 		Notes:          "Notes",
 		GoodDriving:    true,
 		BadDriving:     false,
@@ -467,7 +467,7 @@
 
 	expected := []db.NotesData{
 		{
-			TeamNumber:     971,
+			TeamNumber:     "971",
 			Notes:          "Notes",
 			GoodDriving:    true,
 			BadDriving:     false,
@@ -487,7 +487,7 @@
 func TestRequestNotes(t *testing.T) {
 	database := MockDatabase{
 		notes: []db.NotesData{{
-			TeamNumber:     971,
+			TeamNumber:     "971A",
 			Notes:          "Notes",
 			GoodDriving:    true,
 			BadDriving:     false,
@@ -505,7 +505,7 @@
 
 	builder := flatbuffers.NewBuilder(1024)
 	builder.Finish((&request_notes_for_team.RequestNotesForTeamT{
-		Team: 971,
+		Team: "971A",
 	}).Pack(builder))
 	response, err := debug.RequestNotes("http://localhost:8080", builder.FinishedBytes())
 	if err != nil {
@@ -714,9 +714,9 @@
 	builder := flatbuffers.NewBuilder(1024)
 	builder.Finish((&submit_driver_ranking.SubmitDriverRankingT{
 		MatchNumber: 36,
-		Rank1:       1234,
-		Rank2:       1235,
-		Rank3:       1236,
+		Rank1:       "1234",
+		Rank2:       "1235",
+		Rank3:       "1236",
 	}).Pack(builder))
 
 	_, err := debug.SubmitDriverRanking("http://localhost:8080", builder.FinishedBytes())
@@ -725,7 +725,7 @@
 	}
 
 	expected := []db.DriverRankingData{
-		{MatchNumber: 36, Rank1: 1234, Rank2: 1235, Rank3: 1236},
+		{MatchNumber: 36, Rank1: "1234", Rank2: "1235", Rank3: "1236"},
 	}
 
 	if !reflect.DeepEqual(database.driver_ranking, expected) {
@@ -739,15 +739,15 @@
 		driver_ranking: []db.DriverRankingData{
 			{
 				MatchNumber: 36,
-				Rank1:       1234,
-				Rank2:       1235,
-				Rank3:       1236,
+				Rank1:       "1234",
+				Rank2:       "1235",
+				Rank3:       "1236",
 			},
 			{
 				MatchNumber: 36,
-				Rank1:       101,
-				Rank2:       202,
-				Rank3:       303,
+				Rank1:       "101",
+				Rank2:       "202",
+				Rank3:       "303",
 			},
 		},
 	}
@@ -768,15 +768,15 @@
 		DriverRankingList: []*request_all_driver_rankings_response.RankingT{
 			{
 				MatchNumber: 36,
-				Rank1:       1234,
-				Rank2:       1235,
-				Rank3:       1236,
+				Rank1:       "1234",
+				Rank2:       "1235",
+				Rank3:       "1236",
 			},
 			{
 				MatchNumber: 36,
-				Rank1:       101,
-				Rank2:       202,
-				Rank3:       303,
+				Rank1:       "101",
+				Rank2:       "202",
+				Rank3:       "303",
 			},
 		},
 	}
@@ -795,7 +795,7 @@
 	db := MockDatabase{
 		notes: []db.NotesData{
 			{
-				TeamNumber:     971,
+				TeamNumber:     "971",
 				Notes:          "Notes",
 				GoodDriving:    true,
 				BadDriving:     false,
@@ -806,7 +806,7 @@
 				EasilyDefended: false,
 			},
 			{
-				TeamNumber:     972,
+				TeamNumber:     "972",
 				Notes:          "More Notes",
 				GoodDriving:    false,
 				BadDriving:     false,
@@ -834,7 +834,7 @@
 	expected := request_all_notes_response.RequestAllNotesResponseT{
 		NoteList: []*request_all_notes_response.NoteT{
 			{
-				Team:           971,
+				Team:           "971",
 				Notes:          "Notes",
 				GoodDriving:    true,
 				BadDriving:     false,
@@ -845,7 +845,7 @@
 				EasilyDefended: false,
 			},
 			{
-				Team:           972,
+				Team:           "972",
 				Notes:          "More Notes",
 				GoodDriving:    false,
 				BadDriving:     false,
@@ -1137,7 +1137,7 @@
 	return results, nil
 }
 
-func (database *MockDatabase) QueryNotes(requestedTeam int32) ([]string, error) {
+func (database *MockDatabase) QueryNotes(requestedTeam string) ([]string, error) {
 	var results []string
 	for _, data := range database.notes {
 		if data.TeamNumber == requestedTeam {
diff --git a/scouting/www/app/app.ts b/scouting/www/app/app.ts
index 16e3197..011c94f 100644
--- a/scouting/www/app/app.ts
+++ b/scouting/www/app/app.ts
@@ -13,7 +13,7 @@
 const unguardedTabs: Tab[] = ['MatchList'];
 
 type TeamInMatch = {
-  teamNumber: number;
+  teamNumber: string;
   matchNumber: number;
   setNumber: number;
   compLevel: string;
@@ -26,7 +26,7 @@
 })
 export class App {
   selectedTeamInMatch: TeamInMatch = {
-    teamNumber: 1,
+    teamNumber: '1',
     matchNumber: 1,
     setNumber: 1,
     compLevel: 'qm',
diff --git a/scouting/www/driver_ranking/driver_ranking.component.ts b/scouting/www/driver_ranking/driver_ranking.component.ts
index f61d901..09f62c2 100644
--- a/scouting/www/driver_ranking/driver_ranking.component.ts
+++ b/scouting/www/driver_ranking/driver_ranking.component.ts
@@ -18,7 +18,7 @@
   section: Section = 'TeamSelection';
 
   // Stores the team keys and rank (order of the array).
-  team_ranking: number[] = [971, 972, 973];
+  team_ranking: string[] = ['971', '972', '973'];
 
   match_number: number = 1;
 
@@ -58,13 +58,16 @@
 
   async submitData() {
     const builder = new Builder();
+    const teamRanking1 = builder.createString(this.team_ranking[0]);
+    const teamRanking2 = builder.createString(this.team_ranking[1]);
+    const teamRanking3 = builder.createString(this.team_ranking[2]);
     builder.finish(
       SubmitDriverRanking.createSubmitDriverRanking(
         builder,
         this.match_number,
-        this.team_ranking[0],
-        this.team_ranking[1],
-        this.team_ranking[2]
+        teamRanking1,
+        teamRanking2,
+        teamRanking3
       )
     );
     const buffer = builder.asUint8Array();
@@ -88,6 +91,6 @@
 
     // Reset Data.
     this.section = 'TeamSelection';
-    this.team_ranking = [971, 972, 973];
+    this.team_ranking = ['971', '972', '973'];
   }
 }
diff --git a/scouting/www/driver_ranking/driver_ranking.ng.html b/scouting/www/driver_ranking/driver_ranking.ng.html
index 1fa1bc8..d361c9d 100644
--- a/scouting/www/driver_ranking/driver_ranking.ng.html
+++ b/scouting/www/driver_ranking/driver_ranking.ng.html
@@ -18,9 +18,7 @@
     <input
       *ngFor="let x of [1,2,3]; let i = index;"
       [(ngModel)]="team_ranking[i]"
-      type="number"
-      min="1"
-      max="9999"
+      type="text"
       id="team_input_{{i}}"
     />
     <button
diff --git a/scouting/www/entry/entry.component.ts b/scouting/www/entry/entry.component.ts
index 4b60ac1..5a93251 100644
--- a/scouting/www/entry/entry.component.ts
+++ b/scouting/www/entry/entry.component.ts
@@ -115,8 +115,7 @@
 
   section: Section = 'Team Selection';
   @Input() matchNumber: number = 1;
-  // TODO(phil): Change the type of teamNumber to a string.
-  @Input() teamNumber: number = 1;
+  @Input() teamNumber: string = '1';
   @Input() setNumber: number = 1;
   @Input() compLevel: CompLevel = 'qm';
   @Input() skipTeamSelection = false;
@@ -173,7 +172,7 @@
     if (this.teamNumber == null) {
       return false;
     }
-    const teamNumber = this.teamNumber.toString();
+    const teamNumber = this.teamNumber;
 
     for (const match of this.matchList) {
       if (
@@ -392,7 +391,7 @@
         actionOffsets.push(actionOffset);
       }
     }
-    const teamNumberFb = builder.createString(this.teamNumber.toString());
+    const teamNumberFb = builder.createString(this.teamNumber);
     const compLevelFb = builder.createString(this.compLevel);
 
     const actionsVector = SubmitActions.createActionsListVector(
diff --git a/scouting/www/entry/entry.ng.html b/scouting/www/entry/entry.ng.html
index ada96ff..43575cd 100644
--- a/scouting/www/entry/entry.ng.html
+++ b/scouting/www/entry/entry.ng.html
@@ -26,10 +26,8 @@
       <input
         [(ngModel)]="teamNumber"
         (ngModelChange)="updateTeamSelectionValidity()"
-        type="number"
+        type="text"
         id="team_number"
-        min="1"
-        max="9999"
       />
     </div>
     <div class="row">
diff --git a/scouting/www/notes/notes.component.ts b/scouting/www/notes/notes.component.ts
index 2786717..3848c22 100644
--- a/scouting/www/notes/notes.component.ts
+++ b/scouting/www/notes/notes.component.ts
@@ -48,7 +48,7 @@
 }
 
 interface Input {
-  teamNumber: number;
+  teamNumber: string;
   notesData: string;
   keywordsData: Keywords;
 }
@@ -79,7 +79,7 @@
   section: Section = 'TeamSelection';
 
   errorMessage = '';
-  teamNumberSelection: number = 971;
+  teamNumberSelection: string = '971';
 
   // Data inputted by user is stored in this array.
   // Includes the team number, notes, and keyword selection.
@@ -145,10 +145,12 @@
       const builder = new Builder();
       const dataFb = builder.createString(this.newData[i].notesData);
 
+      const teamNumber = builder.createString(this.newData[i].teamNumber);
+
       builder.finish(
         SubmitNotes.createSubmitNotes(
           builder,
-          this.newData[i].teamNumber,
+          teamNumber,
           dataFb,
           this.newData[i].keywordsData.goodDriving,
           this.newData[i].keywordsData.badDriving,
diff --git a/scouting/www/notes/notes.ng.html b/scouting/www/notes/notes.ng.html
index cb5e8ef..d7262b3 100644
--- a/scouting/www/notes/notes.ng.html
+++ b/scouting/www/notes/notes.ng.html
@@ -9,10 +9,8 @@
     </label>
     <input
       [(ngModel)]="teamNumberSelection"
-      type="number"
+      type="text"
       id="team_number_notes"
-      min="1"
-      max="9999"
     />
     <button class="btn btn-primary" (click)="setTeamNumber()">Select</button>
   </div>
diff --git a/scouting/www/pit_scouting/pit_scouting.component.ts b/scouting/www/pit_scouting/pit_scouting.component.ts
index b74c119..fe14090 100644
--- a/scouting/www/pit_scouting/pit_scouting.component.ts
+++ b/scouting/www/pit_scouting/pit_scouting.component.ts
@@ -6,7 +6,7 @@
 type Section = 'TeamSelection' | 'Data';
 
 interface Input {
-  teamNumber: number;
+  teamNumber: string;
   pitImage: HTMLImageElement;
 }
 
@@ -19,7 +19,7 @@
   section: Section = 'Data';
 
   errorMessage = '';
-  teamNumber: number = 971;
+  teamNumber: string = '971';
   pitImage: string = '';
 
   async readFile(file): Promise<ArrayBuffer> {
@@ -41,7 +41,7 @@
 
   async submitData() {
     const builder = new Builder();
-    const teamNumber = builder.createString(this.teamNumber.toString());
+    const teamNumber = builder.createString(this.teamNumber);
     const pitImage = builder.createString(this.pitImage.toString());
     const imageData = SubmitPitImage.createImageDataVector(
       builder,
diff --git a/scouting/www/pit_scouting/pit_scouting.ng.html b/scouting/www/pit_scouting/pit_scouting.ng.html
index 98aa313..9e90d2d 100644
--- a/scouting/www/pit_scouting/pit_scouting.ng.html
+++ b/scouting/www/pit_scouting/pit_scouting.ng.html
@@ -4,13 +4,7 @@
 <ng-container [ngSwitch]="section">
   <div *ngSwitchCase="'Data'" id="pitImageSelection" class="container-fluid">
     <label for="teamNumber">Team Number</label>
-    <input
-      [(ngModel)]="teamNumber"
-      type="string"
-      id="teamNumber"
-      min="1"
-      max="9999"
-    />
+    <input [(ngModel)]="teamNumber" type="text" id="teamNumber" />
     <form action="setPitImage()">
       <label for="pitImage">Select pit image:</label>
       <br />
diff --git a/scouting/www/view/view.component.ts b/scouting/www/view/view.component.ts
index c75f83b..26e816b 100644
--- a/scouting/www/view/view.component.ts
+++ b/scouting/www/view/view.component.ts
@@ -69,11 +69,19 @@
     this.ascendingSort = !this.ascendingSort;
     if (!this.ascendingSort) {
       this.driverRankingList.sort((a, b) => b.matchNumber() - a.matchNumber());
-      this.noteList.sort((a, b) => b.team() - a.team());
+      this.noteList.sort(function (a, b) {
+        return b[0]
+          .team()
+          .localeCompare(a[0].team(), undefined, {numeric: true});
+      });
       this.statList.sort((a, b) => b.matchNumber() - a.matchNumber());
     } else {
       this.driverRankingList.sort((a, b) => a.matchNumber() - b.matchNumber());
-      this.noteList.sort((a, b) => a.team() - b.team());
+      this.noteList.sort(function (a, b) {
+        return a[0]
+          .team()
+          .localeCompare(b[0].team(), undefined, {numeric: true});
+      });
       this.statList.sort((a, b) => a.matchNumber() - b.matchNumber());
     }
   }
