DEV Community

casanovalabs
casanovalabs

Posted on Originally published at casanovalabs.com

I Benchmarked 5 AI Virtual Staging Tools at the Same Volume — Currency and Retries Break Every Comparison

Comparing the pricing pages of five AI tools looks like a fifteen-minute spreadsheet job. It is not, and the reasons it is not are the interesting part, because they are the same reasons any usage-priced SaaS is hard to compare from the outside. We build CasaNova Labs, an AI studio for real estate photo and video editing, so I priced our four closest competitors against ourselves at one fixed volume and wrote down every step. Two things broke the naive comparison. Here they are, with the small amount of code it takes to handle them.

Step one: pick one volume, or you are comparing nothing

Every tool publishes tiers, and every tier has a different per-unit price. Quote "from $0.23 per image" against "from $0.29 per image" and you have compared two different tiers at two different commitment levels — a meaningless number. The only honest comparison fixes the volume first and prices every tool for exactly that.

I used 100 staged photos a month: ten listings, ten photos each, the panier of a small brokerage. Then each tool's grid becomes a function from photos to monthly cost. The wrinkle is that a "credit" is not an "image". Roomagen spends two credits per delivered image, so its 700-credit tier is a 350-image tier. Normalize that before anything else:

// cheapest tier that covers `photos`, else extrapolate at the top marginal rate
function tierCost(photos, tiers, marginalBeyondTop) {
  for (const t of tiers) if (t.covers >= photos) return t.price;
  const top = tiers[tiers.length - 1];
  return top.price + (photos - top.covers) * marginalBeyondTop;
}

// Roomagen: 2 credits/image, so covers = credits / 2
tierCost(100, [{covers: 30, price: 12}, {covers: 100, price: 29}, {covers: 350, price: 79}], 79/350);
// => 29  ->  $0.29 per image at 100 images
Enter fullscreen mode Exit fullscreen mode

Do that for all five and the per-image spread at 100 photos is wider than any single sticker suggests: from about €0.29 to $4.50. But look at that sentence again — it mixes a euro and a dollar, which is the second problem.

Step two: you cannot average across currencies

Two of the five tools publish in euros, three in dollars. The tempting move is to convert everything to one currency and take a median. Don't. An exchange rate changes daily, so a "median per-image price" would silently bake in a EUR/USD assumption that is stale by the time anyone reads it, and it would present a made-up precision the source data never had.

The honest handling is boring: keep the currencies separate, show each amount in its own, and say so out loud. The euro-priced tools land at €0.29–€0.99; the dollar-priced ones at $0.29–$4.50. No single "average price of virtual staging" exists in this dataset, and claiming one would be the most citable and most wrong line in the whole thing.

Step three: the cost no pricing page prints

Here is the line that actually separates the billing models, and no vendor puts it on the page. On a credit-based tool, a credit is spent on the attempt, not the result. A render you throw away for a warped window or a sofa that reads as fake still drew down the balance. So the real unit cost is per usable image, not per generated image:

const perUsable = (perImage, attemptsPerKeeper) => perImage * attemptsPerKeeper;
perUsable(0.29, 2); // => 0.58  at two tries per room
Enter fullscreen mode Exit fullscreen mode

At two attempts per keeper — not unusual for generative staging — a grid advertised at $0.29 is $0.58 in practice, and the gap widens with the rejection rate. A flat per-property plan does not move with that rate; a credit grid does. Any comparison that stops at the sticker price is comparing the best case of one model against the worst-hidden case of another.

What survived

After fixing the volume, refusing the cross-currency average, and adding the retry term back in, the useful finding was not "X is cheapest". It was structural: three of the five tools bill by the credit, one bills a flat plan per property, one bills per photo on demand with human editors. Those are three different things, and a buyer scanning three sticker prices is comparing units that behave differently the moment the month starts running.

The full sourced table, with every rate, date checked, and source link, is the State of Virtual Staging Pricing 2026 report. If you want to run the same model on your own volume instead of my 100-photo assumption, the cost calculator is the interactive version of exactly this code. And the wider buyer's-guide view of the category — features, not just price — is in best virtual staging software.

Disclosure: I work on CasaNova Labs, which is one of the five tools and which bills per property. That is why I know where the retry cost hides — and the report shows our own per-photo number is not the lowest in the table, because pretending otherwise would make the whole benchmark worthless.

Top comments (0)