Mailwoman
An address parser and geocoder that runs where your code runs.
Mailwoman turns free-text postal addresses into labeled components and coordinates. It runs inside your own process, in Node or in a browser tab, with no server call and no address leaving your infrastructure.
Publisher
Mailwoman is developed, published and maintained by Nirrius, LLC, doing business as Sister Software. The trade name "Mailwoman" has been in continuous public use by the company since the first npm release on 30 October 2024.
| Product site | mailwoman.ai |
| npm package | mailwoman, published under the sister.software organization |
| Source code | github.com/sister-software/mailwoman |
| Browser demo | earth.mailwoman.ai |
| License | AGPL-3.0, with a commercial license available |
| Copyright | © Nirrius, LLC (Sister Software) |
| Contact | [email protected] |
What it does
- Parses. A neural sequence labeler assigns each part of an address a component: country, region, locality, postcode, street, house number, unit, venue and others, each with a confidence score.
- Resolves. A gazetteer resolver matches the labeled components to Who's On First place identifiers and WGS-84 coordinates from a locally stored SQLite database.
- Records provenance. Each resolved point carries the open dataset it came from, such as the United States National Address Database or OpenAddresses.
- Formats. Address layouts for every country are data, read from national conventions and from the UPU S42 Standardized Address Format Descriptions where a country publishes one.
- Replaces hosted geocoders. Nominatim-, Photon- and libpostal-compatible servers let a migration be a hostname change.
How it works
- One small shared model. About 40 MB, int8-quantized ONNX. SentencePiece tokenizes; BIO tags are decoded with transition masking and Viterbi.
- Reference data as evidence. Postal registries, gazetteers and postcode indexes inform the model as soft evidence instead of overriding it.
- Locale overlays. Each new locale ships as an overlay of a few hundred kilobytes on top of the shared model.
- Runs on the client. The same weights run in Node.js and in the browser (WebGPU or WASM), alongside a SQLite-WASM gazetteer.
Who it is for
Postal operators, logistics and delivery companies, and any team that receives addresses typed by people and needs them sorted, matched or geocoded without sending customer data to a third-party API.
Where to start
Talks
- Truth or Consequences, New Mexico: Approximately Correct — FOSS4G:UK 2026, Leeds.
- Paris, Texas: Technically Correct — State of the Map France 2025.
All posts about Mailwoman are tagged mailwoman.