A mismatch between predicted and actual bitterness usually ties back to your gravity.
Hop utilisation and wort gravity are directly linked: the denser your wort, the harder it is for alpha acids to dissolve into it, so a higher-than-expected OG means slightly lower utilisation, and a lower-than-expected OG means slightly higher utilisation.
The Grainfather app's default IBU calculation uses the mIBU method, developed by Paul-John Hosom. It's built on the Tinseth formula but goes further, modelling how bitterness keeps developing after flameout - through your hop stand and cooling stages - rather than assuming post-boil hops contribute nothing.
If your gravity readings have been off from predicted, that's usually the first place to look. Once your OG lines up with what the app expects, your bitterness should track much more closely too.