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

> ## Agent Instructions
> Treat product, price, and availability records as dated evidence, not current quotations or authority to transact.
> Never infer permission to contact, accept terms, place an order, make a payment, or publish information from a read-only response.

# Find and map your source

> Choose a practical read method for spreadsheets, tables, databases, business applications and files.

You can start with the source you have. Your agent should use approved read access, inspect a small sample and identify which fields are authoritative. The routes below are implementation patterns to assess, not a list of supported Middleman connectors.

| Where your data lives                  | Start with                                             | What to check                                                                         |
| -------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------- |
| Google Sheets                          | A scoped Sheets reader or Apps Script job              | Workbook/tab, headers, stable IDs, calculated values, owner and refresh timing        |
| Excel in Microsoft 365                 | Excel tables through Power Automate or Microsoft Graph | Workbook/table, pagination, file locks, tenant permissions and available licensing    |
| Local Excel, LibreOffice or CSV        | A local file reader on an approved scheduled runner    | Exact path, who updates it, atomic export completion, encoding and workstation uptime |
| Airtable, Notion or another table tool | Its current API or an already approved connector       | Stable row IDs, linked records, computed fields and API access limits                 |
| SQL database or warehouse              | A read-only view and scheduled query                   | Company/row scope, a stable key, consistent snapshots, update and deletion semantics  |
| ERP, MRP, inventory, accounting or PIM | The vendor's supported API or scheduled report export  | Installed version/modules, permissions, stock meaning, units, currencies and paging   |
| E-commerce platform                    | Product and location-level inventory APIs              | Product variants, locations, available versus reserved stock and event delivery       |
| Shared folder, SFTP or object storage  | A manifest-driven file reader                          | Approved location, completed files, checksums, duplicate files and access expiry      |
| Legacy system with report emails       | A structured report generated from that system         | Fixed columns, source export time and an approved future intake address               |
| Custom software                        | Its HTTP API, database view or a small adapter         | Existing language, deployment environment, authentication and owner                   |
| Documents, PDFs or screenshots only    | A bounded extraction for a reviewed local draft        | Uncertain values, document dates, stable identity and how new versions will arrive    |

If the source cannot be read or exported repeatedly, prepare the draft and state the limitation. Do not promise a maintained feed from an inaccessible system. Browser automation may help with an approved export when no stable interface exists, but it needs a reliable runner and a recovery plan for login and UI changes.

## Spreadsheet setup

Keep one header row and a stable record ID column. Preserve identifiers as text, including leading zeros. Avoid relying on row numbers: sorting or inserting rows changes them. If no key exists, propose a durable source column or sidecar mapping; do not silently rewrite the workbook.

Read a named table or deliberate range. Define whether hidden/filtered rows are included. Resolve merged cells, totals, blank rows, duplicate headings, formulas with errors, locale-specific decimals and date/time formats. Preserve typed values and their meanings; a display string alone may hide precision or a unit.

A workbook edited by employees can be the authoritative source. Middleman should receive fresh readings automatically, so those employees maintain only that workbook. A one-time file can bootstrap mapping but does not establish recurring updates.

For Google Sheets, installable time-driven Apps Script triggers can run recurring work under their creator's account; timing may be approximate. Use an account whose ownership and access will continue. [Google trigger documentation](https://developers.google.com/apps-script/guides/triggers/installable).

For Excel, Power Automate can run Office Scripts and pass their results to other flow actions. Use the flow's supported HTTP action or connector for delivery; do not assume an Office Script can make external calls when run by Power Automate. Check table pagination and connector limits. [Office Scripts with Power Automate](https://learn.microsoft.com/en-us/office/dev/scripts/develop/power-automate-integration), [external-call restrictions](https://learn.microsoft.com/en-us/office/dev/scripts/testing/platform-limits#power-automate-specific-restrictions), [Excel connector](https://learn.microsoft.com/en-us/connectors/excelonlinebusiness/).

## Map meaning, not just column names

Record the source field, destination field, transformation, null behavior, evidence and refresh rule. A small illustrative map might look like this:

| Source column | Meaning                       | Mapping decision                                                           |
| ------------- | ----------------------------- | -------------------------------------------------------------------------- |
| `SKU`         | Supplier's listing reference  | Preserve as text; do not assume it is the manufacturer's part number       |
| `Qty`         | An unspecified stock quantity | Confirm whether sellable, on-hand, allocated or incoming before mapping    |
| `Price`       | Amount without a stated basis | Establish currency, sale unit, tax basis, audience and quantity tier       |
| `Updated`     | A source timestamp            | Confirm timezone and what event it records; unknown remains unknown        |
| `Hours free`  | Potential capacity            | Require a resource, unit and real start/end window                         |
| `Need by`     | Buyer delivery target         | Preserve as a buyer requirement; do not turn it into supplier availability |

Use the [supplier mapping guide](/suppliers/mapping) for its preview record schema. Buyer requirements use the [buyer workflow](/workflows/buyers); there is no public buyer-write schema in this release. Do not force demand into a supplier record.

When data spans several systems, pick an owner for each field and a verified join key. Do not add together mirrored inventory. Extract only the approved business fields, excluding unrelated people, credentials and customer-specific confidential terms. The supplier preview supports public-price context only.
