Lawn Care Estimator
Get your custom service quote
Select Services
Fertilizer Program
setFertilizer(e.target.value)}
className=”w-full px-4 py-3 border-2 border-gray-200 rounded-xl focus:border-green-500 focus:outline-none transition bg-white”
>
None
3-Part Program
4-Part Program (Standard)
5-Part Program
7-Part Program
Weed Spray
setWeedSpray(e.target.value)}
className=”w-full px-4 py-3 border-2 border-gray-200 rounded-xl focus:border-green-500 focus:outline-none transition bg-white”
>
None
2 Part – Spring/Fall
3 Part – Spring, Summer, Fall
Aeration
setAeration(e.target.value)}
className=”w-full px-4 py-3 border-2 border-gray-200 rounded-xl focus:border-green-500 focus:outline-none transition bg-white”
>
None
Spring
Fall
Both (Spring & Fall)
Lawn Area (sqft)
– for fertilizer/aeration
setLawnArea(e.target.value)}
placeholder=”e.g., 10890″
className=”w-full px-4 py-3 text-lg border-2 border-gray-200 rounded-xl focus:border-green-500 focus:outline-none transition”
/>
)}
{needsSprayArea && (
Spray Area (sqft)
– for weed spray
setSprayArea(e.target.value)}
placeholder=”e.g., 8000″
className=”w-full px-4 py-3 text-lg border-2 border-gray-200 rounded-xl focus:border-green-500 focus:outline-none transition”
/>
)}
Difficulty Level
{[
{ value: ‘easy’, label: ‘Easy’ },
{ value: ‘medium’, label: ‘Medium’ },
{ value: ‘hard’, label: ‘Hard’ }
].map((option) => (
setDifficulty(option.value)}
className={`py-3 px-4 rounded-xl font-medium transition ${
difficulty === option.value
? ‘bg-green-500 text-white shadow-md’
: ‘bg-gray-100 text-gray-700 hover:bg-gray-200’
}`}
>
{option.label}
))}
setHasGate(!hasGate)}
className={`flex items-center justify-between p-4 rounded-xl cursor-pointer transition ${
hasGate ? ‘bg-green-50 border-2 border-green-500’ : ‘bg-gray-50 border-2 border-gray-200’
}`}
>
Gate
setHasDog(!hasDog)}
className={`flex items-center justify-between p-4 rounded-xl cursor-pointer transition ${
hasDog ? ‘bg-green-50 border-2 border-green-500’ : ‘bg-gray-50 border-2 border-gray-200’
}`}
>
Dog
Total Program Cost
${estimate.total}
${estimate.perApp} per application ({estimate.applications} total)
{estimate.breakdown.map((item, idx) => (
{item.service}
${item.cost.toFixed(2)}
))}
* Final pricing may vary based on site inspection
