Home projects are stressful because budgeting is a black box. Getting a ballpark from contractors can take days, and most online calculators only cover a few scenarios. We wanted a fast, transparent way to translate an idea (or even just a photo) into a realistic, itemized estimate you can act on right away.

What it does

AI Contractor estimates the total cost of a home project from a photo or a short description. You get:

An itemized breakdown (materials, labor, permits/misc).

A materials list with approximate unit prices.

A transparent assumption sheet (what the model assumed about size, quantity, difficulty).

A quick way to tweak inputs (dimensions, material grade) and re-estimate.

Example: “10×10 pressure-treated deck” → itemized costs for deck boards, joists, screws, concrete footings, plus labor & permits.

How we built it

Frontend: simple HTML/JS page for image or text input, and results UI (estimates + line items).

Backend: Flask API (/estimate, /api/scrape, /api/data) that orchestrates:

LLM (Gemini) for understanding the scope from natural language or image.

Cost synthesis that maps the extracted bill of materials (BOM) to prices.

Heuristics for labor (multiplier on materials + complexity) and permits/misc.

Pricing data: Starter dataset + optional web scraping for big-box prices (stored in data.json) to keep numbers grounded and reproducible.

Fallbacks: If scraping fails or a SKU isn’t found, we use conservative defaults so estimates always complete.

Tech stack

Python, Flask, Requests, BeautifulSoup

Google Gemini (text + image understanding)

Vanilla JS/HTML/CSS (lightweight demo UI)

Challenges we ran into

Image → quantities. Recognizing project type from a photo is easy; turning it into quantities (e.g., joists, posts, fasteners) required rules of thumb and dimensional assumptions.

Retail pages change often. Scraping is brittle, so we added a cached data.json and a manual refresh endpoint.

Avoiding “magic numbers.” We wrote assumptions back to the UI so users can see/adjust them (e.g., joist spacing, footing count, screw lbs).

Accomplishments we’re proud of

One-click photo or text to estimate with a clear, itemized output.

A design that mixes AI + grounded prices to avoid pure “LLM hallucination.”

Modular cost logic so adding new project templates (fence, patio, shed) is straightforward.

What we learned

Good UX is showing assumptions. It builds trust and makes the tool useful even when users change details.

Hybrid systems (LLM + deterministic rules + price cache) are far more stable than LLM-only.

Small touches (unit conversions, taxes, waste factors) move estimates from “demo” to “actually helpful.”

What’s next

Room-level estimates (bath/kitchen) with optional SKU selections.

Geography-aware pricing (labor rates + local taxes).

Confidence bands and sensitivity (how much the price changes if lumber rises 10%).

Export to a shopping list or shareable contractor RFP.

Built With

Share this project:

Updates