Skip to content
decosa

68 · Creative and media · Sales and marketing · live

Disclosed virtual staging

Open the toolJSON

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

How we measure · All tools