The Swipe Collection — private product family board
The Swipe Collection
Private build board · no domains purchased

One engine.
A whole house of products.

PaintSwipe proved the pattern. The next business is a coordinated family of product-aware visualizers that feeds contractor leads, white-label subscriptions, product commerce, and manufacturer catalogs.

Open the live tools Break down every project file

Written fallback: BathSwipe is the recommended bathroom brand and PaveSwipe is the approved driveway/flatwork working name. Nine public products share one internal SwipeOS platform. PaveSwipe now has a working private proof; its domain remains unpurchased. Every trade keeps a human approval gate for safety, feasibility, pricing, and product availability.

Naming decision

Call it
BathSwipe.ai.

It sells the whole result: showers, walk-in tubs, accessible baths, surrounds, vanities, finishes, and full remodels. TubSwipe would shrink our strongest second product down to one fixture.

Broader productWorks for every bathroom project we already loaded.
Matches PaintSwipeSame short, obvious product-family rhythm.
Preliminary domain signalBathSwipe.ai had no RDAP record when checked August 15. Checkout still decides.
Working now

Live Swipe tools

These links were checked before this page was published. Paint, Bath, and Pave are working proof; the remaining collection cards below are planned products, not live tools.

Working paint proof

PaintSwipe live demo

Advanced Painting's working exterior paint tool and production proof.

Open paint tool ↗
Working BathSwipe proof

Bathroom visualizer

The live bathroom proof with real tubs, products, finishes, filters, and quote intent.

Open bathroom tool ↗
Diagnostic view

Bathroom Super Glasses

The same live tool with its built-in diagnostic and Website Super Glasses layer enabled.

Open Super Glasses ↗
Project anatomy

What every file does

This is the build broken into understandable parts: research decides the opportunity, the registry defines the products, SwipeOS turns the plan into reusable configuration, validators stop bad packages, and the review page makes the decisions visible.

01

README.md

The front door. It locks the BathSwipe naming decision, lists the collection, explains the folder, and records the launch order.

Read the full README ↓
02

MARKET_SWEEP_2026-08-15.md

The evidence. It compares competitors, domain signals, category gaps, revenue options, and why generic AI imagery is not enough.

Read the market sweep ↓
03

PRODUCT_REGISTRY.json

The machine's product list. It gives software one dependable source for all nine brands, waves, scores, domain states, and money lanes.

Inspect the registry source ↓
04

SWIPE_OS_ARCHITECTURE.md

The system blueprint. It explains the shared tenant, catalog, render, QC, lead, commerce, analytics, and monitoring modules.

Read the architecture ↓
05

DESIGN.md

The visual rules. It keeps the whole collection recognizable across private boards, product pages, and future contractor versions.

Read the design DNA ↓
06

review/index.html

The browser board. It turns the research and plans into the visual decision page you are using right now, including voice and controls.

Return to the live board ↑
07

swipeos/

The reusable product engine package: one tenant schema, Bath/Paint/Siding/Pave recipes, and a safe Liberty draft showing how contractors plug in.

Inspect the SwipeOS source ↓
08

scripts/

The quality gates. Two validators prove that the product registry and SwipeOS configuration are complete and internally safe before use.

Inspect the validators ↓
Folder map

What is inside the project

swipe-collection-2026-08-15/
├── README.md
├── MARKET_SWEEP_2026-08-15.md
├── PRODUCT_REGISTRY.json
├── SWIPE_OS_ARCHITECTURE.md
├── DESIGN.md
├── review/index.html + voice
├── swipeos/
│   ├── config.schema.json
│   ├── verticals/bath-v1.json
│   ├── verticals/paint-v1.json
│   ├── verticals/siding-v1.json
│   ├── verticals/pave-v1.json
│   └── tenants/liberty-bathswipe.example.json
└── scripts/
    ├── validate_registry.mjs
    └── validate_swipeos.mjs
Recommended launch order

Build in reuse order

  1. PaintSwipeExisting product and brand
  2. BathSwipeWorking live bathroom proof
  3. SidingSwipeBest exterior reuse
  4. RoofSwipeHigh-value lead lane
  5. PaveSwipeWorking barter-ready paving proof
  6. DeckSwipeOutdoor product package
  7. YardSwipeLandscape and hardscape
  8. FloorSwipeIncludes carpet; crowded market
  9. LightSwipeAfter day-to-night QC is proven
Full technical source

Open the files themselves

The Markdown is rendered later on this page. These expandable panels show the complete registry, schema, recipes, safe tenant draft, and validation scripts—551 original source lines.

PRODUCT_REGISTRY.jsonThe machine-readable lineup: all nine products, launch waves, scores, domain state, revenue lanes, and product-specific cautions. 314 lines · 9,479 bytes
Why this file exists

The machine-readable lineup: all nine products, launch waves, scores, domain state, revenue lanes, and product-specific cautions.

