Discussion draft

Preiss Portfolio Rebuild — Automation Candidates

The automations that are technically possible for the Preiss rebuild, ordered top to bottom by priority within each phase — the working assumption is a fixed budget, worked down the list as far as it reaches.

45 candidates · 10 already built · 4 August 2026

Drag to reorder within a phase · Drop to set an item aside · ★ to champion one card per phase.
✓ Already built
Reusable Works on other portfolios too
AI Driven Depends on an AI service
One-shot Specific to Preiss data structures
18
Capture — read from the live sites
9 built · 9 remaining
13
Enrichment — transform what was captured
1 built · 12 remaining
14
Provisioning — write the new site
14 remaining
Capture
⠿✓

Media Extraction

Capture

Walk each site's uploads tree and extract original images only — skipping WordPress derivatives, resolving filename collisions, and routing every file to images, logos or icons.

Reusable
⠿✓

Image Manifest

Capture

Map every extracted image back to the WordPress attachment it came from, so the association survives after the old site is gone. The only route from a renamed, re-encoded file back to its original post.

Reusable
⠿✓

Image Alt Text

Capture

Alt text for every attachment, carried in the manifest alongside the image. The live sites hold full coverage in hand-written SEO copy.

Reusable
⠿✓

Brand Assets

Capture

Resolve and extract the colour logo, monochrome logo, favicon and map marker from theme options, across the several generations of ACF field names still in use.

One-shot
⠿✓

Colour Palette

Capture

Extract the eight theme colour keys per site, resolving older and newer ACF option names and reporting which are unset.

One-shot
⠿✓

Social Links

Capture

Extract the property's social profile URL for each network from theme options, taking only the current generation of fields so stale ACF defaults are not carried over.

One-shot
⠿✓

Third-Party Scripts

Capture

Collect every third-party snippet from all three places they live: the ACF script manager fields, the HFCM plugin, and raw theme partials.

Reusable
⠿✓

API Keys and Tour IDs

Capture

Extract the Google Maps key, reviews API key and property slug, and find every Panoskin tour ID by matching on value rather than field name, since sites store them inconsistently.

One-shot
⠿✓

Hot Spots Export and Remap

Capture

Export the hot spot post type and rewrite it into the new theme's structure — field keys remapped, user data stripped, distances recomputed from the property origin. Ready to import as-is.

One-shot
⠿01

Page Content and Module Stack

Capture

Extract every page's ACF flexible-content module stack — module type, order, and each module's field values — from the live database. This is the structural backbone the rebuild's pages are generated from.

One-shot
⠿02

Amenities

Capture

Capture each amenity as an icon and label pair, in its group — the live sites split them into Community Amenities and Apartment Features. Icons are extracted today as bare SVGs with no record of which amenity they belong to.

One-shot
⠿03

Gallery Groupings

Capture

Record which images belong to which gallery group, and in what order. The live galleries divide into Community and Apartment sets; without this, gallery images arrive as an undifferentiated pile.

One-shot
⠿04

SEO Metadata

Capture

Export Yoast titles, meta descriptions and OG data per page. The live sites carry hand-written, property-specific metadata that would otherwise have to be re-authored from nothing.

Reusable
⠿05

Resident Services Tiles

Capture

Capture the resident services block from the Resources page — Resident Portal, SimpleBills, Rent Reporting, Renters Insurance and the rest — as icon, title, description and link. The set varies by property.

One-shot
⠿06

Property Location

Capture

Capture each property's latitude and longitude as a first-class exported value, feeding the map section every site runs. The pipeline already derives these internally for hot spot distances, then discards them.

One-shot
⠿07

URL Inventory for Redirects

Capture

Record the complete set of live URLs per site as the source side of an old-to-new redirect map. Small — roughly eight URLs per site plus floor plan children — but only obtainable while the old site is up.

Reusable
⠿08

FAQs — Diff Against Standard

Capture

Capture the property-specific FAQ outliers by diffing each site's questions against the portfolio-standard set, which carries as a template. Roughly four questions per site are genuinely unique.

One-shot
⠿09

Theme Settings Beyond Colour

Capture

Extract the remaining global theme options: typography choices, layout toggles, and any site-wide display settings the old theme exposes.

One-shot
Enrichment
⠿✓

WebP Normalisation

Enrichment

