Back to Alchemy
Alchemy RecipeBeginnerautomation

Generate contractor proposals and quotes from site inspection photos

A roofing contractor finishes a site inspection at 3pm, snaps a dozen photos of guttering damage, and spends the next two hours measuring roof pitch from images, cross-referencing material costs, and typing up a proposal. By the time they hit send, they've lost the daylight hours they could have spent surveying the next three jobs. This cycle repeats daily across the trades: inspection, manual measurement, manual quoting, repeat. The gap between "I have photos" and "I have a proposal ready to send" represents a genuine money sink. Materials are straightforward; labour estimation requires human judgment. But photography and baseline measurements? That's pure drudgery that machines handle better than people do. The question isn't whether to automate this work, but how to wire it together without becoming a full-time software engineer. This workflow connects four specific tools into a chain: photo capture triggers document generation, measurements feed into cost estimation, and final proposals land in your email or CRM with zero manual assembly required. The orchestration is simple enough that a single n8n workflow handles it all. For more on this, see Automated contractor proposal generation from site inspec....

The Automated Workflow

Start with n8n rather than Zapier or Make for this particular job. The reason is straightforward: you need to pass image data between services, and n8n's HTTP request nodes handle binary files more reliably than Zapier's native integrations. Make works too, but requires more trial and error. The workflow follows this sequence: 1. You upload a photo to a cloud folder (Google Drive, Dropbox, or OneDrive all work).

  1. n8n detects the upload via webhook or scheduled polling.

  2. AI Boost enhances the image quality and extracts detail.

  3. Parspec AI analyses the photo to identify materials and components.

  4. Estimatic AI calculates labour and material costs based on scope data.

  5. A formatted PDF proposal is generated and emailed to you and the client. Here's how to set up the n8n workflow:

Step 1: Cloud storage trigger

Configure a Google Drive watch node in n8n. This monitors a specific folder for new uploads.

Trigger node configuration:
- Service: Google Drive
- Event: File added to folder
- Folder: "Site Inspections" (create this folder in your Drive)
- Polling interval: Check every 5 minutes

Step 2: AI Boost for image enhancement

AI Boost doesn't have a direct API integration through n8n's standard library, so you'll use their HTTP endpoint. First, retrieve your API key from the AI Boost dashboard.

HTTP Request node:
- Method: POST
- URL: https://api.aiboost.com/v1/upscale
- Authentication: API Key (set your AI Boost key in n8n credentials)
- Body (JSON):
{ "image_url": "{{ $node['Google Drive'].data.webViewLink }}", "upscale_factor": 2, "format": "png"
}

The output is a higher-resolution version of your site photo, which improves downstream analysis accuracy. Save the response URL to a variable for the next step.

Step 3: Parspec AI for material and scope identification

Parspec AI's API accepts an image URL and returns a structured list of identified materials, dimensions, and quantities. This is the backbone of accurate quoting.

HTTP Request node:
- Method: POST
- URL: https://api.parspec.io/analyse/scope
- Authentication: Bearer token (from Parspec dashboard)
- Body (JSON):
{ "image_url": "{{ $node['AI Boost'].data.output_url }}", "project_type": "roofing", "return_dimensions": true, "return_materials": true
}

The response includes fields like:

json
{ "materials": [ { "type": "asphalt_shingles", "quantity": 42, "unit": "square" } ], "dimensions": { "roof_pitch": "6/12", "area_sqft": 2100 }, "estimated_labour_hours": 28
}

Step 4: Estimatic AI for cost calculation

Pass the structured scope data to Estimatic AI to generate labour costs, material markups, and final pricing.

HTTP Request node:
- Method: POST
- URL: https://api.estimatic.io/v2/generate-estimate
- Authentication: API Key
- Body (JSON):
{ "scope": {{ $node['Parspec AI'].data.scope }}, "labour_rate": 75, "markup_percentage": 25, "location": "UK", "client_name": "{{ $node['Google Drive'].data.name }}"
}