{
  "schema_version": "1.0.0",
  "updated": "2026-08-16",
  "platform": {
    "internal_name": "SwipeOS",
    "public_family_name": "The Swipe Collection",
    "existing_flagship": "PaintSwipe.ai",
    "shared_engine_rule": "One platform, vertical-specific recipes and catalogs"
  },
  "products": [
    {
      "id": "paint",
      "name": "PaintSwipe",
      "domain": "paintswipe.ai",
      "domain_state": "owned",
      "status": "existing",
      "wave": 1,
      "priority_score": 100,
      "promise": "Preview real paint colors on the homeowner's actual space and route the project to the selected painter.",
      "modes": [
        "exterior paint",
        "interior paint",
        "commercial surfaces"
      ],
      "catalog_targets": [
        "Sherwin-Williams",
        "Benjamin Moore",
        "HGTV Home by Sherwin-Williams",
        "Behr",
        "Valspar"
      ],
      "revenue_lanes": [
        "white-label SaaS",
        "qualified painting leads",
        "paint/sample affiliate links",
        "manufacturer catalog placement"
      ],
      "risk_note": "Physical samples and painter confirmation remain the color authority."
    },
    {
      "id": "bath",
      "name": "BathSwipe",
      "domain": "bathswipe.ai",
      "domain_state": "no RDAP record observed 2026-08-15; checkout required",
      "status": "prototype-proven",
      "wave": 1,
      "priority_score": 95,
      "promise": "Turn a real bathroom photo into product-aware remodel directions and a qualified quote request.",
      "modes": [
        "tub-to-shower",
        "walk-in tub",
        "accessible bath",
        "surrounds",
        "vanities",
        "finishes"
      ],
      "catalog_targets": [
        "Ella's Bubbles",
        "Samuel Mueller",
        "Kohler",
        "Moen",
        "Delta",
        "Daltile",
        "MSI"
      ],
      "revenue_lanes": [
        "contractor lead capture",
        "white-label SaaS",
        "product affiliate links",
        "supplier catalog sponsorship"
      ],
      "risk_note": "Render is a concept, not a plumbing plan, measurement, product guarantee, or binding quote."
    },
    {
      "id": "siding",
      "name": "SidingSwipe",
      "domain": "sidingswipe.ai",
      "domain_state": "no RDAP record observed 2026-08-15; checkout required",
      "status": "planned",
      "wave": 2,
      "priority_score": 86,
      "promise": "Compare real siding profiles, colors, trim, and accents on the homeowner's actual exterior.",
      "modes": [
        "vinyl siding",
        "fiber cement",
        "engineered wood",
        "stone accents",
        "trim"
      ],
      "catalog_targets": [
        "James Hardie",
        "CertainTeed",
        "LP SmartSide",
        "Alside",
        "ProVia",
        "AZEK Exteriors"
      ],
      "revenue_lanes": [
        "siding leads",
        "white-label SaaS",
        "dealer referrals",
        "manufacturer catalog placement"
      ],
      "risk_note": "Texture and color preview must map to locally available product lines."
    },
    {
      "id": "roof",
      "name": "RoofSwipe",
      "domain": "roofswipe.ai",
      "domain_state": "no RDAP record observed 2026-08-15; checkout required",
      "status": "planned",
      "wave": 2,
      "priority_score": 82,
      "promise": "Preview real shingle and metal-roof options, then hand the selected look into measurement, proposal, and contractor workflows.",
      "modes": [
        "asphalt shingles",
        "metal roofing",
        "roof color",
        "whole-exterior coordination"
      ],
      "catalog_targets": [
        "GAF",
        "Owens Corning",
        "CertainTeed",
        "IKO",
        "TAMKO"
      ],
      "revenue_lanes": [
        "roofing leads",
        "white-label SaaS",
        "dealer referrals",
        "manufacturer catalog placement"
      ],
      "risk_note": "Visualization never substitutes for roof measurement, structural inspection, ventilation design, or code review."
    },
    {
      "id": "pave",
      "name": "PaveSwipe",
      "domain": "paveswipe.ai",
      "domain_state": "no RDAP record observed 2026-08-16; checkout required",
      "status": "working-prototype",
      "wave": 3,
      "priority_score": 78,
      "promise": "Lock onto a real driveway from an address or photo, compare buildable surface directions, and turn the chosen look into contractor-ready intake.",
      "modes": [
        "asphalt/blacktop",
        "concrete",
        "pavers",
        "gravel/crushed stone",
        "sealcoat/resurfacing",
        "driveways",
        "sidewalks/walkways",
        "aprons/patios",
        "parking areas"
      ],
      "catalog_targets": [
        "regional asphalt plants",
        "regional ready-mix suppliers",
        "Unilock",
        "Belgard",
        "Techo-Bloc",
        "regional aggregate yards",
        "sealcoat suppliers"
      ],
      "revenue_lanes": [
        "paving and concrete leads",
        "white-label contractor websites",
        "material/dealer referrals",
        "maintenance and seasonal follow-up",
        "branded proposal exports"
      ],
      "risk_note": "Concept only; imagery does not prove measurements, base condition, drainage, grading, thickness, utilities, accessibility, permits, code, schedule, or price. Final scope requires onsite contractor review."
    },
    {
      "id": "deck",
      "name": "DeckSwipe",
      "domain": "deckswipe.ai",
      "domain_state": "no RDAP record observed 2026-08-15; checkout required",
      "status": "planned",
      "wave": 3,
      "priority_score": 73,
      "promise": "Place a product-aware deck concept into a real backyard and carry it into a contractor proposal.",
      "modes": [
        "composite",
        "PVC",
        "cedar",
        "pressure-treated",
        "railings",
        "stairs"
      ],
      "catalog_targets": [
        "Trex",
        "TimberTech",
        "AZEK",
        "Fiberon",
        "Deckorators"
      ],
      "revenue_lanes": [
        "deck-builder leads",
        "white-label SaaS",
        "product affiliate/dealer links",
        "branded proposal upgrades"
      ],
      "risk_note": "Concept only; framing, spans, footings, loads, setbacks, permits, and code require professionals."
    },
    {
      "id": "yard",
      "name": "YardSwipe",
      "domain": "yardswipe.ai",
      "domain_state": "no RDAP record observed 2026-08-15; checkout required",
      "status": "planned",
      "wave": 3,
      "priority_score": 70,
      "promise": "Show planting, lawn, beds, hardscape, and outdoor-living concepts on the homeowner's own yard.",
      "modes": [
        "front yard",
        "backyard",
        "planting beds",
        "hardscape",
        "patio",
        "low-maintenance",
        "outdoor living"
      ],
      "catalog_targets": [
        "Belgard",
        "Techo-Bloc",
        "Unilock",
        "regional nurseries",
        "mulch and sod suppliers"
      ],
      "revenue_lanes": [
        "landscaper leads",
        "white-label SaaS",
        "nursery/material affiliate links",
        "sponsored local catalogs"
      ],
      "risk_note": "Plant viability, drainage, grading, utilities, irrigation, and local climate need human/site review."
    },
    {
      "id": "floor",
      "name": "FloorSwipe",
      "domain": "floorswipe.ai",
      "domain_state": "no RDAP record observed 2026-08-15; checkout required",
      "status": "planned-crowded-market",
      "wave": 4,
      "priority_score": 62,
      "promise": "Compare carpet, hardwood, tile, vinyl, and laminate SKUs in the shopper's real room.",
      "modes": [
        "carpet",
        "hardwood",
        "tile",
        "luxury vinyl",
        "laminate"
      ],
      "catalog_targets": [
        "Shaw",
        "Mohawk",
        "Engineered Floors",
        "Daltile",
        "MSI",
        "local flooring retailers"
      ],
      "revenue_lanes": [
        "retailer leads",
        "white-label SaaS",
        "sample/product affiliate links",
        "manufacturer catalog distribution"
      ],
      "risk_note": "Roomvo and other catalog visualizers are strong; enter with local installer leads and combined-room bundles, not a generic clone."
    },
    {
      "id": "light",
      "name": "LightSwipe",
      "domain": "lightswipe.ai",
      "domain_state": "no RDAP record observed 2026-08-15; checkout required",
      "status": "planned-research",
      "wave": 4,
      "priority_score": 60,
      "promise": "Turn a daytime property photo into an installation-oriented evening lighting concept.",
      "modes": [
        "architectural uplighting",
        "path lighting",
        "deck and patio",
        "permanent exterior LEDs",
        "seasonal lighting"
      ],
      "catalog_targets": [
        "Kichler",
        "FX Luminaire",
        "WAC Landscape Lighting",
        "Volt",
        "Lutron",
        "Gemstone Lights"
      ],
      "revenue_lanes": [
        "lighting-contractor leads",
        "white-label SaaS",
        "fixture affiliate/dealer links",
        "proposal exports"
      ],
      "risk_note": "Aesthetic visualization is not a photometric plan, electrical design, fixture count, transformer sizing, or code approval."
    }
  ],
  "backlog": [
    "KitchenSwipe",
    "PatioSwipe",
    "FenceSwipe",
    "DoorSwipe",
    "WindowSwipe",
    "CabinetSwipe",
    "PoolSwipe",
    "GarageSwipe"
  ]
}
swipeos/config.schema.jsonThe rules every contractor tenant must satisfy before SwipeOS accepts its brand, verticals, privacy settings, catalogs, analytics, or lead routing. 353 lines · 8,049 bytes
Why this file exists

