## TL;DR
Fix this in the pricing spreadsheet import by acting on the exact message first: require an explicit rate status column in the import, reject any row whose status reads draft, and re-import the spreadsheet after the owner marks the final rates as final. Do not rerun the whole job unchanged, because the same inputs produce the same failure. Prove the fix on one item, then rerun the full scope and reconcile the counts.

```text
parser failed on pricing spreadsheet CSV agent imported draft rates as final rates
```

## Use this when
- The operation in the pricing spreadsheet import fails with this exact message: parser failed on pricing spreadsheet CSV agent imported draft rates as final rates.
- The same failure repeats on retry with unchanged inputs.
- A proposal, quote or send is blocked until this item completes.

## Not for this skill when
- The message is a permission or outage notice from the platform. Resolve that first, then return here if this error remains.
- The operation completes and you only disagree with its output. That is a quality review, not this failure.

## Steps
1. Reproduce the failure with the smallest scope that still shows it in the pricing spreadsheet import, and copy the full message plus the proposal, quote or account involved into the run notes. Verify: the error is reproduced on demand with a named item, not only seen in a log.
2. Apply the specific fix for this error: require an explicit rate status column in the import, reject any row whose status reads draft, and re-import the spreadsheet after the owner marks the final rates as final. Verify: the import log shows zero draft rows accepted and the quote uses only rows marked final.
3. Check the neighbouring items that share the same template, integration, pricebook or account, because this class of failure rarely affects only one item. Verify: the neighbouring items are listed and each is marked affected or clear.
4. Compare the result against the source system in the pricing spreadsheet import so a silent partial success is caught before sign off. Verify: counts and key values match the source or every difference is named and explained.
5. Rerun the original operation in the pricing spreadsheet import on the previously failing scope, watching for the same message rather than assuming success from a quiet log. Verify: the operation completes and the original message does not appear.
6. Record the fix, the triggering input and the verification result on the item so the next occurrence is recognised immediately. Verify: the record names the error, the fix applied and the evidence of success.

## Why it happens
the CSV carried draft and final rates in the same columns with the status held in a separate note, so the parser imported draft rates as if final.

## Variant phrasings

### parser failed on pricing spreadsheet CSV agent imported draft rates as final rates
The verbatim form searchers paste from the terminal or console. Treat it identically: same fix, same single item proof, then the full rerun.

### How to fix: parser failed on pricing spreadsheet CSV agent imported draft rates as final rates
The how-to phrasing for the same failure in the pricing spreadsheet import. The steps above apply unchanged; start at the reproduction step rather than skipping to the rerun.

### Troubleshooting this failure in the pricing spreadsheet import
The symptom-first phrasing used when the console hides the full message. Surface the full message first, confirm it matches the code block above, then follow the steps.

Compatibility: the pricing spreadsheet import at current versions, plus the platform API or console the query names; no extra tooling beyond the source system access needed to verify counts.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_J4qHHKszcIGIIY6rD9h4yg
