Inspiration

After a fire, a flood or an earthquake, the insurance company asks the family for a list of everything they owned: what it was, how old, and what it costs to replace. Most people never made one (59% in an NAIC survey). Six months after the 2025 Los Angeles fires, 57% of the survivors United Policyholders surveyed said their insurer wanted every single item listed and described. People write these lists from memory, in a motel, for weeks, and forget most of what they had.

The home isn't completely gone, though. It's in the birthday photos, the Christmas mornings and the first day of school. Every one of those pictures shows the room behind the people.

What it does

Drop in old photos. Roomprint rebuilds the home room by room and hands back the list the insurer asked for:

  • Every thing in every photo. NVIDIA Nemotron 3.5 Super VL looks past the people at the room and lists what's there, each with a box on the photo. That crop, and the date the photo was taken, become the line's evidence.
  • Counted once. The same sofa at a birthday and at Christmas is one sofa; the merge is decided by comparing the two crops, and the reason is shown.
  • Only contents. Kitchen cabinets, sinks and flooring go to a separate list, because policies pay for those under the building, not the contents.
  • A real price, with its source. Each item is priced at today's cost of a new like-kind replacement, found with Tavily at real stores. The line shows the store, the link and the sentence on the page the price came from. If no store price survives the checks, the line says "needs a price". Nothing is guessed.
  • Depreciation you can argue with. Actual cash value follows the rules State Farm prints on its own worksheet (effective age by condition, capped at 80%), with useful lives from United Policyholders; the maths is on each line.
  • In the insurer's columns. One click exports State Farm's worksheet (which is Xactware's XactContents import template, the system adjusters price in) or FEMA's flood contents worksheet, with a store link per row.
  • What no photo shows. Per room, the common things not yet on the list (pots and pans, clothes, tools).
  • The California clock. Since 2026, after a declared disaster and a total loss, the insurer must offer 60% of the contents limit with no list. Roomprint shows that number next to what the list adds.

How we built it

Propose, check, or leave it blank: models propose, plain Python checks every proposal, and anything that fails is shown as unresolved, never filled in.

A model proposes Code checks
an item and its box box inside the photo and big enough to show; not a person, pet, food, present or decoration; fixtures go to the building list
"same object as in that photo" only asked for plausible pairs (same room and kind, no clashing brand, never two sightings from one photo); merged only on a confident yes
a price the amount is in a sentence Tavily returned, next to the item's name; not used, refurbished, "was", "starting at" or per month; a "set of 4" becomes a unit price; second-hand marketplaces don't count; two or more stores → median, one → flagged
an age taken from the photo's own date, not from the model
the export totals recomputed; every line keeps its photo and its store link

Models (NVIDIA Nemotron on Nebius Token Factory): Nemotron 3.5 Super VL (reasoning off) reads each photo and returns items with boxes in about 7–20 seconds, and compares two crops side by side for duplicates. Nemotron 3 Super reads the shop sentences and picks the fair like-kind prices. Reading nine photos and pricing the list costs about five cents in model calls; a daily cap stops calls before they happen.

Tavily does the outward-looking half: one basic search per item, and an advanced search (more of each page) when the basic one returns fewer than six priced sentences. Results are cached, so the same "65-inch TV" isn't searched twice.

Stack: Python 3.12, FastAPI, Pillow, plain JSON; front end in plain HTML/CSS/JS. Deployed with Docker on Render.

Measured

What Result
Things a person can clearly see in the 9 sample photos (hand-made list of 72), found by Nemotron VL 71 / 72, in each of 2 runs
Room recognised 9 / 9
People, food or decorations put on the list 0
Sample family, full run 109 things; 69 priced at real stores (19 by two or more stores, 50 by one store and flagged), 40 left "needs a price" (35 with no surviving price, 5 where stores disagreed too much)
Cost of the full sample run 132 Nemotron calls, $0.05; 189 Tavily credits
One new photo, live about 35–60 seconds end to end

Challenges we ran into

  • Store pages hide prices. Extracting a retailer's product page usually returns everything except the price, which is drawn by JavaScript. What works is reading the price sentences search results already carry, and then being strict about which sentences count.
  • Prices lie in many ways. "Was $439.99", "starting at $395", "$37.50/mo", "Restored Dyson V8 $179.99", "set of 4 chairs $599". Each one would have put a wrong number on someone's claim; each is now a check with a test.
  • The same photo, different objects. Our generated sample photos don't always agree with each other (one shows a side-by-side fridge, the other a French-door one), and the duplicate check rightly kept them apart. We left it that way rather than force a merge.
  • Our own mistake. While tuning prices we used up a month of search credits in a day. We now check the remaining credits before any batch run, cache every search, and count credits per run.

Accomplishments we're proud of

  • Every line on the list can be checked by a stranger in ten seconds: the photo it came from, the store, the words.
  • The model is never the last word on a number.

What we learned

Vision models are already good enough to find things in ordinary family photos, boxes included. The hard part of an insurance list isn't seeing the TV; it's the price, the age and the proof, and those are better left to code that can show its working.

What's next

Video walkthroughs (a phone pan through a room), receipts and order-history emails as a second source of evidence, and a reviewer mode for public adjusters and nonprofits who help survivors with claims.

Try it

Open the live demo and press Rebuild a sample home: click any room in the house, then any line to see the photo it came from, the stores and the maths. Or press Try your own photos and add one or two photos of a room: about a minute later you get your own list, priced.

Live demo: https://roomprint.onrender.com · Code: https://github.com/mini4ai4/roomprint

Built With

Share this project:

Updates

Submission history