The rules every contractor tenant must satisfy before SwipeOS accepts its brand, verticals, privacy settings, catalogs, analytics, or lead routing.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://paintswipe.ai/swipeos/schema/config-v1.json",
  "title": "SwipeOS tenant configuration v1",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "state",
    "tenant",
    "enabled_products",
    "verticals",
    "lead",
    "analytics",
    "commerce",
    "legal"
  ],
  "properties": {
    "schema_version": {
      "const": "1.0.0"
    },
    "state": {
      "enum": [
        "draft-local",
        "review",
        "production"
      ]
    },
    "tenant": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "slug",
        "display_name",
        "brand",
        "contact",
        "territory"
      ],
      "properties": {
        "slug": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9-]{1,63}$"
        },
        "display_name": {
          "type": "string",
          "minLength": 2,
          "maxLength": 100
        },
        "brand": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "primary",
            "secondary",
            "ink"
          ],
          "properties": {
            "primary": {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            "secondary": {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            "ink": {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            "logo_url": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "contact": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "phone",
            "email_display"
          ],
          "properties": {
            "phone": {
              "type": "string"
            },
            "email_display": {
              "type": "string"
            },
            "response_promise": {
              "type": [
                "string",
                "null"
              ]
            }
          }
        },
        "territory": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "type",
            "value"
          ],
          "properties": {
            "type": {
              "enum": [
                "zip-cluster",
                "metro",
                "regional",
                "state",
                "national"
              ]
            },
            "value": {
              "type": "string"
            }
          }
        }
      }
    },
    "enabled_products": {
      "type": "array",
      "uniqueItems": true,
      "minItems": 1,
      "items": {
        "enum": [
          "paint",
          "bath",
          "siding",
          "roof",
          "pave",
          "deck",
          "yard",
          "floor",
          "light"
        ]
      }
    },
    "verticals": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "product_id",
          "recipe_id",
          "catalog_ids",
          "features"
        ],
        "properties": {
          "product_id": {
            "enum": [
              "paint",
              "bath",
              "siding",
              "roof",
              "pave",
              "deck",
              "yard",
              "floor",
              "light"
            ]
          },
          "recipe_id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{2,80}$"
          },
          "catalog_ids": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "features": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sample_gallery",
              "save_magic_link",
              "product_links",
              "quote_request"
            ],
            "properties": {
              "sample_gallery": {
                "type": "boolean"
              },
              "save_magic_link": {
                "type": "boolean"
              },
              "product_links": {
                "type": "boolean"
              },
              "quote_request": {
                "type": "boolean"
              },
              "contractor_match": {
                "type": "boolean"
              },
              "proposal_export": {
                "type": "boolean"
              }
            }
          }
        }
      }
    },
    "lead": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "consent_required",
        "targets"
      ],
      "properties": {
        "consent_required": {
          "const": true
        },
        "targets": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "type",
              "destination"
            ],
            "properties": {
              "type": {
                "enum": [
                  "email",
                  "webhook",
                  "crm",
                  "queue-only"
                ]
              },
              "destination": {
                "type": "string"
              },
              "enabled": {
                "type": "boolean"
              }
            }
          }
        }
      }
    },
    "analytics": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "provider",
        "privacy_mode",
        "allowed_events"
      ],
      "properties": {
        "provider": {
          "enum": [
            "posthog",
            "none"
          ]
        },
        "privacy_mode": {
          "enum": [
            "manual-no-replay-no-person",
            "off"
          ]
        },
        "allowed_events": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "enum": [
              "swipe_tool_viewed",
              "swipe_photo_ready",
              "swipe_option_selected",
              "swipe_render_requested",
              "swipe_render_ready",
              "swipe_result_saved",
              "swipe_product_clicked",
              "swipe_quote_requested",
              "swipe_contractor_match_requested"
            ]
          }
        }
      }
    },
    "commerce": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "affiliate_disclosure_required",
        "routes"
      ],
      "properties": {
        "affiliate_disclosure_required": {
          "const": true
        },
        "routes": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "type",
              "enabled"
            ],
            "properties": {
              "type": {
                "enum": [
                  "owned-service",
                  "contractor-referral",
                  "affiliate",
                  "dealer",
                  "manufacturer-sponsored"
                ]
              },
              "enabled": {
                "type": "boolean"
              }
            }
          }
        }
      }
    },
    "legal": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "concept_only",
        "human_review_required",
        "disclaimer"
      ],
      "properties": {
        "concept_only": {
          "const": true
        },
        "human_review_required": {
          "const": true
        },
        "disclaimer": {
          "type": "string",
          "minLength": 40
        }
      }
    }
  }
}
swipeos/verticals/bath-v1.jsonThe BathSwipe recipe: allowed bathroom changes, protected objects, catalog requirements, disclaimers, and visual QC gates. 45 lines · 1,214 bytes
Why this file exists

The BathSwipe recipe: allowed bathroom changes, protected objects, catalog requirements, disclaimers, and visual QC gates.

{
  "recipe_version": "1.0.0",
  "product_id": "bath",
  "public_name": "BathSwipe",
  "input": {
    "preferred_photo": "Wide doorway view with the full room visible, lights on, and no flash into the mirror.",
    "allowed_types": [
      "image/jpeg",
      "image/png",
      "image/webp",
      "image/heic"
    ],
    "max_bytes": 20971520
  },
  "modes": [
    "tub-to-shower",
    "walk-in-tub",
    "accessible-bath",
    "acrylic-surround",
    "vanity-and-finish"
  ],
  "protected_objects": [
    "person",
    "window",
    "door",
    "mirror",
    "shower glass",
    "plumbing chrome",
    "faucet",
    "toilet unless selected",
    "electrical outlet"
  ],
  "catalog_rules": {
    "product_match_required_for_quote": true,
    "price_requires_freshness_date": true,
    "dealer_cost_never_in_public_payload": true
  },
  "qc": {
    "same_room_identity_required": true,
    "protected_object_check": true,
    "product_plausibility_check": true,
    "human_review_before_customer_delivery": true
  },
  "disclaimer": "Concept visualization only. Final measurements, plumbing, electrical, accessibility, product availability, installation feasibility, and price require qualified human review."
}
swipeos/verticals/paint-v1.jsonThe PaintSwipe recipe: paintable surfaces, identity-preservation rules, real-color constraints, and result checks. 43 lines · 1,155 bytes
Why this file exists

The PaintSwipe recipe: paintable surfaces, identity-preservation rules, real-color constraints, and result checks.

{
  "recipe_version": "1.0.0",
  "product_id": "paint",
  "public_name": "PaintSwipe",
  "input": {
    "preferred_photo": "Straight, well-lit view with the target surfaces visible and major obstructions minimized.",
    "allowed_types": [
      "image/jpeg",
      "image/png",
      "image/webp",
      "image/heic"
    ],
    "max_bytes": 20971520
  },
  "modes": [
    "exterior",
    "interior",
    "commercial"
  ],
  "protected_objects": [
    "person",
    "window",
    "roof unless selected in another product",
    "plants",
    "sky",
    "floor",
    "ceiling",
    "fixtures",
    "furniture"
  ],
  "catalog_rules": {
    "manufacturer_color_id_required": true,
    "physical_sample_recommended": true,
    "screen_color_not_authoritative": true
  },
  "qc": {
    "same_property_identity_required": true,
    "surface_coverage_check": true,
    "protected_object_check": true,
    "human_review_before_customer_delivery": true
  },
  "disclaimer": "Concept visualization only. Screen color, lighting, substrate, sheen, weather, and application change the result. Confirm the final choice with physical samples and a qualified painter."
}
swipeos/verticals/siding-v1.jsonThe first SidingSwipe package: an early recipe that proves new trades can plug into the same platform without a new backend. 45 lines · 1,202 bytes
Why this file exists

The first SidingSwipe package: an early recipe that proves new trades can plug into the same platform without a new backend.

{
  "recipe_version": "0.1.0",
  "product_id": "siding",
  "public_name": "SidingSwipe",
  "input": {
    "preferred_photo": "Full exterior elevation in daylight with siding planes, trim, openings, and roof edges visible.",
    "allowed_types": [
      "image/jpeg",
      "image/png",
      "image/webp",
      "image/heic"
    ],
    "max_bytes": 20971520
  },
  "modes": [
    "vinyl",
    "fiber-cement",
    "engineered-wood",
    "stone-accent",
    "trim"
  ],
  "protected_objects": [
    "person",
    "window",
    "door unless selected",
    "roof",
    "gutter",
    "chimney",
    "plants",
    "sky",
    "masonry unless selected"
  ],
  "catalog_rules": {
    "manufacturer_profile_required": true,
    "texture_asset_required": true,
    "local_availability_state_required": true
  },
  "qc": {
    "same_property_identity_required": true,
    "siding_plane_check": true,
    "opening_and_trim_check": true,
    "human_review_before_customer_delivery": true
  },
  "disclaimer": "Concept visualization only. Final product availability, wall preparation, flashing, moisture control, measurements, code, installation method, and price require contractor and manufacturer confirmation."
}
swipeos/verticals/pave-v1.jsonThe PaveSwipe recipe: address/photo intake, surface modes, protected objects, catalog requirements, driveway-boundary QC, and onsite-review limits. 56 lines · 1,673 bytes
Why this file exists

