Check forms for missing details, return them for correction. Every one is ready to run, and you can adjust it in plain language.
Keep incoming text exports usable and make rejected rows visible.
Your analysts get CSVs from new text exports in a shared folder. A companion report points to source lines that need fixing.
Record the row count or error for each incoming file.
Keep your PostgreSQL table current as CSV files arrive, with a row count or a clear reason when an import needs attention.