Keep addresses inside your network
A streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. address attached to a customer is personal data under the GDPR and personal information under the US state privacy statutes. Sending it to a third-party endpoint is a transfer, and a transfer is paperwork: a processor named in your record of processing activities, a data-processing agreement, a transfer mechanism when the endpoint sits in another jurisdiction, and a re-paper each time the provider's subprocessor list changes. The engineering is one HTTPS call. The review around it is the part that takes a quarter.
What changes
Nothing leaves the process. A parseaddress parsingThe process of decomposing a free-text postal address string into structured components — house number, street name, locality, region, postcode, and country — so a geocoder can resolve them to coordinates. or a geocode reads model weightsmodel weightsThe learned parameters of the neural classifier, shipped as ONNX files in the @mailwoman/neural-weights-* packages. Weights are locale-specific bundles that include the model, tokenizer, and a model-card.json metadata file. and gazetteergazetteerA geographical index that maps place names and postcodes to real-world coordinates. Mailwoman uses a custom-built Who's On First (WOF) SQLite database as its gazetteer — the 'atlas' half of the grammar/atlas architecture. files from local disk and returns, so there is no recipient to name and no flow to document. No published package carries telemetry, analytics, crash reporting, a version check or a usage ping, and installing Mailwoman runs no lifecycle scripts of ours.
Three boundaries make that statement checkable, and each one belongs in the review rather than in a
discovery halfway through it. RemoteResolver exists so you can split parser nodes
from a gazetteergazetteerA geographical index that maps place names and postcodes to real-world coordinates. Mailwoman uses a custom-built Who's On First (WOF) SQLite database as its gazetteer — the 'atlas' half of the grammar/atlas architecture. service inside your own network; it throws unless you construct it with an endpoint
URL, it is never a default, and it is not a service we operate. Building datasets downloads datasets,
from the US Census, Geofabrik, adresse.data.gouv.fr and the FCC — commands you run deliberately at
build time, separate from parsingaddress parsingThe process of decomposing a free-text postal address string into structured components — house number, street name, locality, region, postcode, and country — so a geocoder can resolve them to coordinates.. And the browser runtime fetches modelneural classifierThe machine learning model at the core of Mailwoman's parser — a transformer encoder (~30M parameters) trained from scratch to do BIO token classification over addresses. It learns the 'grammar' of address formats; the gazetteer supplies the 'atlas.' artifacts once from a URL
your own application supplies, with the query text staying in the page.
What you still carry
The residency question moves rather than disappearing. The addresses are now on disk you operate, under your retention schedule and your access controls, and that is what a reviewer will ask about instead. Security and compliance is written for that conversation: the three boundaries above with the packages they live in, the licensing position, the data provenance, and an SBOM published in both SPDX 2.3 and CycloneDX 1.5, generated from the published tarball rather than the working tree.
Next
- Your first ten minutes — install it and see a parseaddress parsingThe process of decomposing a free-text postal address string into structured components — house number, street name, locality, region, postcode, and country — so a geocoder can resolve them to coordinates. and a geocode complete with no endpoint configured.
- Pricing — flat per legal entity, with no per-address fee to reconcile.