Back to Alchemy
Alchemy RecipeIntermediateautomation

Real estate listing automation from inspection photos to virtual tour copy

An estate agent finishes photographing a three-bedroom semi in Surrey. She's captured 47 images, each one needing colour correction and background cleanup. Next comes the description: 200 words of marketing copy emphasising period features and kerb appeal. Then a virtual tour script that'll be narrated by a synthesised voice, layered over the edited photos as a slide presentation. By the time she's done, three to four hours have vanished. She does this for four or five properties a week. That's 12 to 20 hours monthly spent on post-processing work that doesn't directly generate income. The photographs are already taken. The property information exists in her database. What's missing is the automation that should connect those dots without her touching a keyboard between initial upload and published listing. The good news: you can build that automation today with no custom code and almost no manual handoff. We're going to wire together photo enhancement, description writing, and voice narration into a single workflow that takes a folder of images and outputs a complete virtual tour ready to publish.

The Automated Workflow

You'll use n8n as your orchestration layer here. It has good file handling, reliable scheduling, and straightforward integrations with all the tools we need. If you prefer Zapier, the logic translates easily; if you run self-hosted infrastructure, n8n gives you that option. The workflow follows this sequence: 1. Watch a cloud folder (Google Drive or Dropbox) for new property photo uploads.

  1. Extract property metadata from the folder name or a CSV file in that folder.

  2. Enhance and clean each image using Pixelcut AI.

  3. Write a compelling listing description using HyperWrite.

  4. Generate a voice narration script based on that description.

  5. Synthesise the voice using ElevenLabs.

  6. Compile everything into a structured output file ready for your listing platform. Let's build it step by step.

Step 1: Trigger on New Property Folder

Create an n8n workflow with a Google Drive trigger node. Configure it to watch a specific folder where agents upload property photos.

Trigger: "Google Drive - Watch Folder"
Folder: /Estate Agent/Properties
Event: New folder created
Polling interval: 15 minutes

When a new folder appears (named something like "42_Oakwood_Lane_Bristol"), n8n captures the folder ID and passes it downstream.

Step 2: Extract Metadata

Add a "Google Drive - List Files" node. Filter for a JSON file or CSV in that folder containing property details: address, bedrooms, council tax band, asking price.

json
{ "address": "42 Oakwood Lane, Bristol, BS6 2QT", "bedrooms": 3, "bathrooms": 2, "council_tax_band": "E", "asking_price": 525000, "key_features": ["Period features", "Off-street parking", "South-facing garden"]
}

Parse this JSON in n8n using a "Set" node to make the data accessible throughout the workflow.

Step 3: Process Images with Pixelcut AI

Add a "Google Drive - List Files" again, this time filtering for image files (.jpg, .png) in the property folder. For each image, you'll make an HTTP request to Pixelcut's API.

POST https://api.pixelcut.ai/v1/enhance
Headers: Authorization: Bearer YOUR_PIXELCUT_API_KEY Content-Type: application/json Body:
{ "image_url": "https://drive.google.com/uc?id=DRIVE_FILE_ID", "enhance_type": "auto", "remove_background": false, "color_correction": true
}

Store the returned enhanced image URL in a variable. Use an n8n "Loop" node to process all images in the property folder sequentially. Save each result back to Google Drive in an "/Enhanced" subfolder.

Step 4: Generate Listing Description

Pass your metadata (address, bedrooms, features, price) to HyperWrite's API. HyperWrite excels at generating natural, persuasive property descriptions.

POST https://api.hyperwrite.com/v1/generate
Headers: Authorization: Bearer YOUR_HYPERWRITE_API_KEY Content-Type: application/json Body:
{ "prompt": "Write a compelling 180-word property listing description for a {bedrooms}-bedroom house at {address}. Key features: {key_features}. Asking price: £{asking_price}. Tone: professional, warm, appealing to buyers.", "max_tokens": 250, "temperature": 0.7
}

The response is your listing copy. Store it in a variable.

Step 5: Create a Voice Narration Script

