---
name: home_inventory_cataloging
description: "Build an insurance-grade home inventory: capture possessions room by room with photos, serial numbers, receipts, and separate purchase and replacement values, store copies so the record survives the loss it documents, and produce the coverage gap list that flags totals and categories over the policy limits. Ships a room capture checklist, valuation and coverage rules, a worked example, and a tested CSV tool that audits an inventory, totals it by room or category, and checks it against policy limits. Use when starting, updating, or cleaning up a home inventory for homeowners or renters insurance, preparing claim documentation in advance, checking whether personal property coverage is enough, or deciding which valuables need scheduling."
---

# Home Inventory Cataloging

## Purpose

A home inventory is the list a claim is paid from. After a fire, theft, or storm, nobody reconstructs a house from memory well, and the items people forget are usually the many mid-value things in drawers, closets, and garages. This skill builds the inventory before a loss, in the form an adjuster can use: one row per item or honest group, a photo that shows the item where it lives, a serial number where one exists, a receipt or other proof where one exists, and two values kept separate, what was paid and what a replacement costs today.

The system ships in four parts. The workflow below runs the build. `references/capture-checklist.md` lists what to open and photograph in each room, including the spaces people skip. `references/valuation-and-coverage.md` covers actual cash value versus replacement cost, category limits in a policy, and scheduling high value items. `references/worked-example.md` shows a small finished inventory, its audit output, and its gap list. The tool in `bin/inventory_check.py` generates the template, audits a finished file, totals it, and checks it against limits copied from the policy.

This skill covers documentation and coverage arithmetic. It does not interpret a specific policy. Coverage questions that turn on policy wording go to the insurer or agent, and the gap list records the answer instead of guessing.

## Workflow

### 1. Read the policy before cataloging anything

- Pull three numbers from the declarations and schedule pages: the personal property limit, whether contents are valued at actual cash value or replacement cost, and every category limit the policy prints, for example for jewelry, firearms, silverware, or business property at home.
- Copy those limits into a `limits.csv` with two columns, `category` and `limit`, plus a row with category `TOTAL` for the personal property limit. Copy them from the policy in front of you. Limits vary by insurer and by policy, so no number from an article, a neighbor, or this skill belongs in that file.
- Note the deductible. Items or groups worth less than the deductible still belong in the inventory, because a large loss is claimed as a whole, but the deductible shapes which small losses are worth a claim at all.
- If the home has flood exposure, note separately that a standard homeowners or renters policy does not cover flood damage. That point comes from the NAIC consumer guide. The inventory still helps, the coverage source is different.

### 2. Set up the record

- Generate the template and keep the inventory as that one CSV, plus one photo folder per room and one receipts folder:

```bash
python3 bin/inventory_check.py template --out inventory.csv
```

- Keep the columns as shipped: `item_id, room, category, description, brand, model, serial_number, quantity, purchase_date, purchase_price, replacement_cost, photo_ref, evidence_ref, notes`.
- Use a stable `item_id` built from the room, such as `KIT-001`. Never renumber old rows. A renumbered inventory breaks the link between a row, its photos, and any earlier copy already stored off site.
- Set one naming rule for photos before starting: room folder, then item id, then a suffix for the serial plate shot, for example `photos/kitchen/KIT-001-serial.jpg`. Write the photo file names into `photo_ref`, separated by semicolons when a row has more than one.
- Decide the grouping threshold with the household and write it at the top of the checklist: which value or type gets its own row. A workable default is: own row for anything with a serial number, anything that would be painful to replace, and anything in a category the policy limits. Group the rest honestly by count, covered in step 4.

### 3. Capture room by room

- Work one room to completion before moving on, following `references/capture-checklist.md`. Start with a small contained area or with recent purchases if the whole house feels too large. An incomplete inventory beats none, and a finished room stays finished.
- For each room take photos in this order: a wide shot from the doorway, a shot of each wall, then close shots of individual items, opening closets, cabinets, and drawers as you go. Closed storage is where the forgotten value sits.
- For electronics and major appliances add a close shot of the model and serial plate. Plates usually sit on the back or bottom of equipment, or inside a door frame on kitchen and laundry appliances. Type the serial into the row, do not rely on reading it later from a photo.
- Record for each item: description written for a stranger, brand and model where there is one, where and roughly when it was bought, what was paid, and what a comparable new one costs today. Sources for the replacement figure go in `notes`, for example a retailer listing checked on a stated date.
- Add a slow narrated video walkthrough of each room at the end as a backup record. The video supports the rows, it does not replace them. A camera roll alone is not an inventory.
- Finish with the spaces people skip: garage, basement, attic, patio, shed, and any self-storage unit or other off-site location. Belongings kept off site still belong in the inventory.

### 4. Group the small stuff honestly

- Group low value bulk goods by category and count, the way the Insurance Information Institute brochure handles books, linens, or pots and pans: one row, a count, a group photo, and a per-unit replacement cost. Example shape: winter coats, quantity 6, replacement cost per coat, purchase price as the group total paid, with that stated in `notes`.
- Never group anything with a serial number, anything appraised, or anything in a policy-limited category. Those always get their own rows.
- Count, do not guess roundly. Open the drawer and count the items. A grouped row that says about 40 when the photo shows 18 weakens every other row near it.
- Clothing gets counted by general category, such as 5 pairs of jeans or 3 pairs of sneakers, with especially valuable pieces pulled out into their own rows.

### 5. Keep the three values separate

