EPA = expected points added per play. Compared with every FBS QB who qualifies
5 seasons at 3 schools since 2014 · box-score totals, snap share estimated from play-by-play
| Season | Team | G | Snaps | Cmp/Att | Pass yds | TD–INT | Y/A | Dropback SR | Car | Rush yds | Y/C | Rush TD | Rush SR |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026 so far | App State#105 · 4-2 | 1 | 2% | 4/5 | 20 | 0–0 | 4.0 | — | — | — | — | — | — |
| 2025 | Kennesaw State#88 · 10-4 | 2 | 1% | 3/5 | 9 | 0–0 | 1.8 | 0.0% | 1 | 1 | 1.0 | 0 | 0.0% |
| 2024 | Kent State#134 · 0-12 | 10 | 58% | 81/175 | 1353 | 15–8 | 7.7 | 31.1% | 62 | -22 | -0.4 | 1 | 24.1% |
| 2023 | Kent State#133 · 1-11 | 9 | 37% | 60/121 | 737 | 7–2 | 6.1 | 38.3% | 47 | 89 | 1.9 | 1 | 33.3% |
| 2022 | Kent State#89 · 5-7 | 1 | 3% | 6/11 | 102 | 1–0 | 9.3 | 46.2% | 4 | 21 | 5.2 | 0 | 100.0% |
Past seasons are summed from ESPN box scores; success rates and snap shares come from the play-by-play. Tommy Ulatowski's team rank is that season's final TDC rank. A dash means the stat wasn't recorded.
Tommy Ulatowski's box score, game by game, from ESPN, with a 0–10 game score for each (hover it for how it works). Click a result for the full game
| Passing | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Wk | Opponent | Result | Cmp | Att | Pct | Yds | Y/A | TD | INT |
| 1 | W 55–3 | 4 | 5 | 80.0 | 20 | 4.0 | 0 | 0 | |
| 2 | @ | W 27–24 | no stats recorded | ||||||
| 3 | W 26–21 | no stats recorded | |||||||
| 4 | @ | L 31–41 | no stats recorded | ||||||
| 6 | L 3–10 | no stats recorded | |||||||
| 7 | @ | W 35–32 | no stats recorded | ||||||
| 2026 · 1 game | 4 | 5 | 80.0 | 20 | 4.0 | 0 | 0 | ||
FBS rank among qualifying players
| Passing | 2026 | FBS rank |
|---|---|---|
| Completions | 4 | — |
| Attempts | 5 | — |
| Completion % | 80.0% | — |
| Yards | 20 | — |
| Yards / att. | 4 | — |
| Touchdowns | 0 | — |
| Interceptions | 0 | — |
Estimated snaps: every offensive play credited to the QB running the offense. Close to a true snap count
| Game | Team plays | Est. snaps | Plays involved | Snap share |
|---|---|---|---|---|
| Wk 1 · Maine | 72 | 10 | 5 | 14% |
| Season | 413 | 10 | 5 | 2% |
5 QBs on the App State roster, ordered by att
| # | Player | Pos | Class | Att | Yds | TD | INT | EPA/play |
|---|---|---|---|---|---|---|---|---|
| 3 | Malachi Singleton | QB | SR | 169 | 1429 | 7 | 2 | +0.29 |
| 8 | Henry Hasselbeck | QB | JR | 21 | 157 | 1 | 1 | +0.29 |
| 17 | Tommy Ulatowski | QB | SR | 5 | 20 | 0 | 0 | +0.14 |
| 10 | Gregory Fee | QB | SO | — | — | — | — | — |
| 15 | Bronzden Chaffin | QB | FR | — | — | — | — | — |
Stats, EPA and usage come from CollegeFootballData.com and refresh daily. FBS ranks only count players with enough volume for the stat to mean something. Qualifying for EPA takes 12+ plays per team game. App State depth chart →