The PaveSwipe recipe: address/photo intake, surface modes, protected objects, catalog requirements, driveway-boundary QC, and onsite-review limits.

{
  "recipe_version": "0.1.0",
  "product_id": "pave",
  "public_name": "PaveSwipe",
  "input": {
    "preferred_photo": "Address-locked street view or a wide daylight photo showing the entire driveway or flatwork area, its edges, sidewalk crossing, curb, garage, and nearby drainage context.",
    "allowed_types": [
      "image/jpeg",
      "image/png",
      "image/webp",
      "image/heic"
    ],
    "max_bytes": 20971520
  },
  "modes": [
    "asphalt",
    "concrete",
    "pavers",
    "gravel",
    "sealcoat",
    "driveway",
    "sidewalk",
    "apron",
    "patio",
    "parking-area"
  ],
  "protected_objects": [
    "person",
    "vehicle",
    "house",
    "garage",
    "public sidewalk unless selected",
    "curb",
    "street",
    "lawn",
    "landscaping",
    "tree",
    "fence",
    "utility feature",
    "neighboring property"
  ],
  "catalog_rules": {
    "surface_family_required": true,
    "local_supplier_state_required": true,
    "manufacturer_or_material_source_required_for_named_products": true,
    "installation_system_must_not_be_inferred_from_photo": true
  },
  "qc": {
    "same_property_identity_required": true,
    "selected_surface_boundary_check": true,
    "public_sidewalk_and_curb_preservation_check": true,
    "drainage_claim_check": true,
    "human_review_before_customer_delivery": true
  },
  "disclaimer": "Concept visualization and project-intake aid only. Final dimensions, quantities, base preparation, drainage, grading, thickness, reinforcement, utilities, accessibility, permits, code, schedule, material availability, scope, and price require onsite contractor and applicable professional confirmation."
}
swipeos/tenants/liberty-bathswipe.example.jsonA safe draft tenant showing how Liberty's brand and BathSwipe mode fit the shared schema. It has no live lead destination. 88 lines · 2,074 bytes
Why this file exists

A safe draft tenant showing how Liberty's brand and BathSwipe mode fit the shared schema. It has no live lead destination.

{
  "schema_version": "1.0.0",
  "state": "draft-local",
  "tenant": {
    "slug": "liberty-shower-and-bath",
    "display_name": "Liberty Shower & Bath",
    "brand": {
      "primary": "#0057A8",
      "secondary": "#EAF4FF",
      "ink": "#10233A",
      "logo_url": null
    },
    "contact": {
      "phone": "216-310-5599",
      "email_display": "REVIEW-BEFORE-LIVE@example.invalid",
      "response_promise": "Human follow-up after project review"
    },
    "territory": {
      "type": "regional",
      "value": "Greater Cleveland and Northeast Ohio"
    }
  },
  "enabled_products": [
    "bath"
  ],
  "verticals": [
    {
      "product_id": "bath",
      "recipe_id": "bath-liberty-acrylic-v1",
      "catalog_ids": [
        "ellas-bubbles",
        "samuel-mueller"
      ],
      "features": {
        "sample_gallery": true,
        "save_magic_link": false,
        "product_links": false,
        "quote_request": true,
        "contractor_match": false,
        "proposal_export": false
      }
    }
  ],
  "lead": {
    "consent_required": true,
    "targets": [
      {
        "type": "queue-only",
        "destination": "local-review-queue",
        "enabled": true
      }
    ]
  },
  "analytics": {
    "provider": "posthog",
    "privacy_mode": "manual-no-replay-no-person",
    "allowed_events": [
      "swipe_tool_viewed",
      "swipe_photo_ready",
      "swipe_option_selected",
      "swipe_render_requested",
      "swipe_render_ready",
      "swipe_quote_requested"
    ]
  },
  "commerce": {
    "affiliate_disclosure_required": true,
    "routes": [
      {
        "type": "owned-service",
        "enabled": true
      },
      {
        "type": "affiliate",
        "enabled": false
      },
      {
        "type": "manufacturer-sponsored",
        "enabled": false
      }
    ]
  },
  "legal": {
    "concept_only": true,
    "human_review_required": true,
    "disclaimer": "This preview is an illustrative concept, not a measurement, product promise, construction plan, accessibility certification, or binding quote."
  }
}
scripts/validate_registry.mjsThe deterministic gate that verifies nine unique products, correct launch order, valid waves, scores, names, and domain/revenue fields. 46 lines · 1,793 bytes
Why this file exists

The deterministic gate that verifies nine unique products, correct launch order, valid waves, scores, names, and domain/revenue fields.

import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";

const here = path.dirname(fileURLToPath(import.meta.url));
const registryPath = path.resolve(here, "..", "PRODUCT_REGISTRY.json");
const registry = JSON.parse(fs.readFileSync(registryPath, "utf8"));

const requiredProducts = ["paint", "bath", "siding", "roof", "pave", "deck", "yard", "floor", "light"];
const ids = registry.products.map((product) => product.id);
const duplicateIds = ids.filter((id, index) => ids.indexOf(id) !== index);
const missingIds = requiredProducts.filter((id) => !ids.includes(id));
const invalidProducts = registry.products.filter((product) => (
  !product.id ||
  !product.name ||
  !product.domain ||
  !Number.isInteger(product.wave) ||
  !Number.isInteger(product.priority_score) ||
  !Array.isArray(product.catalog_targets) ||
  !Array.isArray(product.revenue_lanes) ||
  !product.risk_note
));

if (registry.schema_version !== "1.0.0") {
  throw new Error(`Unexpected schema version: ${registry.schema_version}`);
}
if (duplicateIds.length) {
  throw new Error(`Duplicate product ids: ${duplicateIds.join(", ")}`);
}
if (missingIds.length) {
  throw new Error(`Missing required product ids: ${missingIds.join(", ")}`);
}
if (invalidProducts.length) {
  throw new Error(`Invalid products: ${invalidProducts.map((product) => product.id || "unknown").join(", ")}`);
}

const ordered = [...registry.products].sort((a, b) => b.priority_score - a.priority_score);
const summary = {
  ok: true,
  schema_version: registry.schema_version,
  product_count: registry.products.length,
  waves: [...new Set(registry.products.map((product) => product.wave))].sort(),
  launch_order: ordered.map((product) => product.name)
};

console.log(JSON.stringify(summary, null, 2));
scripts/validate_swipeos.mjsThe platform safety gate that validates the tenant against the schema and checks vertical recipes, privacy mode, and disabled live routing. 46 lines · 3,038 bytes
Why this file exists

The platform safety gate that validates the tenant against the schema and checks vertical recipes, privacy mode, and disabled live routing.

import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";

const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
const supportedProducts = new Set(["paint", "bath", "siding", "roof", "pave", "deck", "yard", "floor", "light"]);
const tenantPath = path.join(root, "swipeos", "tenants", "liberty-bathswipe.example.json");
const verticalDir = path.join(root, "swipeos", "verticals");
const tenant = JSON.parse(fs.readFileSync(tenantPath, "utf8"));
const verticalFiles = fs.readdirSync(verticalDir).filter((name) => name.endsWith(".json"));
const verticals = verticalFiles.map((name) => JSON.parse(fs.readFileSync(path.join(verticalDir, name), "utf8")));