- `purchase_price` is what was paid, from a receipt where one exists, or a stated estimate where none does. Mark estimates in `notes`.
- `replacement_cost` is what a comparable new item costs today, per unit. This is the figure the totals and gap check run on.
- Do not invent an actual cash value column. Depreciation is applied by the insurer under the policy, using its own schedules. A home-made depreciation column creates a second, wrong number that follows the file into a claim. `references/valuation-and-coverage.md` explains the two valuation bases and what each one needs from the inventory.
- For jewelry, art, antiques, and collectibles above everyday value, attach an appraisal or a detailed receipt as `evidence_ref` and note the appraisal date. Values for these items move, so the gap check in step 7 is what decides whether they need scheduling, not a rule of thumb.

### 6. Audit before calling it done

```bash
python3 bin/inventory_check.py audit inventory.csv
python3 bin/inventory_check.py totals inventory.csv --by room
python3 bin/inventory_check.py totals inventory.csv --by category
```

- Fix every audit error: empty room, category, or description, bad quantity, missing or non-numeric replacement cost, and duplicate serial numbers. A duplicate serial usually means a copied row or the same item entered in two rooms.
- Work the warnings down, do not just read them: add the serial for categories that normally carry one, add the missing photo, and attach some form of evidence. Evidence can be a receipt, an order confirmation email saved as a file, a manual cover photo, or an appraisal. A photo of the item in place is ownership evidence too, which is why the wide and close shots matter.
- Re-run the audit after fixes. The finished file should show 0 errors, and every remaining warning should have a stated reason in that row `notes`.

### 7. Build the coverage gap list

```bash
python3 bin/inventory_check.py gaps inventory.csv --limits limits.csv
```

- Read the output as a decision list, in this order: total replacement value against the personal property limit, then each limited category against its recorded limit, then any category with no limit recorded, which means the policy pages still need checking.
- For every category over its limit, choose one of three outcomes and write the choice in the gap list: schedule the high value items individually with appraisals, raise the limit or add an endorsement, or accept the shortfall knowingly. Scheduling is the usual route for jewelry, art, fine instruments, and collectibles, because a category limit caps the whole group no matter how large the total limit is.
- Flag also the single-item pattern: one item whose replacement cost alone eats most of a category limit leaves the rest of that category effectively uncovered. Scheduling that one item fixes it.
- Send the gap list, not the whole inventory, to the agent or insurer when asking coverage questions. Keep the answer with the limits file, dated.

### 8. Store it so it survives the loss

- Apply the 3-2-1 pattern that CISA publishes for important files: 3 copies, on 2 different types of storage, with 1 copy off site. For a household that usually means the working file on a computer, a copy on an external drive or a second device, and a copy in cloud storage or with a trusted person outside the home.
- The inventory contains serial numbers and values for everything worth stealing, so protect it like a sensitive file: cloud copy in an account with a strong password and two factor sign-in, no public sharing links, and no copy left on a shared family computer without a password.
- Test the storage, do not assume it: open the off-site copy and one photo from it after every major update. A backup that has never been opened is a hope, not a copy.
- Update on a rhythm the household will actually keep: add a row when a significant purchase arrives, while the receipt and the box with the serial plate are still at hand, then do one full room-by-room review a year, and a fresh walkthrough video at the same time. Moves, renovations, and a new policy are also update triggers.

## Output Contract

A finished job delivers these parts:

1. `inventory.csv` in the shipped template columns, audit clean at 0 errors, with remaining warnings explained in row notes.
2. The photo set, organized by room folder, with each row `photo_ref` pointing at files that exist, including serial plate shots for electronics and major appliances.
3. The evidence set: receipts, order confirmations, and appraisals in one folder, each referenced from its row `evidence_ref`.
4. One narrated walkthrough video per room, or one whole-home video with room breaks stated in its file name.
5. `limits.csv` copied from the actual policy, and the gap list output showing total and category totals against those limits, with a dated decision for every gap: schedule, raise, or accept.
6. A storage note stating where the 3 copies live, which one is off site, and the date the off-site copy was last opened and verified.
7. An update entry: the date of the last full review and the trigger list for the next update.

For a claim, export the rows for the affected rooms plus their photos and evidence into one packet. That packet, built from the existing inventory, is the deliverable after a loss. Rebuilding a list after a loss from memory is the failure this skill exists to prevent.

## Operating Rules

- Never print a policy limit, sublimit, deductible, or premium figure as if it were standard. Every such number in a finished inventory comes from the policy in front of the reader, copied into `limits.csv`. Policies differ too much for defaults to be safe.
- Never state a replacement figure without a basis. Acceptable bases are a receipt, a current retailer listing, an appraisal, or a stated estimate labeled as an estimate in `notes`. An unlabeled guess presented as a checked price is a fabrication.
- Keep purchase price and replacement cost in separate columns and never average them or merge them into one value. The claim treats them differently and the gap check runs on replacement cost per unit times quantity.
- Do not compute depreciation or an actual cash value column. That calculation belongs to the insurer under the policy. Record age, condition notes, and purchase date well instead, since those are the inputs depreciation uses.
- Group only bulk low value goods. Serial numbered items, appraised items, and policy-limited categories always get individual rows, even when grouping would be faster.
- Treat the inventory file as sensitive. It is a shopping list for a thief if it leaks. Share the gap list for coverage questions, share the full file only with the insurer, agent, or a trusted person storing the off-site copy.
- Do not drop rows for items that were sold, donated, or thrown away without a note. Mark them in `notes` with the disposal date and keep or remove the row consistently, so two stored copies never disagree about whether an item exists.
- When the policy basis is unclear, record the question on the gap list and direct it to the agent or insurer. Do not settle actual cash value versus replacement cost, or whether an item needs scheduling, from general articles.
- Flood, earthquake, and other separately purchased coverages stay out of the gap arithmetic unless the reader holds that policy. Note the exposure, keep it off the homeowners totals, and do not present the inventory as proof that a separate peril is covered.
