4) wrong inputs to the model.
And a wrong model. There're a lot of calculators out there, e.g. [1]. Some more, some less sophisticated. But they all provide rules by thumb at best.
It starts at the mechanical losses, rolling resitance and aerodynamics (it's often neglected on calculations regarding climbs). Does his model take wind into account?