Project · in development

IntakeKit: local-first parsing for freight and logistics intake messages

A private-by-default intake parser for WhatsApp, SMS, and email messages that extracts structured fields without sending data off an organization’s own machine.

What it is designed to do

Incoming messages are usually written for people, not databases. A request may mention a name, location, time window, contact number, and the actual need in one loosely structured sentence. IntakeKit is being written to turn that message into a reviewable record while keeping the raw content local.

It uses a small model running on the organization’s own machine to identify likely fields. A regex fallback handles predictable patterns such as phone numbers, dates, and reference IDs when a model is unavailable or uncertain. The point is not to remove human judgment; it is to reduce retyping and make handoffs more consistent.

Why local-first document parsing matters

For many small organizations, an intake message can contain contact details, addresses, or sensitive context. A local-first design keeps the extraction loop on the organization’s own machine: the message arrives, a local parser proposes fields, and a person can correct or approve them. Data does not have to be sent to a hosted language-model service simply to turn a paragraph into columns.

A pragmatic extraction ladder

  1. Normalize the message. Preserve the original text, but standardize whitespace, line breaks, and common abbreviations for parsing.
  2. Try deterministic patterns first. Regex is fast and easy to audit for phone numbers, emails, dates, and known identifiers.
  3. Use a small local model for ambiguous fields. Ask for a constrained JSON shape, then validate every returned value.
  4. Keep provenance. Store the extracted value alongside the source span or a confidence signal so a reviewer can check it.
  5. Escalate uncertainty. Missing or conflicting fields should remain visibly unresolved, not silently guessed.
Scope note: IntakeKit is a personal project in development. It is not a product of Yusuf’s former work at Hwy Haul, and it is not presented as deployed or adopted.

For a deeper treatment of the parsing problem, read the guide to parsing unstructured freight messages into structured load data. For the privacy rationale, read the guide to running small language models locally.