While I fully agree with the recommendations on crush, etc., one area you might want to look at is how you calculate your expected OG. For example, I use BeerSmith 2, and experience tells me that my “Total Efficiency” should be set to around 70% or so, for the 1.050 - 1.070 beers that I brew most often. That number matches my current process well - I used to be down around 62 - 65 % when I first started doing all grain, but improved as I fine-tuned. If I would set my efficiency to 80-85% or so, I would easily read an “expected OG” around 10 points higher than I’m really likely to get.
Double crushing actually works faster- takes half the time a single-pass would with a closed-down gap. I was shocked at how much better it worked… for me.
Sounds like you’ve got a good plan and it works for you. Just like mine works for me. Good to discuss different experiences so people have a range of opinions an ideas!
What styles are you brewing? Can you list your grain bill, and expected OG? Expecting a 1.050 and only achieving 1.030 is much different than expecting 1.095 and achieving 1.080.
I do mostly Pale Ales and IPA. The last batch I attempted was a New Belgium Citradelic clone. Simple grain bill, 12lbs of 2 row and 1/2lb of crystal 120L. 5.5 gallons to fermenter was estimated at 1.059, actual was 1.037 after topping up with 1.5 gallons.
Unless you have a huge boil off rate it sounds like you are not using enough water (based on topping up to get 5.5 gallons). Either your mash is too thin or you aren’t sparging with enough water or both. For a 5.5 gallon batch you should have 6.5-7 gallons before boiling and 1-1.5 gallons boil off in an hour boil.
Not sparging enough could lead to poor efficiency.