Contents Inventory

How the Inventory tab on a Contents phase turns work-area photos into a priced inventory list, and when to run Reserve vs Final estimates.

The Inventory tab on a Contents phase is where you turn the photos uploaded to each work area into a priced inventory list. Pure Environmental jobs frequently have hundreds of damaged items per claim — the inventory tab is built around the assumption that you'll never want to type them all in by hand.

The big picture

Work-area photos  →  AI extracts items  →  You refine  →  Generate estimate
  1. A field tech uploads photos of damaged contents to each work area on the Work Areas tab.
  2. The AI reads every photo and produces one inventory row per identifiable item, with a best guess at the cleaning code, condition, and salvageability.
  3. You step through the list, fix anything the AI got wrong, mark non-salvageable items, and add notes for the adjuster.
  4. You generate either a Reserve estimate (early, fast) or a Final estimate (after pack-out, billable) — both run from the same inventory list.

Uploading photos to work areas

Photos always live on a work area, never on the phase directly. A work area is one bounded space within the loss — a master bedroom, a basement laundry, the contents of a single closet. Multiple work areas per phase is the norm.

Open the Work Areas sub-tab, pick a work area (or create one), and upload photos there. You can drag-and-drop a whole folder, or attach from a mobile capture session. The AI will start extracting as soon as photos finish uploading; you don't have to wait or trigger anything manually.

How AI extraction works

For each photo the AI tries to identify every distinct salvageable item in frame and produces an inventory row containing:

  • Description — what the item is, including any visible brand, material, and size cues
  • Quantity — how many of that item appear in the photo (it dedupes across multiple shots of the same room)
  • Condition — its assessment of damage severity
  • Salvageable / Non-salvageable — whether it's worth attempting to clean
  • Code — the Xactimate cleaning code the AI thinks applies, based on item type and condition
  • Source photo — a thumbnail link back to the photo the row came from

The AI is intentionally generous on extraction — better to surface an extra row you can delete than to miss something. Anything ambiguous gets a low-confidence guess that you can correct in the next step.

The "X failed · Retry" pill

If some photos couldn't be processed (corrupted upload, model timeout, network blip), they show up in a yellow pill at the top of the tab — 14 failed · Retry. Click it to re-run just the failed photos. Successful items aren't touched.

Refining the inventory

You'll spend most of your time on the inventory grid. A few mechanics worth knowing:

Click any thumbnail to open the detail view

The detail view is the fast lane for review. The source photo sits on the left, the row's editable fields on the right. From inside the detail view:

  • ← / → step to the previous / next row without leaving the detail view
  • Edit any field side-by-side with the source photo
  • Add adjuster-facing notes per item
  • Esc closes back to the grid

This is the workflow we expect most users to spend their time in for a real claim. The grid is for scanning and bulk operations; the detail view is for thinking about a specific item.

Mark non-salvageable

If an item can't be cleaned — soaked upholstery, contaminated bedding, anything in Cat 2/3 water for too long — mark it non-salvageable.

Non-salvageable items are:

  • Excluded from the cleaning estimate (you're not pricing labour to clean something that's going to the dumpster)
  • Listed on the Statement of Loss, which is the schedule of items the insured is claiming as a total loss

So the salvageable / non-salvageable toggle is doing real work — it routes the item to the right downstream output.

Codes auto-resolve at estimate time

The Code column on the grid is a hint. When you click Generate Reserve or Generate Final, the estimator re-resolves codes against the active Xactimate price book, your region, and the cleaning method appropriate to the item.

You only need to override the Code column when:

  • You disagree with the AI's call on what kind of item it is (e.g. AI tagged it as upholstered when it's actually leather, which has a different cleaning code)
  • You're applying a specific regional or carrier-mandated code that the auto-resolver doesn't know about

For the common case — AI got it right — leave the Code column alone and the estimator will pick the canonical one.

Reserve estimate vs Final estimate

The two Generate buttons run the same job at different stages. They both produce a full inventory-priced estimate; they differ in when you run them and what you've committed to before pressing the button.

Reserve Estimate — fast, from photos alone

Run this before pack-out, while the team is still on the loss site or has just left. The inputs are:

  • The photos the field tech uploaded
  • The AI-extracted inventory rows
  • Auto-resolved codes against the active price book

The output is a number the adjuster can set their reserve against. Speed beats precision here — the adjuster needs a defensible reserve inside the 5-day KPI, and they'd rather have a slightly-loose number tomorrow than a tight number in two weeks.

You can revise the Reserve estimate as many times as you want. Each revision is stored in the revision history.

Final Estimate — slow, after pack-out

Run this after the contents have been physically packed out and the inventory list is verified against what actually came back to the cleaning facility. This is the estimate you bill against and submit to the adjuster for sign-off.

Generating a Final Estimate creates a new revision — the Reserve doesn't disappear, it stays in the revision history so you can show the trajectory of the claim.

Why both?

The two buttons exist because the workflow forces two different conversations with the adjuster:

ReserveFinal
WhenBefore pack-outAfter pack-out
Source of truthPhotosPhysical inventory
AudienceAdjuster (setting reserve)Adjuster (signing off the bill)
Tolerance for errorHigh (±20%+ is fine)Low (line-item accurate)
RevisionsManyUsually one

Pressing the wrong button is harmless — the worst case is an extra entry in the revision history.

Next steps

Once an estimate has been generated, you'll work with it on the Estimate sub-tab. See Working with estimates for the full workflow on editing line items, applying templates, copy-pasting between phases, and sending the estimate to the client for sign-off.