# Automate SFTP CSV drops into Apache Iceberg tables

**The vendor CSV drop — daily files, shifting schemas, no contract —
becomes a governed feed: detected, deduplicated, loaded to Iceberg,
and watched for new arrivals under a human-approved plan.** This is
the file that breaks pipelines; here it's the base case.

## What makes vendor drops hard?
Encodings (UTF-16, Windows-1252), delimiter surprises, renamed
columns, re-sent files, and gzip/zip wrappers. Lakewright detects
encoding and dialect by evidence, expands archives transparently,
journals every file by content digest (re-sends are no-ops), and
surfaces schema drift instead of loading it silently.

## The steps
```bash
lakewright scan  sftp-drop/
lakewright approve plans/vendor_returns.plan.yaml
lakewright serve --plans plans --rest $CATALOG   # the ever-running watcher
```

## FAQ
**What happens when the vendor renames a column?** The new shape
doesn't match the approved plan — it's reported as drift and held for
review, not fumbled into the warehouse.