const errors = [];
if (tenant.schema_version !== "1.0.0") errors.push("tenant schema_version must be 1.0.0");
if (tenant.state !== "draft-local") errors.push("example tenant must remain draft-local");
if (!tenant.tenant?.slug || !tenant.tenant?.display_name) errors.push("tenant identity is incomplete");
if (!tenant.lead?.consent_required) errors.push("lead consent must be required");
if (tenant.tenant?.contact?.email_display?.endsWith("@example.invalid") !== true) errors.push("example must keep a non-live email destination");
if (tenant.analytics?.privacy_mode !== "manual-no-replay-no-person") errors.push("example analytics must use the privacy-safe manual mode");
if (tenant.commerce?.affiliate_disclosure_required !== true) errors.push("affiliate disclosure must be required");
if (tenant.legal?.concept_only !== true || tenant.legal?.human_review_required !== true) errors.push("concept and human-review gates must be true");

for (const product of tenant.enabled_products || []) {
  if (!supportedProducts.has(product)) errors.push(`unsupported tenant product: ${product}`);
  if (!(tenant.verticals || []).some((vertical) => vertical.product_id === product)) errors.push(`enabled product has no vertical config: ${product}`);
}
for (const vertical of verticals) {
  if (!supportedProducts.has(vertical.product_id)) errors.push(`unsupported vertical recipe: ${vertical.product_id}`);
  if (!vertical.disclaimer || vertical.disclaimer.length < 80) errors.push(`vertical disclaimer too short: ${vertical.product_id}`);
  if (!vertical.qc?.human_review_before_customer_delivery) errors.push(`human review missing: ${vertical.product_id}`);
  if (!Array.isArray(vertical.protected_objects) || !vertical.protected_objects.length) errors.push(`protected objects missing: ${vertical.product_id}`);
}

const summary = {
  ok: errors.length === 0,
  tenant: tenant.tenant.slug,
  state: tenant.state,
  enabled_products: tenant.enabled_products,
  vertical_recipes: verticals.map((vertical) => `${vertical.product_id}@${vertical.recipe_version}`).sort(),
  privacy_mode: tenant.analytics.privacy_mode,
  live_destination_count: tenant.lead.targets.filter((target) => target.enabled && target.type !== "queue-only").length,
  errors
};

console.log(JSON.stringify(summary, null, 2));
if (errors.length) process.exit(1);
SwipeOS

One shared machine

Every vertical changes the recipe, protected surfaces, catalog, and disclaimer. Tenant identity, uploads, rendering, QC, analytics, lead routing, save/share, and commerce stay shared.

Launch map

Nine products, four waves

Build in reuse order. Paint and Bath are the proof pair; Siding and Roof create the exterior revenue stack; working PaveSwipe opens a barter-ready paving lane and bridges into Deck/Yard/Light; Floor waits for a strong retailer or installer entry.

01 · score 100Existing

PaintSwipe

paintswipe.ai · owned

Real paint colors on real spaces, routed to the selected painter.

  • White-label SaaS and painting leads
  • Paint/sample commerce
  • Manufacturer catalog placement
02 · score 95Prototype proven

BathSwipe

bathswipe.ai · preliminary open signal

Product-aware bathrooms, accessibility, and remodel quote intent.

  • Liberty proof already built
  • Supplier and SKU catalogs loaded
  • Best second vertical
03 · score 86Next build

SidingSwipe

sidingswipe.ai · preliminary open signal

Real siding profiles, colors, trim, and exterior accents.

  • High reuse from PaintSwipe masks
  • Strong manufacturer/dealer lane
  • Feeds the Exterior Stack
04 · score 82Planned

RoofSwipe

roofswipe.ai · preliminary open signal

Roof color and product preview with a real measurement/proposal handoff.

  • High-value project leads
  • Shingle and metal catalogs
  • Never claims measurement accuracy
05 · score 78Working proof

PaveSwipe

paveswipe.ai · preliminary open signal

Lock the real driveway from an address or photo, then compare asphalt, concrete, pavers, gravel, and sealcoat.

  • Contractor website + lead intake
  • PaintSwipe address-lock playbook
  • Onsite scope and quote stay human
06 · score 73Planned

DeckSwipe

deckswipe.ai · preliminary open signal

Real board options visualized in the customer's own backyard.

  • Deck-builder lead capture
  • Product/dealer referrals
  • Proposal export; no structural claims
07 · score 70Planned

YardSwipe

yardswipe.ai · preliminary open signal

Landscape and outdoor-living concepts constrained by real local services.

  • Landscaper and nursery leads
  • Hardscape/material catalogs
  • Climate and site review required
08 · score 62Crowded market

FloorSwipe

floorswipe.ai · preliminary open signal

One product for carpet, hardwood, tile, vinyl, and laminate.

  • Retailer/installer lead angle
  • Sample and product links
  • Enter through bundles, not a Roomvo clone
09 · score 60Research lane

LightSwipe

lightswipe.ai · preliminary open signal

Day-to-night architectural, landscape, deck, and permanent-light concepts.

  • Lighting-contractor leads
  • Fixture/dealer commerce
  • Not a photometric or electrical plan
Business model

Five ways the same intent earns

The render is the front door. The real product is an attributable path from “I wonder” to a selected material, qualified contractor, and measurable job.

01
Owned/client jobs

Route supported projects to our businesses and approved clients.

02
White-label SaaS

Contractor branding, territory, catalogs, analytics, leads, and CRM handoff.

03
Referral leads

Match unsupported areas/trades with consent and clean attribution.

04
Product commerce

Disclosed affiliate, sample, retailer, and dealer links tied to selections.

05
Catalog placement

Manufacturer distribution and sponsored placement after traffic exists.

Our differentiator

SwipeStack

One approved property photo can create coordinated, multi-trade buying intent instead of ending at one pretty render.

Exterior StackPaintSwipe + SidingSwipe + RoofSwipe + PaveSwipe + LightSwipe
Outdoor StackPaveSwipe + YardSwipe + DeckSwipe + LightSwipe
Interior StackPaintSwipe Interior + BathSwipe + FloorSwipe
Live market

The category is real

Competitors validate demand—and prove that generic AI imagery is not enough. These are current product claims from their own pages; they are not independent performance proof.

See It Done

Cross-trade, branded contractor visualizer with custom catalogs and emailed results.

Official page ↗

Block Renovation

Bathroom photo, style, ZIP-based cost direction, and contractor matching funnel.

Official page ↗

Renoworks / Hover / iRoofing

Roof and exterior catalog visualization plus measurement, estimating, and proposals.

Current overview ↗

PaperPlan

Photo-first deck concepts, real board products, and branded proposals.

Official page ↗

DreamYard / Ideal House

Fast real-yard landscape concepts for homeowners and contractors.

Official page ↗

Roomvo

Strong manufacturer/retailer flooring catalogs and broad dealer distribution.

Official page ↗
Naming evidence

Domain snapshot

RDAP observations from August 15–16, 2026. “No record” is not ownership or a guarantee; only registrar checkout confirms availability. No purchase was made.

Name.ai.comDecision
BathSwipeNo RDAP recordRegisteredRecommended bathroom brand
TubSwipeNo RDAP recordNo RDAP recordReject: too narrow
SidingSwipeNo RDAP recordNo RDAP recordWave 2 working name
RoofSwipeNo RDAP recordRegisteredWave 2 working name
PaveSwipeNo RDAP recordNo RDAP recordApproved working name; proof built
DeckSwipeNo RDAP recordRegisteredWave 3; clear archived repo collision
YardSwipeNo RDAP recordRegisteredShorter than LandscapeSwipe
FloorSwipeNo RDAP recordRegisteredCovers carpet too
LightSwipeNo RDAP recordRegisteredWorking name; formal review later
HomeSwipe / SwipeHomeRegisteredRegisteredAvoid active collisions
Complete source library

