Back to Alchemy
Alchemy RecipeBeginnerautomation

Generate contractor proposals and cost estimates from site inspection photos

A contractor arrives at a renovation site on Monday morning. They spend three hours photographing damage, taking measurements, and making notes on their phone. Back at the office, they spend another four hours writing up findings, cross-referencing material prices, and drafting a proposal document. By the time the estimate reaches the client, it's Wednesday, the details are vague, and the scope is already in dispute. This cycle repeats for every job. The problem compounds when contractors work with multiple properties per week. Photos pile up in camera rolls, notes scatter across notebooks and voice memos, and estimates become guesswork. Rushed documentation means missed details, underpriced work, and client friction when the real scope emerges halfway through the project. What if your contractor could photograph a site, upload the images, and have a polished, detailed proposal ready within minutes? Not a template with blanks to fill in, but an actual proposal that identifies specific damage, suggests materials, and includes line-item costs. The technology exists. The missing piece is connecting the tools so they work together without manual handoffs.

The Automated Workflow

Set Up Your Trigger

The workflow starts when a contractor uploads a photo or folder of photos.

You can use Zapier or n8n to monitor a shared folder (Google Drive, Dropbox, or OneDrive work well), or create a webhook that fires when a contractor submits images through a simple web form. Here's a basic Zapier trigger setup using Google Drive:

Trigger: New file created in folder
Folder: /Site Inspections
File type: Images (jpg, png)

Alternatively, if you prefer n8n for more control, you can set up a polling trigger that checks a folder every 15 minutes:

n8n Workflow Trigger:
- Type: Poll
- Service: Google Drive
- Check interval: 15 minutes
- Folder ID: [your folder ID]
- Filter: mime type = image

Step 1: Extract Site Details with Vision AI

Route the images to Claude Opus 4.6 or GPT-4o, which both have strong image analysis capabilities. The prompt should extract structural observations, damage type, affected area size, and material recommendations. Create a simple API call in your orchestration tool:

json
{ "model": "gpt-4o", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Analyse this contractor site photo. Identify: (1) visible damage or issues, (2) affected area in square metres, (3) materials needed for repair, (4) labour complexity (basic/moderate/advanced). Format as JSON." }, { "type": "image_url", "image_url": { "url": "https://example.com/site-photo.jpg" } } ] } ], "max_tokens": 800
}

The LLM returns structured JSON with damage assessment and material suggestions. Store this in a temporary variable; you'll combine it with cost data in the next step.

Step 2: Generate Cost Data with Estimatic AI

Estimatic AI accepts structured input about materials, labour type, and scope. Feed it the extracted details from Step 1:

json
{ "project_type": "structural_repair", "materials": ["drywall", "timber framing", "fasteners"], "labour_hours": 24, "labour_complexity": "moderate", "region": "UK"
}

Estimatic AI returns line-item costs. Parse the response and store it alongside your damage assessment. This is where your estimate moves from guesswork to data-backed numbers.

Step 3: Cross-Reference with Parspec AI (Optional)

If your contractor uses specific materials or works with particular suppliers, pipe the material list from Step 1 into Parspec AI. It can refine product selection and suggest alternatives, then update pricing accordingly. This adds polish and shows clients you've considered options.

json
{ "product_category": "insulation", "specification": "R-value 3.8, 100mm thickness, sustainable", "region": "UK", "budget_constraint": 500
}

Step 4: Compose the Proposal with Copy.ai

Now you have three data blocks: damage assessment, cost breakdown, and (optionally) product specifications. Feed these to Copy.ai to generate professional proposal copy. Your prompt might look like this:

You are writing a professional contractor proposal. Use the following data: Site Assessment:
{assessment_json} Cost Breakdown:
{estimatic_output} Product Selections:
{parspec_output} Generate a formal proposal document in markdown format. Include:
1. Executive summary (2-3 sentences)
2. Scope of work (bullet points)
3. Materials and specifications (table format)
4. Cost breakdown (itemised)
5. Timeline estimate
6. Warranty and next steps Tone: professional, clear, confident.

Copy.ai returns markdown, which you can convert to PDF using a simple markdown-to-PDF tool (n8n has a built-in module; Zapier can use integrations like PDF Monkey).

Step 5: Store and Notify

Save the PDF to a folder tagged with the property address and date. Send an email or Slack notification to the contractor with a link to the proposal and a summary of key figures (total cost, timeline, primary materials). Here's what the full n8n workflow looks like at a high level:

1. Google Drive Trigger (new image) ↓
2. HTTP Request → GPT-4o (image analysis) ↓
3. HTTP Request → Estimatic AI (cost generation) ↓
4. HTTP Request → Parspec AI (product refinement) ↓
5. HTTP Request → Copy.ai (proposal composition) ↓
6. Markdown to PDF conversion ↓
7. Save to Google Drive ↓
8. Send email notification

In Zapier, you'd use "Webhooks by Zapier" to call external APIs, or connect native integrations if available. In n8n, you build this visually with HTTP Request nodes and built-in nodes for file operations and email.

The Manual Alternative

Some contractors prefer to review the AI-generated analysis before finalisation. You can pause the workflow at Step 2 and create an approval step: the AI assessment and cost estimate appear in a Slack channel or email, and the contractor clicks "Approve" or "Revise" before the proposal is generated. This takes longer but catches errors and lets you adjust for context that photos might miss, such as existing warranty work, client budget constraints, or seasonal material availability.

Pro Tips

Batch Processing for Multiple Sites

If a contractor inspects five properties in one day, upload all photos to a single folder and set your workflow to process them in parallel (n8n allows this with separate branches).

You'll have all five proposals ready by end of day instead of processing them sequentially.

Rate Limit Management

GPT-4o and Claude Opus 4.6 have rate limits. If you're processing more than 10 proposals per day, space out your API calls over a few hours using n8n's built-in delay nodes. Alternatively, use GPT-4.1 mini or Claude Haiku 4.5 for the initial image analysis; they're faster and cheaper, with no meaningful drop in accuracy for structured data extraction.

Error Handling for Bad Photos

Not every site photo is usable. A blurry image or a photo of unrelated objects will confuse the vision model. Add a validation step: if Claude returns low confidence in its assessment (which you can prompt it to flag), send the contractor a notification to resubmit clearer photos rather than generating a nonsense estimate.

Cost Accuracy

Estimatic AI draws from historical data and supplier databases, but regional pricing fluctuates. Every quarter, spot-check a few generated estimates against real supplier quotes. If there's systematic drift, adjust your prompt to include a "current date" parameter and ask the model to factor in recent inflation or supply changes.

Personalisation for Repeat Clients

Once you've generated a few proposals, you'll notice patterns in material choices and labour costs. Create contractor profiles within your workflow that store preferred suppliers and standard markup percentages, then feed these into Copy.ai so each proposal reflects that contractor's voice and business model.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
GPT-4oPay-as-you-go£10–30Depends on image volume; roughly £0.03 per image for analysis
Claude Opus 4.6Claude API£15–40Similar per-request cost; reliable for structured extraction
Estimatic AIStarter£29–99Depends on proposal volume; some plans include 50–200 estimates per month
Parspec AIProfessional£49–149Optional; worth it if you need detailed product specifications
Copy.aiTeam£79–299Covers multiple users and API access
Pixelcut AIPro£9.99Optional image enhancement; useful if photos are poor quality
ZapierProfessional£50–299Or n8n (self-hosted, free) if you prefer more control
Google DriveBusiness Standard£8.50–17For file storage; use existing account if available