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

  1. Click Import from Spreadsheet at the top of the Inventory page.
  2. On Upload, drag and drop your file (or browse) — .xlsx, .xls, and .csv are supported.
  3. AI analyzes the workbook in the background and maps columns (item name, SKU, quantity, cost, location, …).
  4. On Review Mappings, pick which sheets to include, adjust any column assignment, set the data-start row, and list rows to exclude.
  5. Click Generate Preview to see detected locations, products grouped by category, and inventory levels.
  6. In Preview, choose Create or Skip per location and per product, edit on-hand quantities, and set/skip individual level rows.
  7. 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.