All Swipe Markdown

Every project Markdown document is rendered below in full—398 source lines total. Open one document at a time or expand the whole library.

Collection READMENaming decision, product family, file map, launch order, and build rule. 41 source lines

The Swipe Collection

Private build packet for turning PaintSwipe into a family of home-improvement visualizers, lead engines, contractor sales tools, and product/catalog commerce surfaces.

Decision

  • Use BathSwipe.ai, not TubSwipe, for the bathroom product.
  • Keep PaintSwipe.ai as the proven first product.
  • Build one shared platform internally called SwipeOS.
  • Public product family: PaintSwipe, BathSwipe, SidingSwipe, RoofSwipe, PaveSwipe, DeckSwipe, YardSwipe, FloorSwipe, and LightSwipe.
  • Use PaveSwipe as the approved working name for driveways, sidewalks, aprons, patios, parking areas, asphalt/blacktop, concrete, pavers, gravel, and sealcoat.
  • FloorSwipe covers carpet, hardwood, tile, vinyl, and laminate. Do not fragment CarpetSwipe into a separate engine.
  • Do not use HomeSwipe or SwipeHome; both names/domains have active public collisions.
  • No PaveSwipe domain was purchased. The private noindex working proof is live for review at https://4-hitech.info/paveswipe/.

Files

  • MARKET_SWEEP_2026-08-15.md — current competitors, whitespace, naming, domain checks, and revenue lanes.
  • PRODUCT_REGISTRY.json — machine-readable product lineup and launch order.
  • SWIPE_OS_ARCHITECTURE.md — one-engine architecture, analytics, catalogs, leads, and combined-project bundles.
  • DESIGN.md — visual DNA for this private review board and future family pages.
  • review/index.html — browser-friendly decision board with voice guidance.
  • swipeos/ — reusable tenant schema, Bath/Paint/Siding/Pave vertical recipes, and a safe Liberty BathSwipe draft config.
  • scripts/validate_registry.mjs — deterministic registry validation.
  • scripts/validate_swipeos.mjs — deterministic safety/config validation for the first shared-platform package.
  1. PaintSwipe — existing product and brand.
  2. BathSwipe — existing live bathroom proof becomes the first second vertical.
  3. SidingSwipe — easiest exterior reuse and strong manufacturer catalog fit.
  4. RoofSwipe — high-value leads, but add product accuracy and proposal/measurement handoff.
  5. PaveSwipe — working address/photo-first driveway proof with asphalt, concrete, pavers, gravel, and sealcoat.
  6. DeckSwipe — real board/SKU previews and proposal export.
  7. YardSwipe — landscaping concepts, constrained by climate and site realities.
  8. FloorSwipe — strong retail/affiliate opportunity, but a crowded Roomvo-led category.
  9. LightSwipe — outdoor/architectural lighting visualization after the daytime-to-night QC lane is proven.

Immediate build rule

Every new vertical is a mode/config/catalog package on SwipeOS. It does not get a separate backend, lead router, analytics system, or tenant system.

Market Sweep — August 15, 2026Competitors, naming and domain snapshot, whitespace, revenue lanes, moat, and source links. 185 source lines

Swipe Collection market sweep — 2026-08-15

Bottom line

The opportunity is real, but “AI before and after” alone is not a moat anymore. Direct competitors already sell generic or trade-specific visualizers. Our winning position is:

real customer property + real installer catalog + owned contractor lead + cross-vertical SwipeStack + one self-testing platform.

Naming recommendation

Bathroom

Use BathSwipe.ai.

  • Broad enough for tubs, showers, walk-in tubs, surrounds, vanities, flooring, finishes, safety, and full remodels.
  • Matches the existing PaintSwipe.ai naming pattern.
  • bathswipe.ai returned no RDAP record on 2026-08-15. That is a preliminary signal only; registrar checkout is the availability authority.
  • bathswipe.com is registered.

Do not lead with TubSwipe.

  • It narrows the product to one fixture even though the live proof already handles broader bathroom scope.
  • A preliminary public search found abandoned US trademark serial 88822767 for TUBSWIPE in cleaning brushes/sponges. It is unrelated and abandoned, but the name brings no benefit worth the extra baggage.
  • tubswipe.com returned no RDAP record, but a cheap open .com does not make the weaker name strategically better.
Family

Use The Swipe Collection as the working family label and SwipeOS internally. Avoid HomeSwipe/SwipeHome: both .ai names are registered and HomeSwipe is in active public use for real-estate products.

Driveways, paving, concrete, and flatwork — added 2026-08-16

Use PaveSwipe as the working category name.

  • It is broad enough for asphalt/blacktop, concrete, pavers, gravel/crushed stone, sealcoat, driveways, sidewalks, aprons, patios, and small parking areas.
  • DrivewaySwipe is clear but too narrow for a contractor who also performs sidewalks, patios, and parking work.
  • BlacktopSwipe excludes concrete, pavers, and gravel.
  • CementSwipe is technically imprecise because cement is one ingredient in concrete and would narrow the offer.
  • HardscapeSwipe overlaps YardSwipe and DeckSwipe and is less obvious to a homeowner.
  • paveswipe.ai and paveswipe.com returned no RDAP record on 2026-08-16. This is a preliminary signal only; registrar checkout is the authority. No domain was purchased.

Domain snapshot

Checked through Verisign .com RDAP and Identity Digital .ai RDAP on 2026-08-15. “No RDAP record” is not a purchase guarantee. No domain was purchased.

Product .ai .com Call
BathSwipe no RDAP record registered .ai primary; do not chase .com
TubSwipe no RDAP record no RDAP record reject as main brand
RoofSwipe no RDAP record registered .ai working name
SidingSwipe no RDAP record no RDAP record .ai working name; .com defensive only if later approved
DeckSwipe no RDAP record registered .ai working name; preliminary name search found an archived card-game repo
FloorSwipe no RDAP record registered .ai working name; include carpet rather than split it
CarpetSwipe no RDAP record no RDAP record do not fragment FloorSwipe
YardSwipe no RDAP record registered shorter than LandscapeSwipe; preliminary clearance still required
LandscapeSwipe no RDAP record no RDAP record descriptive but clunky
LightSwipe no RDAP record registered working name; do a formal mark review before purchase/launch
PaveSwipe no RDAP record no RDAP record approved working name; private proof built first
SwipeSuite no RDAP record registered do not buy yet; working family does not need another domain
HomeSwipe registered registered avoid; active public collision
SwipeHome registered registered avoid

What is already out there

Cross-trade white-label visualizers
  • See It Done directly targets contractors with an embeddable, branded visualizer across kitchens, driveways, gardens, bathrooms, rendering, and lofts. It supports customized questions/catalog choices and automatic result emails. Its “3x more leads” and “30% more customers” statements are vendor marketing claims, not independently verified facts.
  • Home Visualizer AI, Remodel AI, Ideal House, and similar tools already generate generic room/exterior/landscape concepts. Most are consumer design tools rather than a locally owned contractor lead system.

Implication: our pitch cannot be “we have AI.” It must be product accuracy, local lead ownership, cross-trade coordination, privacy-safe analytics, and verified working pages.

Bathrooms
  • Block Renovation accepts a bathroom photo, style/ambiance, optional ZIP, produces a visual/cost direction, and funnels into contractor matching and proposal/payment services.
  • See It Done sells a contractor-focused bathroom visualizer and branded email follow-up.
  • Other current consumer tools include Visualizee, Paintit.ai, HanoDecor, and general room visualizers.

Gap we can own: Liberty/contractor-specific inventory, accessible-bath products, locally routed quote requests, dealer/SKU context, and no third-party contractor marketplace taking the lead.

