German Excel/CRM exports often use semicolons instead of commas. The parser now uses csv.Sniffer to auto-detect the delimiter, fixing the issue where semicolon-delimited CSVs produced 0 rows. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Parse CRM CSV exports (UTF-8-BOM, comma-delimited) with: - Pipe-delimited Hauptkontakt field (Nachname|Vorname|Geburtsdatum|KVNR) - German date formats (DD.MM.YYYY, DD.MM.YY, HH:MM) - Modul-to-Fallgruppe mapping - Graceful handling of missing KVNR, bad dates, empty fields, spam rows - 19 tests (synthetic + all 4 real CSV files) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>