> ## Documentation Index
> Fetch the complete documentation index at: https://docs.seminode.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload Tools

> Upload, normalize, analyze and publish material data to nodes.

## Overview

Upload Tools enables you to upload, normalize, analyze and securely share material data including excess inventory, BOMs, shortages, and purchase requisitions with your customers and suppliers.

***

<div id="upload-supply-or-demand" />

## 1. Upload File

To upload your material availability (e.g. `Excess, Shortages, BOMs, Purchase Requisitions`):

1. Click **Create Listing** (on the [Listings <Icon icon="arrow-up-right" />](https://app.seminode.com/listings) page or Home) and open the **Upload list** tab.
2. Select **Supply or Demand** depending on the type of information you want to share (e.g., excess lists would be supply, shortages and cost savings would be demand).
3. Click or drop a file in `.xlsx` or `.csv` format — or switch to **Paste** mode to paste a table directly.

The mapping, cleaning, and publishing steps below happen on the upload review screens, which open after the upload starts.

<Tip>
  You don't have to finish an upload in one sitting. Expand the **Upload history** section on the **Upload list** tab — it carries a count badge, and a spinner while any upload is still processing — to jump back into an upload you left part-way through.
</Tip>

### Suggested Fields

Prepare your files using these suggested fields to improve mapping accuracy.

| Material No     | Manufacturer       | Unit Price | Qty    | Lead Time | Date Code |
| --------------- | ------------------ | ---------- | ------ | --------- | --------- |
| STM32F407VGT6   | STMicroelectronics | \$8.45     | 2,500  | 12 weeks  | 2023-15   |
| LM358DR         | Texas Instruments  | \$0.32     | 10,000 | 8 weeks   | 2024-08   |
| ESP32-WROOM-32D | Espressif          | \$2.15     | 1,200  | 16 weeks  | 2309      |

### Mandatory Fields

* **Material No**: In Electronics, Manufacturer Part Number (MPN) - the material number from the manufacturer
* **Manufacturer**: Material manufacturer name - use standard industry names, Seminode can also standardize
* **Unit Price**: Price per individual part - your target buying or selling price
* **Qty**: Total quantity you are looking to purchase or sell

### Optional Fields

* **Internal No**: Internal Part Number (IPN) - an internal part number used by you or a partner
* **Lead Time**: Time required to fulfill and ship the order once confirmed (for supply lists)
* **Required Date**: When you need the material delivered (for demand lists)
* **Date Code**: Manufacturing date code - format varies by manufacturer (YYWW, YYMMDD, etc.)
* **Currency**: Price currency (USD, EUR, GBP, etc.) - defaults to USD if not specified

## 2. Map Columns

After uploading your file, Seminode automatically detects the headers in your spreadsheet and displays them above the data table. Each column will show a dropdown menu where you can map your original headers to Seminode’s standardized fields.

**Why it matters:** Proper column mapping ensures that even if different teams or suppliers use different naming conventions (e.g., “Qty” vs. “Quantity,” “Mfr” vs. “Manufacturer”), Seminode will normalize the data so it can be cleansed, analyzed, and compared consistently.

<Warning>
  The required columns — **Material No**, **Manufacturer**, **Unit Price**, and **Qty** — must be mapped before you can clean the file. If any is left unmapped, **Clean** stops and tells you which ones are missing rather than opening the Clean Options modal.
</Warning>

### Dedup Keys

On each mapped column header, click the key <Icon icon="key-round" /> toggle to mark that column as a **dedup key**. Dedup keys define what makes a row unique — for example, **Material No**, or **Internal No** combined with **Site Code**.

When you **Clean**, rows that share the same values across all your dedup keys are collapsed into one. Deduplication is **off by default**: if you leave every key unset, every row is kept.

<Note>
  Deduplication is a tool for **supply** lists, where the same part appearing twice usually is the same part. On the **demand** side, Seminode deliberately does not collapse rows — two requirements for the same part are still two requirements, each with its own quantity, date, and owner, and merging them would understate what you need to buy.
</Note>

### Private Columns

Mark any column as **private** using the lock <Icon icon="lock" /> toggle on its header. Private columns are cleansed and kept with your data for internal matching, but are **never included when you publish to partners** — only public fields are distributed.

**Nothing is private by default.** The columns preselected on a new upload come from **[Settings → Listings → Default Private Columns <Icon icon="arrow-up-right" />](https://app.seminode.com/settings/listings)**, which is empty until someone configures it. Until then, every upload starts with no private columns marked.

Once you've marked the columns you want, click **Save as default** to persist that selection for your whole team. Every future upload will preselect those columns wherever they appear in the file — individual uploaders can still toggle them per upload.

<Warning>
  If a column you mark private is also used to match your [reference data](/tools/reference-data), a banner appears naming the reference tables it will match against. Marking a match column private keeps it out of what partners see, but it stays available for matching — check the banner so you know which internal data is being brought in.
</Warning>

See [Public & Private Fields](/public-private-fields) for the full model.

## 3. Clean & Normalize Data

The cleaning tool standardizes your material data — correcting inconsistent formatting, collapsing duplicates, and flagging invalid values.

Once your required columns are mapped, click **Clean** <Icon icon="sparkles" />. This opens the **Clean Options** modal, where you choose what happens to your file. Nothing in this list runs unless you turn it on.

| Option                       | What it does                                                                                              |
| ---------------------------- | --------------------------------------------------------------------------------------------------------- |
| **AI cleanse**               | Reads the file's structure with AI. Better on messy files; slower, and results vary.                      |
| **Normalize manufacturers**  | Standardizes manufacturer names — for example, `TI` to `Texas Instruments`.                               |
| **Convert to USD**           | Converts prices from another currency. Requires you to pick the source currency.                          |
| **Consolidate MPN variants** | Consolidates part-number and manufacturer variant columns into a single material number and manufacturer. |

[Deduplication](#dedup-keys) runs alongside these, using the dedup keys you set during mapping.

Choose your options and click **Clean**. When you're done, click **Cancel** to go back and adjust your mapping instead.

<Tip>
  Reach for **AI cleanse** when a file doesn't have a clean tabular shape — merged header rows, notes above the data, multiple sub-tables on one sheet. For a well-formed export from your ERP, the standard path is faster and more predictable.
</Tip>

### Reconciling Row Counts

Cleaning can change how many rows you end up with, in both directions, and knowing which direction is expected saves a lot of second-guessing.

* **Fewer rows** — deduplication collapsed rows sharing your dedup keys. The results header tells you how many duplicates were removed and from what starting count. A drop you can't account for is worth investigating.
* **More rows** — this is normal and usually correct. If your source file carries a list of approved manufacturers per part (multiple manufacturer and part-number columns on one line, or several manufacturers in a single cell), each part-manufacturer pair is split into its own row so it can be quoted independently. One line covering three approved manufacturers becomes three rows.

<Note>
  Reconcile your counts after cleansing, but investigate **drops**, not **growth**. Growth almost always means approved-manufacturer expansion did its job; an unexplained drop means your dedup keys are broader than you intended.
</Note>

## 4. Review & Analyze

After cleansing, your file displays in a structured table with standardized part numbers, manufacturers, and pricing.

* Suspicious or invalid part numbers are flagged in yellow automatically.
* **Verify against your original file** — Seminode preserves your original headers and values, so you can confirm every normalization (manufacturer, part number, currency) before anything is published.

### Review Manufacturers

Open **Manufacturers** from the <Icon icon="ellipsis" /> actions menu to see how each uploaded manufacturer string resolved against the manufacturer registry. Each row shows the **uploaded string** and what it **resolves to** — either a matched manufacturer or a **New manufacturer** badge.

Repoint any match that looks wrong, or reset it to create a new manufacturer instead. Changes save as you make them. This step is optional; publishing without it uses the matches shown.

### Edit Rows

Choose **Edit Rows** from the actions menu to correct values in place. While editing you can also mark rows for removal — a marked row turns red with an undo control, and nothing is applied until you click **Save Changes**. **Discard** abandons the whole batch of edits.

### Analyze

**Analyze** opens a **List Analysis** view with **Overview**, **By Manufacturer**, and **By Material** tabs:

* Total lines and total material value
* Top materials by value
* Top manufacturers by value
* An AI-written summary of what's in the list

Click **Export Report** to generate a shareable PDF of the analysis — useful for circulating a list summary to stakeholders who don't need the raw file.

## 5. Publish to Nodes

Only partners with permission to access the selected node will see the data, ensuring secure and targeted distribution. See [Nodes <Icon icon="arrow-up-right" />](/tools/nodes) for more information on node creation and permissions.

When the list is ready, click **Publish** <Icon icon="send" />:

1. **Choose where to publish your listings** — select one or more destination nodes. The nodes shown come from your [Network <Icon icon="arrow-up-right" />](/tools/network) posting connections.
2. Click **Publish** to confirm.

Large files are published in the background; you'll be notified when they're ready. Your listings then appear on the **[Listings](/tools/listings)** page, where you can share them with partners.

***

## Skipping the File: Pasting Parts Directly

For a handful of parts, a full upload is more ceremony than the job needs. The **New parts** tab of the Create Listing modal gives you a small grid — **MPN**, **Manufacturer**, **Qty**, **Target price** — that you can type or paste into, with no mapping and no cleaning step. Lines go straight to your [RFQ basket](/tools/listings#send-rfqs).

Pasting is the fast path. Copy a block of cells from a spreadsheet or an email and paste anywhere in the grid:

* **Each line becomes a row.** Blank lines are ignored, and pasted rows are added to whatever is already in the grid rather than replacing it.
* **Tab- or comma-separated cells fill the columns in order** — MPN, Manufacturer, Qty, Target price. A copied spreadsheet range works as-is.
* **A line with no separators becomes an MPN.** Paste a bare column of part numbers and you get one row each, ready for you to fill in the rest.
* **Values that aren't numbers are left blank** in the Qty and Target price columns rather than being forced in, so a stray `TBD` or `call` won't corrupt your quantities.
* **Anything unparseable lands in the MPN column, editable.** Nothing is silently dropped — rows needing attention are highlighted so you can fix them in place.

<Tip>
  Use the **Paste** box above the grid when you're pasting from an email or a chat message, where the formatting is unpredictable. It accepts one part per line and applies the same rules.
</Tip>