Roofing and siding
  • Renoworks positions its platform around cross-brand product catalogs and contractor/manufacturer visualizers.
  • Hover combines guided photo capture, measurement-grade 3D, estimating, proposals, and signatures.
  • iRoofing combines visualization, measurement, CRM, and field sales.
  • Owens Corning Design EyeQ, CertainTeed ColorView, and other manufacturer tools are free but brand-limited.

Gap we can own: fast one-photo concept plus local contractor lead, then handoff into measurement/proposal tools rather than pretending the render is a measurement system. The bigger moat is a coordinated roof + siding + paint + lighting Exterior Stack.

Decks
  • PaperPlan markets a phone-first real-backyard deck visualizer with actual Trex, TimberTech, AZEK, and Fiberon products plus branded proposal export.
  • Manufacturer and general design tools also cover deck concepts.

Gap we can own: multi-tenant contractor lead capture and a combined Deck + Yard + Lighting outdoor package. We should not claim structural design.

Driveways, paving, concrete, and hardscape
  • StoneSwap and Roomagen show that homeowners already expect material visualization for outdoor surfaces.
  • Chameleon Power sells concrete and hardscape visualization around real product catalogs.
  • Beam AI and Archybase focus more on paving takeoffs, estimating, or contractor operations than a homeowner-first visual sales experience.
  • QuoteIQ markets asphalt-business quoting and operations features rather than a property-first material comparison tool.

Gap we can own: combine PaintSwipe's address-to-street-view lock with a driveway-specific surface comparison and contractor-ready project worksheet. The trade website becomes useful before the contractor has photography, a catalog, or a CRM. The honest handoff is visual direction first, onsite measurement and quote second.

Landscaping
  • DreamYard, Ideal House, Home Visualizer AI, OutdoorBrite, and others turn yard photos into landscape concepts.
  • Several products target contractors for on-site proposal visuals.

Gap we can own: local nursery/material catalogs, plant/climate constraints, specific contractor service menus, and cross-sell with decks, patios, lighting, paint, and siding.

Outdoor/house lighting
  • IgnitelyAI targets outdoor-lighting contractors with address/Street View input, manual light placement, AI nighttime enhancement, team workflows, and mockup exports.
  • Makeover markets fast landscape-uplighting before/after previews.
  • Traditional landscape-lighting imaging software already places manufacturer fixtures onto photos.

Gap we can own: the lighting preview embedded in a whole-exterior project, privacy-safe lead capture, and local fixture/install catalogs. Pure lighting visualization by itself is already competitive.

Flooring and carpet
  • Roomvo is the heavyweight: real flooring catalogs, retailer embeds, manufacturer scale, and dealer distribution.
  • TilesDisplay and other multi-surface visualizers compete on tile, stone, walls, PDFs, kiosks, and catalogs.

Gap we can own: do not attack as another generic floor visualizer. Enter with local installer leads, a combined bath/interior package, and clear product/sample routing. FloorSwipe should cover carpet rather than creating CarpetSwipe.

Revenue lanes worth building

  1. Owned jobs — route leads to our own/client service businesses where applicable.
  2. White-label SaaS — contractor-branded visualizer, catalog, analytics, lead routing, and territory package.
  3. Qualified contractor referrals — match out-of-territory or unsupported trades with explicit consent and attribution.
  4. Affiliate/product commerce — big-box or specialty retailer product/sample links with disclosure and current program-term verification.
  5. Manufacturer/dealer catalogs — accurate product assets and paid placement after distribution exists.
  6. Proposal/export upgrades — branded PDF/project packets and CRM handoff.
  7. API/embed — enterprise or marketplace integrations after the common engine is stable.

The moat to build

  • One address/photo becomes several coordinated project possibilities.
  • Every visual is tied to a real service/product menu, not random generative style.
  • Contractors keep their leads and brand.
  • Product clicks, sponsored placement, contractor matching, and owned service work remain visibly distinct.
  • PostHog measures the funnel without collecting the customer's private photo/contact payload.
  • Website Super Glasses verifies the tool still works on mobile and after catalog changes.
  • Super Glasses QC can reject identity drift, impossible surfaces, wrong products, unreadable text, and broken results before customer delivery.

Build recommendation

  1. Rename the existing bathroom product direction to BathSwipe in local source/config first; do not change Liberty's live branding until reviewed.
  2. Generalize the existing PaintSwipe tenant schema into SwipeOS vertical packages.
  3. Ship BathSwipe as the second proof using the existing Liberty inventory and live tool.
  4. Build SidingSwipe before RoofSwipe because it reuses more of the proven paint/surface pipeline and has less measurement confusion.
  5. Build RoofSwipe with a deliberate measurement/proposal handoff.
  6. Use the working PaveSwipe proof as the first barter-ready contractor website and Outdoor Stack bridge.
  7. Build the rest of the Outdoor Stack: DeckSwipe → YardSwipe → LightSwipe.
  8. Enter flooring last unless a real retailer/client appears first.

Sources

Primary/current product pages read on 2026-08-15:

  • See It Done — https://seeitdone.ai/
  • Block bathroom visualizer — https://www.blockrenovation.com/tools/bathroom-remodel-visualizer
  • Roomvo for manufacturers — https://get.roomvo.com/solutions/visualizer-flooring-manufacturers
  • Renoworks roofing visualizer roundup — https://www.renoworks.com/all-news/top-5-roofing-visualizers-that-actually-work-in-2026
  • PaperPlan deck visualizer — https://paperplan.app/ai-deck-design
  • DreamYard contractor page — https://dreamyard.ai/contractors
  • IgnitelyAI — https://www.ignitelyai.io/
  • Makeover landscape uplighting — https://www.makeover.so/landscape-uplighting-preview
  • Home Visualizer AI — https://www.homevisualizer.ai/
  • ProVia visualizers — https://www.provia.com/design-center/envision
  • StoneSwap — https://stoneswap.com/
  • Roomagen — https://www.roomagen.com/
  • Chameleon Power — https://www.chameleonpower.com/
  • Beam AI paving takeoffs — https://www.ibeam.ai/
  • Archybase — https://archybase.com/
  • QuoteIQ — https://myquoteiq.com/

Search and registry evidence:

  • Agent Reach Exa search (partially rate-limited), OpenClaw Tavily fallback, and Jina direct-page reads.
  • Verisign .com RDAP — https://rdap.verisign.com/com/v1/
  • Identity Digital .ai RDAP — https://rdap.identitydigital.services/rdap/
  • Preliminary TUBSWIPE abandoned-mark reference — https://furm.com/trademarks/tubswipe-88822767

This is a business/product scan and preliminary naming screen, not a legal trademark opinion or availability guarantee.

SwipeOS ArchitectureShared engine, SwipeStack bundles, analytics contract, revenue flywheel, packaging, and build gates. 114 source lines

SwipeOS — one engine for the Swipe Collection

Core decision

Do not make nine products as nine codebases. Build one multi-tenant visual-commerce and lead platform with vertical-specific mode packages.

homeowner photo/address
        |
        v
photo readiness + permission gate
        |
        v
vertical recipe (paint / bath / siding / roof / pave / deck / yard / floor / light)
        |
        +--> protected-object rules
        +--> real product/catalog constraints
        +--> render engine route
        +--> Super Glasses visual/technical QC
        |
        v
before/after + selected products + concept disclaimer
        |
        +--> save/share magic link
        +--> buy/sample/affiliate links
        +--> contractor quote or match
        +--> branded proposal

