product

Enterprise intake: CSV import, channel normalization, and German text auto-extraction

The pipeline now auto-extracts PLZ, city, reference numbers, and urgency markers from German customer emails. Channels are normalized from 50+ variants. CSV batch import and post-hoc enrichment endpoints round out enterprise intake.

By Howzer Team, Product

Why enterprise intake matters

Enterprise customers don't send feedback one message at a time. They export CSVs from CRM systems, forward batches of emails, and use dozens of channel labels that all mean the same thing. Until now, getting that data into the Howzer pipeline required manual cleanup. This release eliminates that friction with three new capabilities: CSV batch import, channel normalization, and German text metadata auto-extraction.

50+
Channel variants normalized
9
Canonical channels
200
German cities in PLZ gazetteer

CSV batch import

The new CSV import endpoint accepts files with automatic encoding and delimiter detection. Upload a file exported from any CRM or ticketing system, and the pipeline maps columns to feedback fields, validates the data, and queues each row for full analysis. No preprocessing scripts, no format requirements.

  • Auto-detect encoding: UTF-8, Latin-1, Windows-1252, and other common encodings handled transparently.
  • Delimiter detection: commas, semicolons, tabs, whatever your export uses.
  • Column mapping: flexible matching to feedback fields with clear error reporting for unmapped columns.
  • Batch analysis: each imported row receives the same comprehensive typed analysis as API-submitted feedback.

Channel normalization

Customer feedback arrives labeled as "E-Mail", "email", "Email Eingang", "Mailbox", "elektronische Post", and and that's just one channel. Across German and English variants, we found over 50 distinct labels in production data that map to just 9 canonical channels. The new FeedbackChannel enum normalizes all of them automatically.

  • EMAIL: e-mail, email, mail, elektronische post, mailbox, email eingang, and more.
  • PHONE: telefon, anruf, hotline, callcenter, telefonisch, phone, call.
  • CHAT: live-chat, webchat, online-chat, chat-widget, messenger.
  • SOCIAL: social media, facebook, twitter, instagram, bewertungsportal.
  • FORM: kontaktformular, webformular, online-formular, feedback-formular.
  • LETTER: brief, post, schreiben, fax, postalisch.
  • APP: app, mobile app, in-app, app-feedback.
  • SURVEY: umfrage, befragung, survey, nps, csat, ces.
  • OTHER: fallback for unrecognized channel labels, logged for future mapping.

German text metadata auto-extraction

The new text metadata extraction scans every German-language message and automatically extracts structured metadata that would otherwise require manual tagging: postal codes, cities, federal states, reference numbers, and urgency markers. This metadata flows through the entire pipeline and is available in the API response.

Metadata extraction flow
Raw textGerman messageExtractPLZ · city · refsGeo resolve200-city gazetteerUrgencymarker detectionEnrichedmetadata in signal
  • PLZ and city: 5-digit German postal codes matched against a gazetteer of 200 cities with coordinates for geographic analysis.
  • Bundesland: federal state resolved from PLZ for regional aggregation.
  • Reference numbers: case IDs, ticket numbers, contract references, and order numbers extracted via pattern matching.
  • Urgency markers: phrases like "dringend", "sofort", "umgehend", "schnellstmöglich" detected and flagged.

Post-hoc enrichment

Not all metadata is available at ingest time. The new enrichment endpoint lets you add provider IDs, case IDs, tags, and notes to already-analyzed feedback. This is useful when CRM data arrives after the initial analysis, or when an operator needs to annotate a signal manually.

New signal columns

The signal schema has been expanded to carry the new metadata through the pipeline:

  • case_id: external case or ticket reference for cross-system linking.
  • tags: freeform labels for operator-driven categorization.
  • notes: operator annotations attached after analysis.
  • priority_override: manual priority set via the enrichment endpoint.
  • extracted_references: structured references found by the text metadata extraction.
  • urgency_detected: boolean flag when urgency markers are present in the source text.
All new columns are optional and backward-compatible. Existing API integrations continue to work without changes. The new fields simply appear in the response when populated.