Convert every extracted raster image to WebP so the published asset tree is a single format, scaling down anything past the maximum dimension.

Reusable
⠿10

Image Upscaling

Enrichment

Run images through the LetsEnhance API to raise resolution where the new theme's placements demand more than the source provides.

ReusableAI Driven
⠿11

Image Placement Classification

Enrichment

Determine what each image was used for — hero, in-content, gallery — by tracing which ACF fields referenced it. This turns the extracted image set from a pile into a placement map.

Reusable
⠿12

Content Enhancement via GPT

Enrichment

Pass scraped copy through the PM's targeted prompts to tighten, expand and improve it, emitting machine-readable output rather than prose.

ReusableAI Driven
⠿13

SEO Enhancement via GPT

Enrichment

Apply the same treatment to Yoast titles and meta descriptions, improving on what the old site had instead of merely porting it.

ReusableAI Driven
⠿14

Content Serialization

Enrichment

Serialize the scraped and enhanced content into a single importable per-site format that the build stage consumes.

Reusable
⠿15

Module Mapping

Enrichment

Map each old-theme module type to its new-theme equivalent, including field-level correspondence and rules for modules with no direct counterpart.

One-shot
⠿16

Alt Text Generation

Enrichment

Generate alt text for any image that arrives without it, so nothing ships to a new site uncredited.

ReusableAI Driven
⠿17

Crop and Aspect-Ratio Prep

Enrichment

Pre-crop images to the aspect ratios the new theme's slots expect, so placements are not distorted or awkwardly cropped at render time.

Reusable
⠿18

Near-Duplicate Image Detection

Enrichment

Identify duplicate and near-duplicate images across a site's uploads and collapse them, reducing both the import volume and the visual repetition.

Reusable
⠿19

Image Quality Triage

Enrichment

Flag images that are too small, too compressed, or otherwise unusable before they reach a new site, so problems surface as a list rather than as a bad page.

Reusable
⠿20

Colour Palette Mapping

Enrichment

Map extracted colours onto the new theme's colour tokens, checking contrast so the rebuild starts accessible.

Reusable
⠿21

Content Gap Detection

Enrichment

Identify new-theme modules that have no corresponding source content, producing an explicit list of what a site is missing before it is built.

Reusable
Provisioning
⠿22

WordPress Install and Activation

Provisioning

Provision a WordPress installation with the correct theme and required plugins activated, ready to receive content.

Reusable
⠿23

Staging Site Creation

Provisioning

Create the staging site itself via the RunCloud API, so no manual server work is needed to start a rebuild.

Reusable
⠿24

Image Import

Provisioning

Import processed images into the new site's media library, carrying alt text and preserving the association back to the original attachment.

Reusable
⠿25

Page Generation

Provisioning

Create the new site's pages — titles, slugs, hierarchy, templates — from the captured page inventory.

Reusable
⠿26

Legal and Policy Page Generation

Provisioning

Generate the privacy policy, terms of service, cookie policy and pet policy pages on each new site, from shared boilerplate plus the per-property specifics.

Reusable
⠿27

Module Fill

Provisioning

Populate each generated page's modules with the enhanced content and processed images, assembling the actual page bodies.

Reusable
⠿28

Theme Settings and ACF Options

Provisioning

Write global theme options into the new site — colours, typography, brand assets, social links, API keys and property settings.

Reusable
⠿29

HFCM Script Installation

Provisioning

Install the captured third-party scripts into the HFCM plugin on the new site, preserving placement and activation state.

Reusable
⠿30

Yoast Import

Provisioning

Write the exported and enhanced SEO titles and descriptions onto their corresponding new pages.

Reusable
⠿31

Hot Spots Import

Provisioning

Import the transformed hot spot export into the new site. The export side is already built; nothing consumes it yet.

Reusable
⠿32

Menu Generation

Provisioning

Build the new site's menus and assign them to the theme's menu locations.

Reusable
⠿33

Widget Generation

Provisioning

Populate widget areas, footer columns and sidebars on the new site.

Reusable
⠿34

Redirect Installation

Provisioning

Install the old-to-new redirect map on the new site so existing inbound links and search rankings survive cutover.

Reusable
⠿35

User and Role Setup

Provisioning

Create the required user accounts and roles on each new site as part of provisioning.

Reusable