Spreadsheet Import
Bring your inventory in from any spreadsheet. Upload an Excel or CSV file and DayZero's AI maps the columns and detects products, locations, and quantities across every sheet — then fuzzy-matches what you already have and hands you a full preview before a single record is written. Apply happens in one transaction, with partial-error reporting if a row can't be created.
Key capabilities
- Drag-and-drop upload of
.xlsx,.xls, or.csv - AI column mapping to standard inventory fields, each with a confidence score you can override
- Multi-sheet workbooks with recommended-sheet selection (latest month auto-picked for month-named tabs)
- Per-sheet data-start-row and exclude-rows controls to skip titles, subtotals, and notes
- Detected entities surfaced up front: locations (with type), categories, and products (with SKUs)
- Cross-sheet deduplication by normalized item name + SKU
- Fuzzy matching of imported items against existing variants (by SKU and name), with AI disambiguation for ambiguous cases
- Preview of exactly what will be created, with per-location and per-product create/skip choices
- Inline editing of on-hand quantities and per-row set/skip before applying
- One-transaction apply that creates locations, products, and variants and sets stock levels
- Partial-import error reporting when some rows succeed and others fail
How it works
A background AI pass maps columns and detects entities; you confirm mappings, review a preview with fuzzy-match results, and only then apply everything in a single transaction.
flowchart LR
upload["Upload .xlsx / .xls / .csv"] --> analyze["AI: map columns + detect entities"]
analyze --> review["Review mappings, start row, excludes"]
review --> preview["Preview: dedup + fuzzy match"]
preview --> apply["Apply in one transaction"]
apply --> done["Locations, products, variants, stock"]How to use it
- Click Import from Spreadsheet at the top of the Inventory page.
- On Upload, drag and drop your file (or browse) —
.xlsx,.xls, and.csvare supported. - AI analyzes the workbook in the background and maps columns (item name, SKU, quantity, cost, location, …).
- On Review Mappings, pick which sheets to include, adjust any column assignment, set the data-start row, and list rows to exclude.
- Click Generate Preview to see detected locations, products grouped by category, and inventory levels.
- In Preview, choose Create or Skip per location and per product, edit on-hand quantities, and set/skip individual level rows.
- Click Apply Import — the Done step reports how many locations, products, variants, and levels were created (and any errors).
Pro tips
- Confidence badges show the AI's certainty per mapping — green (90%+) high, yellow (70–89%) moderate, red (<70%) low. Override low-confidence mappings from the dropdown before previewing.
- Multi-sheet workbooks are first-class: the AI recommends which sheets to import and auto-selects the latest month when tabs are named by month.
- Use Data starts at row and Exclude rows to skip header banners, subtotal lines, and notes so they don't import as phantom items.
- The same item across several sheets is de-duplicated by normalized name + SKU, so multi-location workbooks won't create duplicate products.
- If your spreadsheet has formula cells, re-save it in Excel first so calculated values are cached — the parser reads cached values, not formulas.
- You have 30 minutes after upload to finish the import before the cached file expires; the analysis result itself is held for 10 minutes. Re-upload if either lapses.
In-depth guide
Three-phase flow
| Phase | What happens |
|---|---|
| Analyze | File cached; AI mapping + entity detection runs in the background; the status moves from pending to completed (or failed) |
| Preview | Confirmed mappings → dedup + fuzzy match → preview of entities to create/update |
| Apply | Creates locations, products, variants, and sets levels in a single transaction |
The uploaded file is cached for 30 minutes; the analysis result for 10 minutes. Applying after the file expires returns a "file expired" error — just re-upload.
Standard fields the AI maps to
| Field | Notes |
|---|---|
| Item name | Product/item name (required) |
| Quantity | Units on hand (required) |
| SKU | Stock keeping unit |
| Category | Finished Goods, Ingredients, Packaging, … |
| Location / warehouse | Where the item is stored |
| Bin | Bin/rack/shelf within a location |
| Unit cost / total cost | Cost per unit / extended cost |
| Unit of measure | EA, LB, G, KG, OZ, … |
| Available | Available quantity (may differ from on-hand) |
| Reorder point | When to reorder |
| Vendor / notes | Supplier and free-text notes |
The AI returns a confidence score per mapping and only maps the primary data table, ignoring secondary tables and summaries.
Detected entities
The analysis returns recommended sheets plus a set of detected entities:
- Locations — each with a guessed type
- Categories — the category groups found
- Products — with the sheets they appear in and any SKUs
The Review step shows running counts so you can sanity-check coverage before previewing.
Dedup & matching
On preview, rows are deduplicated and then matched against what you already have:
- Cross-sheet dedup — rows are grouped by a normalized key (lowercased, alphanumerics only) of item name + SKU, collapsing the same product seen at multiple locations into one product with multiple location levels.
- Fuzzy matching — imported items are matched against existing variants by SKU and name similarity.
- AI disambiguation — genuinely ambiguous items go to an AI pass that picks the best candidate or flags the row as a new product.
- Per-row result — each level row shows New or a match-confidence percentage.
Preview summary
| Summary field | Meaning |
|---|---|
| Locations to create | New locations detected |
| Products / variants to create | New products and their SKUs |
| Levels to set | Inventory quantities to write |
| Existing matched | Rows matched to existing products |
| Skipped rows | Empty, excluded, or name-less rows |
Applying
Apply sends all of your review decisions and writes them in a single transaction:
- Per-location and per-product — create / match / skip
- Per-variant — inherits the product decision
- Per-level — on-hand quantity plus set/skip
Everything runs in one transaction. On partial failure the Done step lists the rows that errored alongside what did get created, so you can fix and re-run just those.
Edge cases
- A row missing the required item name is skipped and counted under skipped rows.
- Variant-level match/skip currently inherits the parent product's decision, so matching a product avoids silently duplicating its variants.
- Formula-only cells without cached values can read blank — re-save the workbook to materialize values first.
Start free and import your inventory in minutes.