Shared platform modules

  1. Tenant and identity config — contractor brand, territory, contact, enabled verticals, lead targets, catalog permissions, pricing tier, and analytics settings.
  2. Input intake — address/photo upload, ownership/permission checkbox, HEIC normalization, size/decode checks, tips, and abuse limits.
  3. Vertical recipe registry — prompts, segmentation/surface rules, protected objects, coverage ranges, allowed material changes, and result disclaimers.
  4. Catalog service — manufacturer, retailer, SKU, color/texture, asset, territory, price freshness, affiliate/dealer URL, and availability state.
  5. Render router — local RTX 5090 first where it is the approved production lane; warm-queue handling; fallback route only when explicitly configured.
  6. Super Glasses QC — technical file validation, before/after identity preservation, surface accuracy, product plausibility, protected-object checks, and reject/rebuild states.
  7. Lead router — contractor inbox/CRM/webhook, territory assignment, duplicate detection, consent record, render and product selections, and delivery receipt.
  8. Save/share service — magic-link project return without forcing an account.
  9. Commerce router — affiliate/product/sample links, dealer handoff, contractor quote, and sponsored catalog attribution kept distinct.
  10. Website Super Glasses — daily checks for broken images, dead controls, mobile overflow, failed requests, and missing analytics.

The differentiator: SwipeStack

Most competitors solve one trade or provide a generic makeover. SwipeStack lets one approved property photo become a coordinated package:

  • Exterior Stack: PaintSwipe + SidingSwipe + RoofSwipe + PaveSwipe + LightSwipe.
  • Outdoor Stack: PaveSwipe + YardSwipe + DeckSwipe + LightSwipe.
  • Interior Stack: PaintSwipe Interior + BathSwipe + FloorSwipe.
  • Whole-home lead: customer picks several projects, then the platform routes each line item to the right owned/client/affiliate contractor lane.

This creates cross-sell value that single-category visualizers do not naturally capture.

PaveSwipe address-lock lane

PaveSwipe inherits PaintSwipe's lowest-friction property intake instead of asking every visitor to find a good photo first:

  1. The homeowner types a full address.
  2. Census geocoding is tried first for a US rooftop-level match; Nominatim is the fallback.
  3. Google street imagery is opened in a drag-to-aim viewer.
  4. The homeowner walks, turns, and zooms until the real driveway is centered.
  5. Use this driveway locks that exact view into the local project.
  6. Photo upload remains available when street imagery is missing, stale, blocked, or poorly angled.

The address is used only to find the property image in the browser. It must not enter privacy analytics. Locking a view identifies the visual target; it does not measure the driveway or prove boundaries, drainage, grading, base condition, utilities, or ownership.

Privacy-safe PostHog event contract

Track behavior and funnel state, not private project content.

  • swipe_tool_viewed — vertical, tenant, anonymous session class.
  • swipe_photo_ready — vertical and input type only; never image, filename, URL, address, EXIF, or contact data.
  • swipe_option_selected — vertical and controlled option ID/SKU only.
  • swipe_render_requested — vertical and recipe version.
  • swipe_render_ready — vertical, latency bucket, QC state.
  • swipe_result_saved — vertical; no magic token.
  • swipe_product_clicked — vertical, merchant/manufacturer, controlled SKU, disclosure state.
  • swipe_quote_requested — vertical and tenant; contact stays in the lead system, not analytics.
  • swipe_contractor_match_requested — vertical and territory bucket, not exact address.

Use no autocapture, session replay, typed-text capture, photo capture, contact fields, persistent person profile, or full URL/referrer where project tokens can appear.

Revenue flywheel

  1. Free homeowner visualization creates intent.
  2. Contractor lead/referral monetizes the job.
  3. White-label subscription monetizes the contractor software.
  4. Product/sample affiliate or dealer links monetize material selection.
  5. Manufacturer catalog placement monetizes distribution after reach exists.
  6. Proposal/export/API upgrades monetize professional workflow.

Keep every revenue role labeled. An affiliate click, paid catalog placement, contractor match, and owned job are not the same thing.

Initial packaging hypothesis

Do not publish pricing yet. Test this privately against real prospects:

  • Core single-vertical contractor plan: reuse current PaintSwipe anchors.
  • Additional vertical on the same tenant: a lower monthly add-on because the shared platform is already installed.
  • SwipeStack territory package: two or more noncompeting trades share a coordinated property project while each receives only its own lead scope.
  • Revenue-share option: limited, attributed jobs only, with clear terms and no exclusivity unless explicitly contracted.

Build gates for every vertical

  1. Three representative owned/approved test photos.
  2. Three product/material choices per photo.
  3. Protected objects and property identity preserved.
  4. Product/SKU availability source stored with accessed date.
  5. Desktop 1440, mobile 390, and narrow 320 QA.
  6. No horizontal overflow, console errors, failed requests, or broken images.
  7. Privacy-safe analytics event test.
  8. Lead route tested without contacting a real prospect.
  9. Human-review disclaimer appropriate to the trade.
  10. Actual visual watch before promotion to public/customer use.
Swipe Collection Design DNAPage job, direction, tokens, typography, layout, interaction, and proof language. 58 source lines

Swipe Collection Design DNA

Page job

  • Audience: Dad and the internal product team.
  • Purpose: decide the product family, launch order, naming, and revenue architecture.
  • Primary action: review BathSwipe plus the working PaveSwipe ninth-product proof and choose the next commercialization sprint.
  • Status: private local review; not public marketing copy.

Direction

Workshop control board with a spectrum edge. The page should feel like the PaintSwipe brand expanded into a product factory: dark graphite canvas, bright white working cards, violet control highlights, and a thin multicolor swipe ribbon.

Tokens

  • Canvas: #090b14
  • Deep panel: #111522
  • Paper: #f7f7fb
  • Ink: #141522
  • Muted: #667085
  • PaintSwipe violet: #7c5cff
  • Violet dark: #5436e8
  • Success: #16845b
  • Warning: #b66a00
  • Spectrum: violet → blue → cyan → green → amber → coral
  • PaveSwipe accent: safety yellow #f4c430 on asphalt black #111318; keep Swipe violet as the family-link color.
  • Radius: 18px cards, 999px pills
  • Shadow: soft, broad, low-opacity; never glassmorphism-heavy

Typography

  • Display: system sans with heavy weight and tight tracking.
  • Body: system sans, 16–18px, generous line height.
  • Technical labels: compact uppercase with letter spacing.

Layout

  1. Compact sticky utility bar.
  2. Outcome-first hero with BathSwipe recommendation.
  3. One-engine architecture strip.
  4. Nine product cards in launch order, with working PaveSwipe linked beside Paint and Bath proof.
  5. Revenue flywheel.
  6. Domain and risk decisions.
  7. Build gates and approval boundary.

Interaction

  • Visible voice button near the top with written fallback.
  • Filter product cards by wave/status.
  • No autoplay audio.
  • Keyboard-operable controls and visible focus.
  • Respect reduced motion.

Proof language

  • Separate verified facts, competitor claims, working recommendations, and unverified legal/domain assumptions.
  • Never promise structural accuracy, code compliance, product availability, pricing, or installation feasibility from a visual render.
  • Say “preliminary public search” rather than “trademark cleared.”
Approval boundary

Build now. Spend later.

The common platform, product registry, BathSwipe source adaptation, PaveSwipe proof, and private prototypes are active build work. Domains, public brand claims, affiliate applications, manufacturer outreach, and paid/public launch remain approval steps.

Ready to build locally

  • Generalize tenant config into SwipeOS.
  • Create BathSwipe local brand/config from the Liberty proof.
  • Use PaveSwipe as the first contractor barter proof.
  • Add SidingSwipe recipes and three-photo benchmark.
  • Build privacy-safe PostHog event contracts.

Needs Dad approval first

  • Buy or register any domain.
  • Rename the live Liberty page publicly.
  • Apply to affiliate programs or accept terms.
  • Contact manufacturers, contractors, or prospects.
  • Publish pricing, paid placements, or referral promises.