68 · Creative and media · Sales and marketing · live
Disclosed virtual staging
Eval results
Scored on a held-out or test splitRun 26 Sep 2026Eval write-up (decosa-api, access required)
- Planted edits caught (check)38 / 40test splitn = 40Window removed 10/10, wall recoloured 10/10, view replaced 10/10, crack or damage hidden 8/10.
- False alarms on clean stagings0 / 10test splitn = 10
- Planted edits caught, pixel check alone38 / 40test splitn = 40
- Planted edits caught, model alone29 / 40test splitn = 40
- Label read back after 1024 px and JPEG q7030 / 30test splitn = 30
- First render passes the check18 of 32 (56%)syntheticn = 328 rooms x 4 seeds; 0 of 4 on a tiled floor with a border
Dataset
8 CC0 empty-room photos (Poly Haven panoramas cut to views, Wikimedia Commons), split by room: 3 dev, 5 test. 17 clean stagings by this service labelled by eye; 62 planted Pillow edits (window removed, wall recoloured, view replaced, crack or damage hidden).
Caveats
- The same author wrote the planted edits and the checker and labelled the clean stagings; some edits are crude.
- Small: 10 clean and 40 planted test cases from 5 rooms; no images staged by other tools.
- Thresholds were tuned on dev in three rounds; the floor-pattern rule was set after seeing renders of a test room.
- One redrawn floor patch in a staging that looked otherwise clean passed the check (0 of 1).
- Not legal advice or a compliance determination.
Nightly smoke check
Loading the nightly status…
- Result
- pass
- Run
- 26 Sep 2026
- Latency, this run
- n/a
- p50 over passed runs
- 15 s
- Receipts
- 3
- Model calls
- n/a
- Tokens
- n/a
- Cost per run
- $0.002
Self-host verification
Verified on 26 Sep 2026: Fresh clone into a clean directory, docker build of the api image (31 s), the api on host networking with named volumes against the running local vLLM (Qwen3.8-27B with vision) and ComfyUI; then torn down.
The rehearsal bundle passed 13 of 13 (doctored view refused, honest staging labelled, read back, credentialed and verified, record tamper caught, power-lines refused); a Berlin staging rendered and passed in 12.8 s with attested receipts. When ComfyUI runs outside the api container, set DECOSA_STUDIO_COMFY_INPUT_DIR or delete its input copies yourself.
Rehearsal bundle: virtual-staging.zip (578 KB, 13 checks). Mock inputs plus the expected results, so you can prove your own setup works before any real data touches it.
Known limits
- Hosted verification ran on the pre-release server (decosa-api the pre-release branch on our server, gateway route); production gets this tool when the branch merges.
- Measured on 8 CC0 rooms with planted Pillow edits and our own renders, labelled by the building agent; images staged by other tools were not tested.
- The renderer redraws patterned floors (a tile border) around furniture; the check then refuses to label it, so such rooms often end not disclosed.
- Hairline cracks on patterned walls can be missed (2 of 3 on a marble-effect wall).
- The C2PA credential uses a development certificate; public validators show it as untrusted.
Models and licences
Standard tier. Licence posture: permissive (Apache, MIT or BSD).
- Maps the original's windows, doors, fixtures, damage and open floor; boxes each piece of furniture on the render; compares original and staged side by side; the typed judgment on instructions (typed-judgment, vertical 24)Qwen3.8-27B (NVIDIA NVFP4)Apache-2.0
- Draws furniture inside the zone (the open floor, with windows, doors, radiators, built-ins and damage cut out): one inpainted still per attempt, VACE control image plus maskWan2.2-VACE-Fun-A14BApache-2.0
- 4-step distillation LoRAs for the renderWan2.2-Lightning T2V 4-step LoRAsApache-2.0
- The zone, the furniture-only composite, the pixel check (added, removed, recoloured regions; floor pattern; shadows; what each touches), the verdict, the burned-in label and its OCR read-back, the C2PA credential, the public original page and the signed pair record (no model; CPU)decosa-api staging module (decosa_api/verticals/staging)AGPL-3.0-or-later
All quality evidence
Every sourced number on the tool’s Stack tab, by tier. Some are proxies from another task; their labels say so.
Does the check catch a doctored listing photo?
- Planted edits caught (held-out 40): 38 of 40 (both misses are hairline cracks on a marble-effect wall)
- Honest stagings flagged: 0 of 10
- Window removed / view replaced: 10 of 10 / 10 of 10
- Wall recoloured / crack or damage hidden: 10 of 10 / 8 of 10
- Label read back after resizing and JPEG q70: 30 of 30
Source: decosa-api docs/evals/virtual-staging.md, 2026-09-26
Lite · check only (any staging tool) (2)
- held-out test: planted edits caught (window removed, wall recoloured, view replaced, crack hidden) / false alarms on clean stagings: 38 of 40 / 0 of 10decosa-api docs/evals/virtual-staging.md, measured on our server 2026-09-26, gateway route
- burned-in label read back by OCR after resizing to 1024 px and JPEG quality 70: 30 of 30decosa-api docs/evals/virtual-staging.md, 2026-09-26
Standard · stage and check (hosted demo) (2)
- first render passes the check, 8 rooms x 4 seeds: 18 of 32 (0 of 4 on a tiled floor with a border, 0 of 4 on a cluttered room)decosa-api docs/evals/virtual-staging.md, 2026-09-26
- passing stagings that look furniture-only to a person (the building agent): 17 of 18decosa-api docs/evals/virtual-staging.md, 2026-09-26