The response includes itemised labour, materials, tax, and total price, all formatted for proposal inclusion.

Step 5: PDF generation and email delivery

Use a dedicated PDF node (available in n8n's marketplace) to merge the inspection photo, scope analysis, cost breakdown, and your company details into a professional proposal template. Then email it.

PDF Template node:
- Template: Use a pre-built contractor proposal template (or build custom HTML)
- Insert variables: - {{ inspection_photo_url }} - {{ scope_description }} - {{ material_costs }} - {{ labour_costs }} - {{ total_price }} - {{ company_logo }} - {{ client_email }} Email node (after PDF generation):
- To: {{ client_email }}
- Subject: "Proposal for [property address]"
- Body: "Please see attached proposal from [your company]."
- Attachment: {{ pdf_output }}

Credentials and testing

Before running live, test each step individually: 1. Upload a test photo to your Google Drive folder.

  1. Run the workflow manually and check n8n's execution logs.

  2. Verify that AI Boost returns an enhanced image URL.

  3. Confirm Parspec AI extracts correct dimensions and materials.

  4. Check Estimatic AI pricing against your expected costs.

  5. Review the generated PDF and email preview. If any step fails, the most common issue is authentication headers. Double-check that your API keys are correctly entered into n8n's credential manager, and that each tool's API documentation matches your request method and payload format.

The Manual Alternative

If you prefer human review before sending proposals, insert an approval step. After the PDF is generated but before the email is sent, add a Slack notification node that posts the proposal to a channel and waits for your thumbs-up emoji. This gives you control without killing automation.

Slack node (manual review gate):
- Channel: #proposals-pending-approval
- Message: "New proposal ready. Review: [link to PDF]. React with ✅ to send."
- Wait for response: Enabled Conditional branch:
- If reaction received: proceed to email
- If timeout (e.g. 24 hours): archive proposal, alert you

This hybrid approach sacrifices full automation but adds a safety net for edge cases where the photo is unclear or scope assumptions might be wrong.

Pro Tips

Rate limiting and batch processing.

Estimatic AI allows up to 100 requests per hour on their standard plan.

If you're processing multiple inspections back-to-back, stagger them with a 30-second delay between requests to avoid hitting the limit. Add a delay node after the Parspec step.

Image quality matters.

AI Boost's upscaling is useful, but it can't recover detail from a blurry original. Coach your team to take photos in daylight, at multiple angles, and with clear focus on damaged areas. A sharp original photo cuts estimation errors by roughly 40 percent.

Fallback for ambiguous photos.

When Parspec AI's confidence score drops below 70 percent (returned in the response metadata), skip the automated email and send it to your internal queue instead. A human should review and manually adjust scope before sending to the client.

Cost variability by location.

Estimatic AI uses postal codes to adjust labour rates and material availability. Make sure your postal code is correctly set in the workflow, or costs will be inaccurate if you're quoting jobs across different regions.

Version control for templates.

As you refine your proposal PDF template, save each version with a timestamp in your template library. This prevents old workflows from using outdated pricing or branding if you later update the template.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
n8n (self-hosted)Free or Pro£0–29Free version supports 2 automated workflows; Pro allows unlimited. We recommend Pro for this workflow.
AI BoostStandard£20–50Pay-as-you-go upscaling; ~£0.10 per image at 2x resolution. 50 inspections per month ≈ £5.
Parspec AIProfessional£30–100~£0.50 per analysis. 50 analyses per month ≈ £25. Includes API access.
Estimatic AIContractor Plus£25–60Includes unlimited estimates and API access. Fixed monthly cost.
Google Drive (storage)Free or Business Standard£0–12Free tier sufficient for most contractors. Business Standard adds shared team access.
Email delivery (via n8n)Included£0n8n's email node uses your own SMTP or connects to Gmail/Outlook. No extra charge.
Total£75–140/monthCovers up to 100 inspections per month with zero manual proposal writing.