Use Claude Opus 4.6 via the Anthropic API. Feed it the listing description and ask it to produce a concise, engaging script suitable for a 60 to 90 second virtual tour narration.

POST https://api.anthropic.com/v1/messages
Headers: x-api-key: YOUR_ANTHROPIC_API_KEY Content-Type: application/json Body:
{ "model": "claude-opus-4.6", "max_tokens": 300, "messages": [ { "role": "user", "content": "Convert this property listing into a 60-second narration script for a virtual tour. Make it engaging and conversational, as if spoken aloud. Property: {listing_description}" } ]
}

Claude returns a polished script ready for voice synthesis.

Step 6: Synthesise Voice with ElevenLabs

Send the narration script to ElevenLabs Turbo v2.5. This generates natural-sounding speech that you'll layer over your enhanced photos.

POST https://api.elevenlabs.io/v1/text-to-speech/{voice_id}
Headers: xi-api-key: YOUR_ELEVENLABS_API_KEY Content-Type: application/json Body:
{ "text": "{narration_script}", "model_id": "eleven_turbo_v2_5", "voice_settings": { "stability": 0.5, "similarity_boost": 0.75 }
}

Save the audio file (MP3) to Google Drive.

Step 7: Compile Output

Create a final JSON manifest containing: - Property metadata

  • List of enhanced image URLs
  • Listing description
  • Narration script text
  • Audio file URL
json
{ "property": { "address": "42 Oakwood Lane, Bristol, BS6 2QT", "asking_price": 525000, "bedrooms": 3 }, "listing_copy": "...", "narration_script": "...", "enhanced_images": ["url1", "url2", "url3"], "audio_url": "https://drive.google.com/...", "created_at": "2026-03-15T10:22:00Z"
}

Write this to Google Drive as listing_manifest.json. Set n8n to send a Slack or email notification to your agent: "Your virtual tour is ready. Download it here." In n8n's visual editor, your workflow looks like a series of connected nodes, each one transforming data. Error handling: add a "Try/Catch" wrapper around the Pixelcut and ElevenLabs calls in case either service is temporarily unavailable. Route failures to a manual review queue.

The Manual Alternative

If you prefer hands-on control, you can run each step independently. Enhance photos in Pixelcut's web interface, write descriptions in HyperWrite's editor, generate the narration script in Claude via the web console, and synthesise audio in ElevenLabs Studio. This takes longer but gives you final approval at each stage. Use this approach for your premium listings where the agent wants creative input; automate it for standard listings.

Pro Tips

API rate limits.

ElevenLabs allows 10,000 characters per month on the free plan.

For a busy agency, that's two to three properties. Move to their Creator plan (£9 monthly) for 100,000 characters. Monitor your consumption in ElevenLabs Dashboard and set up alerts in n8n if you approach limits.

Pixelcut batch processing.

You can send multiple images in a single request if you structure the payload correctly. This reduces API calls and speeds up the workflow. Check their documentation for batch endpoints.

Image quality validation.

Before passing an image to Pixelcut, add a validation step in n8n that checks file size and dimensions. Skip corrupted or duplicate photos automatically. Use n8n's "If" node to branch logic based on file properties.

Cost optimisation.

If an agent uploads 50 photos of the same property by accident, n8n's "Set" node can deduplicate based on hash values before processing. This saves unnecessary API calls to Pixelcut and ElevenLabs.

Scheduling.

Set your Google Drive watcher to poll every 15 minutes, not every minute. This reduces n8n execution minutes and keeps costs lower. For urgent turnarounds, agents can trigger the workflow manually via an n8n webhook.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
n8n CloudPro£252 million executions/month; sufficient for 50+ properties
Pixelcut AICreator£1250 image enhancements/month included; overage £0.05 per image
HyperWritePremium£20Unlimited generation; batch writing tools
ElevenLabsCreator£9100,000 characters/month; voice cloning available
Claude API (Anthropic)Pay-as-you-go£3–5~£0.003 per 1,000 tokens; narration scripts are light
Google Drive / Google WorkspaceBusiness Standard£12Per user; includes 2TB storage
Total per agent,£81–83Automates 40–60 properties monthly