The Honest Answer
A roof under 15 years old with localized damage is almost always a repair candidate. Over 20 with widespread issues is almost always replacement. The 15-20 year range is where you need an honest contractor.
Repair: $300-$1,500
Localized damage, missing shingles in one area, single leak point, minor storm damage.
Replacement: $12,000-$25,000
Widespread granule loss, multiple leaks, sagging deck, curling or cracking across the entire surface, age over 20.