# TaskMint supplier CSV checks

Private evaluation workflow. No payment, network requests, hosted schedule or automatic store update.

## Start with a real sample

Use `/supplier-check` to read a CSV locally, inspect its columns and map the product ID and price fields. Choose the price's number locale and currency explicitly. Run the check, inspect each issue, then save the check settings if they are correct for that supplier.

The settings file contains only the mapping and format options. It does not include product rows or the file name. File contents are held in browser memory; no automatic browser storage or server upload is used. Clearing the file removes the current source and result from the page. Downloaded files must be managed separately.

## Repeat the check in your own automation

Download `taskmint-csv.mjs` and your `taskmint-supplier-settings.json` from the checker. Put both beside the script below. Use Node 22+ with full Intl support. No package install is required.

```js
// save as check-supplier.mjs
import {readFile} from 'node:fs/promises';
import {decodeCsv, runCatalogCsv} from './taskmint-csv.mjs';

try {
  if (!process.argv[2]) throw new Error('Pass the path to a supplier CSV.');
  const settings = JSON.parse(await readFile('./taskmint-supplier-settings.json', 'utf8'));
  const text = decodeCsv(await readFile(process.argv[2]));
  const result = runCatalogCsv(text, settings);
  console.log(JSON.stringify(result, null, 2));
  // A completed diagnostic can contain issues. Check both fields.
  process.exitCode = result.status === 'resolved' && result.valid === true ? 0 : 2;
} catch (error) {
  console.error(JSON.stringify({status:'input_error', message:error.message}));
  process.exitCode = 1;
}
```

Run:

```sh
node check-supplier.mjs supplier.csv
```

Exit 0 means these identity and price-format checks found no issues. It is not approval to import into a store. Exit 2 means the diagnostic found issues; hold the next step for review. Exit 1 means input, settings, file access or runtime failure; also hold the next step. Never configure a downstream import to proceed merely because a report exists or `status` is `resolved`.

Existing JSON callers can keep using `taskmint-local.mjs` and the published service contract. The CSV adapter builds the same `catalog_audit` request; it is an input convenience, not an additional paid service.

## Exact limits and interpretation

- UTF-8, at most 24,000 bytes, 50 product records plus a header, 2–20 columns and 1,000 characters per cell. The existing mapped service payload limit also applies.
- Explicit comma, semicolon or tab separator. Double-quoted cells can contain separators, line breaks and doubled quotes. CRLF, LF and CR record endings are supported.
- A single leading UTF-8 BOM is accepted. Invalid UTF-8, duplicate/blank/unsafe headers, malformed quoting, mismatched row widths and unsupported control characters are rejected.
- Rows are never silently truncated or skipped. Do not split larger files blindly: duplicate identities can cross batch boundaries. Larger-feed processing requires a whole-feed design before selling it.
- Every cell remains a string, including leading zeroes, whitespace and formula-looking text. Formulas are not evaluated. Only the two selected columns enter the diagnostic.
- Product row 1 is the first data record, excluding the header; it may span multiple physical lines in the file.
- Exact identities only: no fuzzy matching, price correctness verification, currency exchange, automatic fixes, store-specific import certification or live connector.
- Local runs and the downloaded toolkit are free. Hosted independent agent authentication, x402, subscriptions and managed execution remain unimplemented.

Quoting conventions were checked against [RFC 4180](https://www.rfc-editor.org/rfc/rfc4180). This adapter deliberately uses the narrower limits above and does not claim universal spreadsheet compatibility.

## How this could support revenue

The free checker demonstrates the outcome on an authorised customer sample. A potential paid offer would cover a specified integration, repeat execution, exception delivery and bounded support once those capabilities exist. Reuse one agreed mapping per supplier to reduce repeated setup and support effort. Test willingness to pay, delivery time and repeat frequency before promising a subscription. Do not charge for the same local check twice or imply that the free toolkit requires payment.

The Growth workbench's US$499 setup + US$99/month scenario remains a pricing hypothesis, not a launched tariff. Fees, usage allowances and labour must fit the actual delivery arrangement. Bot-native authorised purchasing remains the intended paid path.
