When I started BIAB I relied on some advice from
@Morrey , who suggested dropping my mill gap from .035 to .020. It looks a little narrow to me, but amazingly, I had exactly the same efficiency using BIAB and .020 as I had with traditional mash tun and sparging using .035.
I stir at 15 and again at 30 minutes; if you're not doing that, do it.

That helps with conversion. Doing that, I typically would have 90-95 percent of conversion by 30 minutes. I still go the full 60 minutes because I tend to buy
@RM-MN 's argument that there are flavor components in the mash that are still coming out after 30 minutes.
I agree with
@PADave in asking about the pH of your water. I use EZWater as well, but I'm also checking pH at 15 minutes. Usually EZ water estimates a pH that is around .05-.1 higher than what I measure. For a recent lager EZ water predicted a mash pH of 5.41, but I ended up at a measured 5.33. So when I'm using it I just mentally subtract from the predicted value to what I think I'll end up with. I also use EZWater to check the balances and final amounts of chlorides and sulfates.
**********
A note on crush: recently bought a Monster Mill 3, with three rollers.
@Morrey has one too, and he suggested I try a gap of .035 to start. I questioned that, as it's quite a bit larger than the .020 I'd been using with my Barley Crusher. But he was right on the .020, so what the heck! I tried that gap and was shocked to learn that conversion efficiency was, again, the same as before. HOWEVER, it was a slower conversion. At 30 minutes I was only at 1.032 gravity; at 60 minutes, 1.0495. The last time I brewed that beer, using .020, I had exactly the same gravity, 1.0495.
Why was the most recent one slower? Larger particles. I got the same results but IMO, that only will work with stirring partway through, which in my case is at 15 and 30 minutes.