I used to skip rows and log a warning. Nobody reads warnings. Now every failed parse, unknown SKU, and count mismatch is a card in a queue with an assignee.
The queue is the product. The happy path is allowed to be quiet because the unhappy path is loud.
SLAs even for internal work
Inbound exceptions older than a day should look late. Aging is how you see that receiving is understaffed, not that Python is buggy.
Close with a reason
Fixed, duplicate, not our item, vendor error. Those tags become a report vendors cannot argue with.