# Listing to 3D A reusable skill and private ChatGPT/Codex plugin that turns an individual real-estate listing link into a plan-based, furnished, walkable 3D reconstruction of the actual property. ## ChatGPT plugin Install [Listing to 3D](https://chatgpt.com/plugins/plugins_6ac270ec9d808191b6cb07bc2c3a3274) from its private plugin page, then start a new ChatGPT Work chat with the plugin selected and paste the listing URL. This personal plugin link is accessible only to its owner unless sharing is changed. You can also say “Use Listing to 3D to reconstruct this property” followed by the link. Plugin availability and automatic skill activation depend on the host; explicit selection is the clearest way to invoke it. Invoking the plugin without a link prompts: **“Paste the link to the property listing you’d like to visualize in 3D.”** It waits for the link before starting and does not ask again when a usable link is already supplied. This is the plugin's conversational opening, not an automatic message sent when its directory page opens. Version 0.1.0 was saved as a private personal plugin on 4 October 2026. Archive integrity, allowed contents, manifest paths, skill references and source equivalence passed local checks and a separate package review. Version 0.1.1 adds the link-first opening prompt. The first installed invocation in a fresh ChatGPT Work chat remains unverified. The underlying workflow previously produced the locally tested Oksholm 40 reconstruction; that is not a test of ChatGPT plugin installation. The optional system skill validator could not run because PyYAML was unavailable; the package builder checks required frontmatter and the account service accepted the archive. The plugin packages this workflow and its reference files. It uses the work environment's browsing, image inspection, filesystem and code tools. It does not add a standalone hosted reconstruction service, an embedded MCP viewer, or a listing library. A reconstruction may ask for photographs or plans when the listing cannot be accessed. No separate API key is required by the package itself. Build the private installation archive with Python 3: ```sh python3 scripts/package_plugin.py ``` This validates the package and writes `dist/listing-to-3d-0.1.1.zip`. The archive contains one portable Agent Plugins package, with `plugin.json`, a synchronized compatibility manifest, an icon and `skills/listing-to-3d/`. The root skill remains the single maintained workflow source; packaging copies only explicitly allowed files. No property photos, project outputs, credentials, Git history or dependency folders are included. The ZIP is for private installation, not a prepared public-directory submission. ## Direct Codex skill Paste a listing URL into a new Codex chat, or invoke the skill explicitly: ```text $listing-to-3d https://example.com/property-listing ``` The Codex skill metadata allows automatic invocation. An explicit request such as “summarize this listing” takes precedence and does not start a reconstruction. ## Install Clone this repository into your personal Codex skills directory: ```sh git clone https://github.com/aek15/listing-to-3d.git ~/.codex/skills/listing-to-3d ``` If that folder already contains an installation, preserve any local edits before replacing or updating it. Start a new Codex chat after installation to make the skill available. ## What it does 1. Collects and inspects available photographs, floor plans, dimensions, panoramas and video. 2. Creates a photo-to-room map, shared metric geometry, camera estimates and uncertainty record **before implementing the scene**. 3. Builds real 3D geometry with the photographed layout and furnishings, walking controls, collision and an inspection camera. 4. Compares rendered viewpoints against every property photograph and checks the furnished circulation routes. 5. Delivers the runnable project, source records, saved renders and a validation report. If the listing, a listed photograph, or a usable floor plan remains inaccessible, the skill stops before scene implementation and identifies the files the user needs to supply. Video and panoramas are optional when the listing does not provide them. ## Requirements Use in a ChatGPT Work or Codex environment with filesystem access, code execution, image inspection and supported browser access. Scene dependencies are resolved for each project; Three.js is the suggested default, not a hard requirement. The optional contact-sheet helper requires Python 3 and Pillow. The skill does not itself include a standalone reconstruction engine or host generated scenes. Remote environments need their own supported preview mechanism; a remote localhost URL may not be reachable on your computer. ## Files - [SKILL.md](SKILL.md): entrypoint, automatic trigger and workflow. - [agents/openai.yaml](agents/openai.yaml): skill metadata and invocation policy. - [references/source-analysis.md](references/source-analysis.md): source collection, geometry interpretation and photo matching. - [references/scene-and-validation.md](references/scene-and-validation.md): scene construction, navigation and verification. - [scripts/contact_sheet.py](scripts/contact_sheet.py): labeled source inventories and reference/render comparison sheets. - [plugin/plugin.json](plugin/plugin.json): private plugin identity and presentation. - [scripts/package_plugin.py](scripts/package_plugin.py): portable archive builder and package checks. For helper usage: ```sh python scripts/contact_sheet.py --help python scripts/contact_sheet.py inventory --help python scripts/contact_sheet.py compare --help ``` ## Accuracy and scope Floor plans constrain structure; photographs provide appearance and spatial evidence. Measured dimensions, inferred dimensions and unresolved discrepancies must be distinguished. The result is a visual reconstruction, not a survey-grade or photogrammetric digital twin. Multi-floor properties require actual stair and level connectivity. This repository contains the reusable skill only. Property photographs, generated scenes and the apartment used to develop the workflow are not bundled. Rights to downloaded listing material remain with their respective owners. External publication of generated projects or source assets requires separate authorization.