15 minutes per company for applications is high. Organization helps a lot, and you can really optimize your workflow for sending out resumes.
Finding the company: approximate amount of time spent here is 5 seconds. You have a spreadsheet, just go to the next one on the list.
Changing the cover letter: template it with variables. Should end up being a single bash command, most of the time is locating and properly formatting company name, person of contact, and filling out a couple sentences about why you're interested. 90 seconds when you're in the flow of things, tops.
Replying to emails and the like properly counts as part of the organization for the phone and technical screens.
There's time costs for when the application process includes forms that take a bunch of time to fill out. Not because you finish ~20 minute applications, though, but a certain percentage of the ones you look at you wind up having to abort due to those barriers, so you amortize the cost in there.
If you can handle really boring repetitive work, and you're not doing much else that day, you can wind up sending out a hundred applications in a day without too much fuss. For scheduling phone screens, set up a Google Calendar and/or a youcanbook.me and let the other party pick a time that works for them. Prep for phone and technical screening has little marginal cost - mostly it'll be spending a few minutes grabbing notes on business models and tech stacks so you can look good, along with jotting down notes afterwards about follow-up and ideas to improve on.
On-site basically counts as a full day.
>Also, I would have targeted applications to a lot less than 291 companies. I guess if I was trying to get my first job I'd be a lot less picky, but the 'ideal' company to work at can be few and far between.
It's a numbers game. You want to look at as many as possible, so you can pick after you have information about them. Basically, it's probably easier to filter out companies based off of actually talking to people there, rather than going down the rabbit hole of figuring out your desiderata and researching how companies fit it.
tl;dr - the actual application process looks like it could've been done over 5 weeks, given prep work was complete. One week sending out a giant pile of applications, one week doing phone screens, technical screens, coding challenges, then just over two weeks of doing on-site interviews.