A little more than two years ago, San Francisco was 0-8 and with little sense of direction or hope. Barring a miraculous turnaround, the 49ers were on their way to losing 11-plus games for the third consecutive season for the first time in their storied 72-year history.

Then came Halloween 2017, the day the 49ers traded a 2018 second-round pick to New England for fourth-year quarterback Jimmy Garoppolo, the supposed heir to Tom Brady. With the 49ers 1-10 in November, the 26-year-old Garoppolo took the QB reins from Brian Hoyer and C.J. Beathard, who had delivered ghastly results. Jimmy G won each of his first five starts with the 49ers.

Ultimate Patrick Mahomes scouting report

After missing the final 13 games of his second season with an ACL injury, Garoppolo returned in 2019 with another chance to build off the 2017 finish. He extrapolated that five-game 2017 run in grand fashion, leading the 49ers to a 13-3 record. Now he gets a chance to beat the Chiefs on Sunday in Super Bowl LIV (FOX, 6:30 ET).

There's no debate Garoppolo -- who ranked third in the NFL in yards per attempt (8.4) -- is a difference-maker. But many have questioned where he falls in the league's hierarchy. Is Jimmy G a top-10 quarterback? Is he as good as his 23-5 career record suggests? Or, is he merely a solid game manager who benefits from a great supporting cast and an amazing playcaller in head coach Kyle Shanahan?

Those are questions I set out to answer in analyzing the All-22 angles of all 566 plays from Garoppolo's 2019 season. I graded each play (excluding handoffs, of course) to get a gauge on his true overall performance level. By taking into account drops, pressure, throw difficulty, ball placement, down/distance, game situation and decision-making (did the quarterback choose the best option available?), we can get a more accurate evaluation of a quarterback’s performance. A box score does not account for these important factors.

I scored each Garoppolo play on a 0-to-10 scale. An average play (screen passes, throwaways) received a 5, an inexcusably brutal play (awful turnovers or should-be turnovers) earned a 0, and the perfect play (flawlessly placed throws into tight windows under heavy pressure) warranted a 10. Most plays fall somewhere in the middle, with “plus” efforts scoring above 5 and “minus” efforts below. Each game’s final score was scaled from 0-100, with 50 being average.

Let’s dig into Garoppolo’s 2019 season.