Property agents know the drill. You photograph a house, spend two hours editing and sorting those photos, write a description that somehow makes a cramped kitchen sound spacious, and then repeat the process for the next listing. By Friday, you've burned through days just preparing visual content. The market doesn't wait, though. Buyers scroll fast, and properties sit longer without engaging presentations. The bottleneck is real, but it's also fixable. Modern AI tools can transform raw inspection photos into polished virtual tours, complete with generated video walkthroughs and enhanced imagery. The trick is wiring them together so your photos flow automatically from camera to finished tour without you manually juggling files between applications. This workflow takes inspection photos from a cloud folder, enhances them, generates a video tour with a virtual presenter, and deposits the finished assets back where you need them. No switching tabs. No manual handoffs. Just photos in, tours out. For more on this, see Real estate property listing with virtual tour from inspe.... For more on this, see Real estate virtual tour creation from property inspectio.... For more on this, see Real estate listing production: Photos to virtual tour to....
The Automated Workflow
You'll need an orchestration platform to coordinate the tools. For this workflow, n8n works well because it handles file operations cleanly and requires minimal setup. Zapier is simpler but charges per task; Make (Integromat) sits between them. I'll walk through n8n because it gives you the most control without costing per execution. The overall sequence: 1. Watch a cloud folder (Google Drive or Dropbox) for new inspection photos.
-
Upscale and enhance images via AI Boost.
-
Generate a property description using Claude Opus 4.6.
-
Create a video tour using Hour One with a virtual presenter.
-
Clean up and optimise the photos with Pixelcut AI.
-
Store the finished assets in an output folder.
Setting up the trigger in n8n:
Start with a File Trigger node pointing to your Google Drive folder. n8n will poll the folder every 5 minutes and detect new files.
{ "type": "google_drive_folder", "folder_id": "YOUR_GOOGLE_DRIVE_FOLDER_ID", "poll_interval": 5, "file_types": ["image/jpeg", "image/png"]
}
Step 1: Image Enhancement via AI Boost
Once files arrive, send them to AI Boost for upscaling and enhancement. AI Boost offers an API endpoint for batch image processing.
POST https://api.aiboost.co/v1/enhance
Content-Type: application/json { "image_url": "{{ $json.file_url }}", "enhancements": [ "upscale_4x", "denoise", "auto_colour_correct" ], "output_format": "jpeg", "quality": 95
}
Configure the HTTP Request node in n8n to make this call. Store the returned enhanced image URL in a variable for the next step.
Step 2: Generate a Property Description
Use Claude Opus 4.6 to write a compelling property description based on the image metadata and file names. Claude can infer room types and features from filenames like "living_room_wide_angle.jpg".
POST https://api.anthropic.com/v1/messages
Content-Type: application/json
Authorization: Bearer YOUR_ANTHROPIC_API_KEY { "model": "claude-opus-4.6", "max_tokens": 500, "messages": [ { "role": "user", "content": "Based on these filenames and image descriptions from a property inspection, write a compelling 150-word property description for a real estate listing: {{ $json.filenames }}. Focus on appeal, light, space, and any standout features." } ]
}
Store the generated description. You'll use it in the video narration.
Step 3: Create the Video Tour with Hour One
Hour One takes text and produces a video with a virtual presenter. The API accepts a script and returns a video file URL.
POST https://api.hourone.com/v1/videos
Content-Type: application/json
Authorization: Bearer YOUR_HOURONE_API_KEY { "script": "{{ $json.property_description }}", "presenter": "female_professional", "presenter_style": "professional", "background_type": "property_images", "background_images": [ "{{ $json.enhanced_image_url_1 }}", "{{ $json.enhanced_image_url_2 }}", "{{ $json.enhanced_image_url_3 }}" ], "video_length": "60-90", "voice": "british_english_female", "output_quality": "1080p"
}
Hour One will process asynchronously. Store the job ID and poll the status endpoint every 30 seconds until the video is ready.
GET https://api.hourone.com/v1/videos/{job_id}/status
Authorization: Bearer YOUR_HOURONE_API_KEY
Step 4: Clean Up Images with Pixelcut AI
While the video renders, process the enhanced images again with Pixelcut AI for background removal and final polish. Pixelcut works well for removing distracting elements.
POST https://api.pixelcut.ai/v1/process
Content-Type: application/json
Authorization: Bearer YOUR_PIXELCUT_API_KEY { "image_url": "{{ $json.enhanced_image_url }}", "operations": [ { "type": "remove_background", "background_colour": "white" }, { "type": "enhance", "sharpness": 1.2, "contrast": 1.1 } ], "output_format": "webp"
}
Step 5: Consolidate and Store
Once the video is ready (poll until the status returns "complete"), download it and move both the finalised images and video to your output folder structure.
{ "property_id": "{{ $json.property_id }}", "images": { "enhanced_folder": "gs://YOUR_BUCKET/properties/{{ $json.property_id }}/images/enhanced", "cleaned_folder": "gs://YOUR_BUCKET/properties/{{ $json.property_id }}/images/final" }, "video": { "url": "{{ $json.video_url }}", "destination": "gs://YOUR_BUCKET/properties/{{ $json.property_id }}/tour.mp4" }, "metadata": { "description": "{{ $json.description }}", "created_at": "{{ now() }}" }
}
Store this manifest as a JSON file alongside your assets so you can reference the tour and description later.
Error Handling:
Add a Try/Catch node around the entire workflow. If any step fails, log the error and send a Slack notification with details.
{ "channel": "#property-automation-errors", "message": "Tour generation failed for property {{ $json.property_id }}: {{ $error.message }}", "attachments": [ { "text": "Failed step: {{ $json.failed_step }}" } ]
}
The Manual Alternative
Not every agent wants a fully automated pipeline. You might prefer to pick which photos get processed, or you want to tweak descriptions before they become videos. Keep the individual steps but run them manually: 1. Upload photos to a folder, review them yourself.
-
Use AI Boost's web interface to enhance the batch you've selected.
-
Write or edit the description in Claude directly (via Claude.ai or an API call in your own application).
-
Feed the description and images to Hour One's web app to generate the video with your chosen presenter style.
-
Use Pixelcut's web editor if any images need more careful retouching. This approach takes longer but gives you full control and reduces the risk of something being processed that shouldn't be.
Pro Tips
Batch processing:
Don't process one photo at a time.
Collect photos in the folder for 30 minutes before triggering the workflow, then process them in batches. This reduces API overhead and cuts costs significantly.
Rate limits:
AI Boost and Hour One both have rate limits. Set n8n to queue requests and space them out with 2-3 second delays between API calls. This prevents throttling and keeps your automation stable.
Cost optimisation:
Upscaling every photo to 4x is expensive. Reserve 4x upscaling for hero images (living room, kitchen exterior). Use 2x upscaling for secondary rooms. This halves image processing costs without visible quality loss.
Video polling:
Hour One videos take 2-5 minutes to render. Don't poll every 5 seconds; you'll waste API calls. Poll every 30-60 seconds and set a maximum wait time of 10 minutes. If the video isn't ready by then, log it and retry the next day.
Fallback descriptions:
If Claude fails to generate a description (rare but possible), have a fallback template: "A [bedroom count]-bedroom property with [room types detected from filenames]. Explore the full tour above." This keeps the workflow running even if one step stumbles.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| n8n | Self-hosted or Cloud Pro | £0–£40 | Self-hosted is free; Cloud Pro needed for advanced nodes |
| AI Boost | Pay-per-image | £10–£30 | ~£0.10–£0.15 per image upscaled |
| Hour One | Starter | £99–£199 | Includes 50–100 video minutes per month |
| Pixelcut AI | Pro | £15–£30 | Unlimited processing for subscribed users |
| Claude Opus 4.6 (via API) | Usage-based | £5–£15 | ~£0.015 per 1k input tokens |
| Google Drive or Dropbox | Basic | £0–£10 | Free tier sufficient for most agents |
| Total | £139–£324 | Processes ~100–200 properties monthly |