Skip to main content

CLI

Scope

This page is the flag contract for the mailwoman command-line interface. Each table is generated from the command's own schema, and each description is that flag's help text verbatim, so this page and mailwoman <command> --help cannot disagree.

The CLI carries 151 commands. This page documents the 23 that a consumer of the published package runs. The rest build the datasets and train the modelsneural 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.' inside a checkout of the repository, and they are listed by group under Commands this page does not cover.

Three conventions apply to every table below.

  • A flag written --no-<name> is on by default. Pass it to turn the behavior off.
  • A default shown as environment-dependent resolves from the environment at run time. The flag's description names the variable it reads.
  • A value in angle brackets in a synopsis is required. A value in square brackets is optional.

Commands are shown here, not run. For executed invocations with their real output, follow the tutorials and how-to guides linked under See also.

Top-level commands

mailwoman autocomplete

Return ranked place-name completions for a prefix from the FST gazetteeradmin FSTA finite-state transducer encoding Who's On First admin place names (countries, regions, localities, postcodes) for fast gazetteer lookup and emission priors at inference time. Ships to the browser (~9 MB for 94K US admin places)..

mailwoman autocomplete [options] [prefix...]
ArgumentRequiredDescription
[prefix...]NoPrefix string to complete.
FlagTypeDefaultDescription
--limit [limit]number10Maximum number of completions.
--fst [fst]stringFSTFST (finite-state transducer). A compact automaton that reads an input sequence and emits an output sequence. Mailwoman encodes gazetteer names and street affixes as FSTs for fast prefix matching and prior injection without search overhead. binary; defaults from $MAILWOMAN_FST_BIN.
--jsonbooleanfalseEmit a JSON array instead of formattedinput modeThe Decision-A register switch: 'fragmented' (human-typed fragments — feeds the evidence channels) vs 'formatted' (complete records — runs the trained absence identity). Explicit on CLI/API; per-endpoint defaults (batch→formatted, autocomplete→fragmented); kind-derived otherwise. text.

mailwoman doctor

Check whether this machine can run mailwoman, and what each gap costs you. Runtime first (node, ONNXONNX (Open Neural Network Exchange). An open format for machine learning models that enables interoperability between training frameworks and inference runtimes. Mailwoman ships its trained model as an ONNX file so it can run in Node.js and the browser via onnxruntime.), then the 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., then the optional data layerslayerOne transformer block — attention plus a feed-forward network, with normalization and residual connections — applied to every position. Stacking layers lets the model build up richer representations; Mailwoman's encoder has 6. geocodinggeocodingThe process of converting an address into geographic coordinates (latitude and longitude). Mailwoman geocodes in a multi-tier cascade: exact address-point match → street interpolation → locality centroid. Each tier is progressively coarser but more widely available. needs — a missing layerlayerOne transformer block — attention plus a feed-forward network, with normalization and residual connections — applied to every position. Stacking layers lets the model build up richer representations; Mailwoman's encoder has 6. is reported, never fatal, and every failing line carries the one command that closes it.

mailwoman doctor [options]
FlagTypeDefaultDescription
--jsonbooleanfalseEmit the report as JSON instead of a checklist: { checks: [{ id, labelcomponent tagOne of the 25 labels in Mailwoman's address schema — street, locality, region, postcode, house_number, unit, po_box, country, venue, intersection, and others. Each parsed span carries exactly one component tag., status, detail, consequence?, fix?, core }], exitCode } — a superset of { id, status, detail, fix? } (labelcomponent tagOne of the 25 labels in Mailwoman's address schema — street, locality, region, postcode, house_number, unit, po_box, country, venue, intersection, and others. Each parsed span carries exactly one component tag. + core + consequence aid machine consumers). With --verbose, an environment array of { key, value, source } is added.
--verbosebooleanfalseAlso print every path and environment variable the checks resolved (data root, candidate.db, WOFWOF (Who's On First). An open-source gazetteer of places maintained by Mapzen/whosonfirst. Mailwoman builds a custom SQLite database from WOF GeoJSON repos, extended with postcode data, importance scores, and coincident-role relations. databases, weightsparameterA single learned number inside a model — one weight or bias. Mailwoman's encoder has roughly 30 million of them; training is the search for good values.) so a surprising verdict can be traced to the setting that caused it. No -v short form: the root program owns -v for --version.

mailwoman geocode

Turn an address into a coordinate: 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. it, then resolve the parts against the 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. and the rooftoprooftopGeocoding precision at the building or parcel level — coordinates within a few meters — the highest tier of the geocode cascade. Sourced from address-point and situs data./interpolationinterpolationA geocoding technique that estimates a coordinate along a street segment based on the house number range. Used as the middle tier of Mailwoman's geocode cascade when exact address-point data is unavailable. databases.

mailwoman geocode [options] [address...]
ArgumentRequiredDescription
[address...]NoA formattedinput modeThe Decision-A register switch: 'fragmented' (human-typed fragments — feeds the evidence channels) vs 'formatted' (complete records — runs the trained absence identity). Explicit on CLI/API; per-endpoint defaults (batch→formatted, autocomplete→fragmented); kind-derived otherwise. postal address to geocode. Omit when using --stdin.
FlagTypeDefaultDescription
--locale [locale]stringen-USLocalelocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for. tag matching a weightsparameterA single learned number inside a model — one weight or bias. Mailwoman's encoder has roughly 30 million of them; training is the search for good values. package, such as en-US or fr-FR.
--bias [bias]stringSoft proximity-bias points: lat,lon[:weight];lat,lon.
--default-country [default-country]stringISO-3166 resolverresolverThe component that converts parsed address components (locality, region, postcode) into coordinates by looking them up in the gazetteer. The resolver ranks candidates by name match, population, and proximity, and returns the best-matching place with its centroid or polygon. countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head. scope; pass none to disable it.
--country-scope [country-scope]auto | locale | noneautoApply the localelocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for.-inferred resolverresolverThe component that converts parsed address components (locality, region, postcode) into coordinates by looking them up in the gazetteer. The resolver ranks candidates by name match, population, and proximity, and returns the best-matching place with its centroid or polygon. scope automatically, always, or never.
--resolve-db [resolve-db]stringWOFWOF (Who's On First). An open-source gazetteer of places maintained by Mapzen/whosonfirst. Mailwoman builds a custom SQLite database from WOF GeoJSON repos, extended with postcode data, importance scores, and coincident-role relations. admin SQLite distribution.
--candidate-db [candidate-db]stringDemo-parity byte-range candidate database.
--data-root [data-root]stringRoot containing the address-point, interpolationinterpolationA geocoding technique that estimates a coordinate along a street segment based on the house number range. Used as the middle tier of Mailwoman's geocode cascade when exact address-point data is unavailable., WOFWOF (Who's On First). An open-source gazetteer of places maintained by Mapzen/whosonfirst. Mailwoman builds a custom SQLite database from WOF GeoJSON repos, extended with postcode data, importance scores, and coincident-role relations., POIpoint of interest (POI). A named place that is not strictly an address — landmark, transit stop, venue, amenity, or franchise. Mailwoman tags these as venue and resolves them through the gazetteer., and other data databases.
--address-points-db [address-points-db]stringExplicit address-point SQLite database, bypassing regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. selection.
--interpolation-db [interpolation-db]stringExplicit interpolationinterpolationA geocoding technique that estimates a coordinate along a street segment based on the house number range. Used as the middle tier of Mailwoman's geocode cascade when exact address-point data is unavailable. SQLite database, bypassing regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. selection.
--interp-calibration [interp-calibration]numberForce one interpolationinterpolationA geocoding technique that estimates a coordinate along a street segment based on the house number range. Used as the middle tier of Mailwoman's geocode cascade when exact address-point data is unavailable. uncertainty calibration multiplier.
--locale-country-priorbooleanfalseUse a withheld localelocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for. countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head. as a soft resolverresolverThe component that converts parsed address components (locality, region, postcode) into coordinates by looking them up in the gazetteer. The resolver ranks candidates by name match, population, and proximity, and returns the best-matching place with its centroid or polygon. ranking prior.
--no-gazetteer-priorbooleantrueFeed the gazetteer FSTadmin FSTA finite-state transducer encoding Who's On First admin place names (countries, regions, localities, postcodes) for fast gazetteer lookup and emission priors at inference time. Ships to the browser (~9 MB for 94K US admin places). prior to the 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.; --no-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.-prior disables it.
--no-place-countrybooleantrueUse the coarse-placercoarse-placerA lightweight int8 country classifier (~0.79 MB) that predicts which of a set of target countries an address belongs to, feeding a soft prior into resolver disambiguation. countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head. prior; --no-place-countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head. disables it.
--no-postcode-country-coherencebooleantrueAllow coherent postcodepostcodeThe country-specific postcode (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one./localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighborhood in the hierarchy. evidence to override a wrong countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head. scope.
--no-fork-entitybooleantrueProbe POI data for exact entities when a fork 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. does not resolve.
--postcode-shape-coherencebooleanfalseOpt into postcodepostcodeThe country-specific postcode (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one. shape exclusion/demotion.
--postcode-containment-coherencebooleanfalseOpt into postcodepostcodeThe country-specific postcode (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one.-centroid localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighborhood in the hierarchy. reranking.
--no-admin-containment-rerankbooleantrueRegionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality.-qualifier containment reranking of localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighborhood in the hierarchy. candidates; --no-admin-containment-rerank disables it.
--capital-tierbooleanBounded national-capital promotion on bare citylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighborhood in the hierarchy. names (default on); --no-capital-tier disables it.
--variant-alias-exemptionbooleanOwn-name variant aliases keep their holder's rank in cross-countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head. contests (default on); --no-variant-alias-exemption disables it.
--place-country-threshold [place-country-threshold]number0.9Coarse-placercoarse-placerA lightweight int8 country classifier (~0.79 MB) that predicts which of a set of target countries an address belongs to, feeding a soft prior into resolver disambiguation. abstention threshold.
--format [format]json | text | jsonldjsonOutput format.
--jsonbooleanfalseShorthand for --format json.
--textbooleanfalseShorthand for --format text.
--jsonldbooleanfalseShorthand for --format jsonld.
--debugbooleanfalseOpen the interactive 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./resolution/map view.
--debug-size [debug-size]string120x36Frame size for non-TTY debug rendering.
--stdinbooleanfalseRead one address per line and emit one JSON object per line using one warm session.
--timingbooleanfalseWrite startup, initialization, and per-address phasephaseA milestone in the implementation plan (Foundation, Corpus, Training, Integration, and forward-looking phases). Distinct from stage (runtime pipeline) and tier (model vocabulary). timings to stderr.
--tiles [tiles]stringPMTiles archive for the debug map pane.

mailwoman openapi

Emit the native @mailwoman/api OpenAPI document.

mailwoman openapi [options]
FlagTypeDefaultDescription
--flavor [flavor]3.1 | 3.03.1OpenAPI 3.1.0, or the compatibility-oriented 3.0.3 document.
--out [out]stringWrite to this path instead of stdout.

mailwoman parse

Labelcomponent tagOne of the 25 labels in Mailwoman's address schema — street, locality, region, postcode, house_number, unit, po_box, country, venue, intersection, and others. Each parsed span carries exactly one component tag. the parts of an address — house numberhouse numberThe numeric or alphanumeric identifier of a building on a street. Mailwoman's house_number component; its position relative to the street name flips between locales., streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels., localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighborhood in the hierarchy., postcodepostcodeThe country-specific postcode (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one. — without looking anything up: the output is your input, segmented and tagged. mailwoman geocode runs this same 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., then resolves those parts against the 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. to produce a coordinate.

mailwoman parse [options] <address...>
ArgumentRequiredDescription
<address...>YesFormattedinput modeThe Decision-A register switch: 'fragmented' (human-typed fragments — feeds the evidence channels) vs 'formatted' (complete records — runs the trained absence identity). Explicit on CLI/API; per-endpoint defaults (batch→formatted, autocomplete→fragmented); kind-derived otherwise. postal address
FlagTypeDefaultDescription
--debugbooleanfalseEnable verbose output
--input-mode [input-mode]fragmented | formattedInput registerinput modeThe Decision-A register switch: 'fragmented' (human-typed fragments — feeds the evidence channels) vs 'formatted' (complete records — runs the trained absence identity). Explicit on CLI/API; per-endpoint defaults (batch→formatted, autocomplete→fragmented); kind-derived otherwise.
--locale [locale]stringen-USBCP-47 localelocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for.
--default-country [default-country]stringResolverresolverThe component that converts parsed address components (locality, region, postcode) into coordinates by looking them up in the gazetteer. The resolver ranks candidates by name match, population, and proximity, and returns the best-matching place with its centroid or polygon. countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head. scope
--country-scope [country-scope]auto | locale | noneautoLocalelocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for. countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head.-scoping policy
--no-admin-coherencebooleantrueJoint admin consistency
--no-postcode-country-coherencebooleantruePostcodepostcodeThe country-specific postcode (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one. countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head. consistency
--postcode-shape-coherencebooleanfalsePostcodepostcodeThe country-specific postcode (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one. shape consistency
--postcode-containment-coherencebooleanfalsePostcodepostcodeThe country-specific postcode (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one. containment reranking
--neuralbooleanfalseUse neural-only path
--no-poibooleantrueEnable POI query detection
--download-weightsbooleanfalseDownload missing weightsparameterA single learned number inside a model — one weight or bias. Mailwoman's encoder has roughly 30 million of them; training is the search for good values.
--degradedbooleanfalseRun structural stagesstageOne of the dataflow stages in the runtime pipeline (normalize, locale gate, kind classify, phrase group, token classify, sequence correct, reconcile, resolve). Distinct from tier (model vocabulary) and phase (plan milestone). only
--format [format]json | tuple | xmljsonOutput projection
--model [model]stringExplicit 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.' path
--tokenizer [tokenizer]stringExplicit tokenizertokenizerThe component that converts a raw address string into a sequence of numeric token IDs the model can process. Mailwoman's tokenizer is a SentencePiece unigram model trained specifically on postal addresses. path
--policy [policy...]string[]Repeatable component policy override
--resolvebooleanfalseResolve parsed nodes against WOFWOF (Who's On First). An open-source gazetteer of places maintained by Mapzen/whosonfirst. Mailwoman builds a custom SQLite database from WOF GeoJSON repos, extended with postcode data, importance scores, and coincident-role relations.
--resolve-db [resolve-db]stringWOFWOF (Who's On First). An open-source gazetteer of places maintained by Mapzen/whosonfirst. Mailwoman builds a custom SQLite database from WOF GeoJSON repos, extended with postcode data, importance scores, and coincident-role relations. SQLite distribution
--no-street-evidence-rerankbooleantrueRerank streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. from atlas evidence
--candidates [candidates]numberAlternative resolutions per node
--benchmark [benchmark]numberBenchmark iteration count

mailwoman poi

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 execute a POIpoint of interest (POI). A named place that is not strictly an address — landmark, transit stop, venue, amenity, or franchise. Mailwoman tags these as venue and resolves them through the gazetteer.-shaped query

mailwoman poi [options] <query...>
ArgumentRequiredDescription
<query...>YesPOIpoint of interest (POI). A named place that is not strictly an address — landmark, transit stop, venue, amenity, or franchise. Mailwoman tags these as venue and resolves them through the gazetteer. query
FlagTypeDefaultDescription
--locale [locale]stringen-USBCP-47 localelocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for.
--db [db]stringSealed poipoint of interest (POI). A named place that is not strictly an address — landmark, transit stop, venue, amenity, or franchise. Mailwoman tags these as venue and resolves them through the gazetteer..db layerlayerOne transformer block — attention plus a feed-forward network, with normalization and residual connections — applied to every position. Stacking layers lets the model build up richer representations; Mailwoman's encoder has 6.
--overpassbooleanfalsePrint an OverpassQL export block
--jsonbooleanfalseEmit raw JSON
--resolve-db [resolve-db]stringWOFWOF (Who's On First). An open-source gazetteer of places maintained by Mapzen/whosonfirst. Mailwoman builds a custom SQLite database from WOF GeoJSON repos, extended with postcode data, importance scores, and coincident-role relations. database for anchor resolution
--candidate-db [candidate-db]stringCandidate database for anchor resolution

mailwoman reverse

Resolve a WGS-84 coordinate to its containing Who's On FirstWOF (Who's On First). An open-source gazetteer of places maintained by Mapzen/whosonfirst. Mailwoman builds a custom SQLite database from WOF GeoJSON repos, extended with postcode data, importance scores, and coincident-role relations. administrative hierarchy.

mailwoman reverse [options] <lat> <lon>
ArgumentRequiredDescription
<lat>YesLatitude in WGS-84 decimal degrees.
<lon>YesLongitude in WGS-84 decimal degrees.
FlagTypeDefaultDescription
--admin-db [admin-db]stringAdmin 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. SQLite DB carrying the place_bbox R*TreeR*TreeSQLite's spatial index of bounding boxes, enabling fast geographic range and nearest-neighbour queries in the resolver..
--polygons-db [polygons-db]stringOptional polygon sidecar; without it containment is approximate.
--format [format]json | textjsonMachine-readable JSON or a human-readable hierarchy.

mailwoman serve

Run the Mailwoman HTTP server

mailwoman serve [options]
FlagTypeDefaultDescription
--port [port]number3000Port to listen on
--host [host]string0.0.0.0Network interface to bind
--cpus [cpus]numberWorker processes. Default: every available core

mailwoman data

mailwoman data

Fetch the reference databases geocodinggeocodingThe process of converting an address into geographic coordinates (latitude and longitude). Mailwoman geocodes in a multi-tier cascade: exact address-point match → street interpolation → locality centroid. Each tier is progressively coarser but more widely available. needs — far too large to ship inside the npm package. data --list shows what exists, data pull &lt;bundle&gt; downloads one, data status reports what is already on disk, and mailwoman doctor names the one you are missing.

mailwoman data [options]
FlagTypeDefaultDescription
--listbooleanfalseList every downloadable bundleevidence bundleThe pair of retrieval-augmented input channels (street-type + locality-surface) that feed lexicon membership as soft per-token evidence alongside the text. Shipped in 6.7.0; trained natively from step 0 in the from-scratch base line.

mailwoman data coverage

What mailwoman parsesaddress 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 geocodes, per countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head..

mailwoman data coverage [options]
FlagTypeDefaultDescription
--countries [countries]stringComma-separated ISO alpha-2 codes. Omit for the countries that train.
--config [config]stringTrainingtrainingThe process of adjusting a model's parameters so its predictions match labeled examples, by repeatedly measuring error and nudging the weights to reduce it. Distinct from inference, when the trained model is run on new input. config whose country_weightsparameterA single learned number inside a model — one weight or bias. Mailwoman's encoder has roughly 30 million of them; training is the search for good values. decides admission
--refreshbooleanfalseRecount the corpuscorpusThe BIO-labeled training data used to train Mailwoman's neural classifier. Assembled from real sources (OpenAddresses, National Address Database) and synthetic shards (boundary stress, order variants, negative space). Managed by @mailwoman/corpus. instead of reading the cache (costs minutes)
--jsonbooleanfalseEmit the full report as JSON

mailwoman data inventory

Report every database in the data root and whether it records how it was built. layer_manifest is the contract (docs/engineering/reference/layerlayerOne transformer block — attention plus a feed-forward network, with normalization and residual connections — applied to every position. Stacking layers lets the model build up richer representations; Mailwoman's encoder has 6.-contract.mdx); this says how much of the root implements it.

mailwoman data inventory [options]
FlagTypeDefaultDescription
--data-root [data-root]stringOverride the data root
--depth [depth]stringDirectory levels to walk. Default 2
--allbooleanfalseList every artifact; the default shows only the summary
--jsonbooleanfalseEmit the report as JSON

mailwoman data pull

mailwoman data pull [options] <bundle...>
ArgumentRequiredDescription
<bundle...>YesBundleevidence bundleThe pair of retrieval-augmented input channels (street-type + locality-surface) that feed lexicon membership as soft per-token evidence alongside the text. Shipped in 6.7.0; trained natively from step 0 in the from-scratch base line. name(s) to pull: candidate, poipoint of interest (POI). A named place that is not strictly an address — landmark, transit stop, venue, amenity, or franchise. Mailwoman tags these as venue and resolves them through the gazetteer., fr, us
FlagTypeDefaultDescription
--dry-runbooleanfalsePrint the download plan; touch no network and write nothing
--only [only]stringOnly pull artifacts whose remote/local path or state slug contains this substring (e.g. --only nh)
--forcebooleanfalseRe-download even when a local copy already appears present
--data-root [data-root]stringOverride the data root for this pull (default: $MAILWOMAN_DATA_ROOT or the built-in default)
--host [host]stringMirror or private-registry base URL serving the same object keys as the public bucket (e.g. https://mirror.example/mailwoman/). Default: the public bucket.

mailwoman data status

Report data bundleevidence bundleThe pair of retrieval-augmented input channels (street-type + locality-surface) that feed lexicon membership as soft per-token evidence alongside the text. Shipped in 6.7.0; trained natively from step 0 in the from-scratch base line. status

mailwoman data status [options] [bundle...]
ArgumentRequiredDescription
[bundle...]NoBundleevidence bundleThe pair of retrieval-augmented input channels (street-type + locality-surface) that feed lexicon membership as soft per-token evidence alongside the text. Shipped in 6.7.0; trained natively from step 0 in the from-scratch base line. names. Default: candidate, poipoint of interest (POI). A named place that is not strictly an address — landmark, transit stop, venue, amenity, or franchise. Mailwoman tags these as venue and resolves them through the gazetteer., fr, us
FlagTypeDefaultDescription
--check-remotebooleanfalseCheck live artifact sizes
--data-root [data-root]stringOverride the data root

mailwoman skill

mailwoman skill install

Install the packaged Mailwoman skill.

mailwoman skill install [options]
FlagTypeDefaultDescription
--dest [dest]stringDestination project directory

mailwoman clients

mailwoman clients generate

Generate + verify the Python and Rust API clients from the emitted OpenAPI specs

mailwoman clients generate [options]
FlagTypeDefaultDescription
--out-dir [out-dir]stringOutput root. Default <repo>/clients-build (gitignored)
--skip-verifybooleanfalseSkip client build verification (development only)

mailwoman registry

mailwoman registry convert tx-hhsc

Convert the TX HHSC nursing-facilities TSV to OaRow JSONL.

mailwoman registry convert tx-hhsc [options]
FlagTypeDefaultDescription
--src [src]stringTX HHSC nursing-facilities TSV (default $MAILWOMAN_DATA_ROOT/record-matcher/sources/…)
--out [out]stringenvironment-dependentOutput OaRow JSONL path

mailwoman registry dedup-ceiling

Measure the irreducible over-merge rate for co-located providers.

mailwoman registry dedup-ceiling [options]
FlagTypeDefaultDescription
--sources [sources]stringRecord-matcher sources dir (default $MAILWOMAN_DATA_ROOT/record-matcher/sources)
--cap [cap]number50000Providers sampled from the registry
--state [state]stringTXState filter
--tau [tau]number0.7Org-name Jaccard collision threshold
--out-md [out-md]stringAlso write the markdown report here

mailwoman registry gold-set-sample

Sample hard co-located name collisions for adjudication.

mailwoman registry gold-set-sample [options]
FlagTypeDefaultDescription
--sources [sources]stringRecord-matcher sources dir (default $MAILWOMAN_DATA_ROOT/record-matcher/sources)
--cap [cap]number200000Providers sampled from the registry
--state [state]stringTXState filter
--tau [tau]number0.7Org-name Jaccard collision threshold
--n [n]number300Adjudication sample size (deterministic stride sample)
--out-jsonl [out-jsonl]stringWrite the sampled pairs here as JSONL

mailwoman registry matcher-scale

Measure matcher throughput and peak memory across corpuscorpusThe BIO-labeled training data used to train Mailwoman's neural classifier. Assembled from real sources (OpenAddresses, National Address Database) and synthetic shards (boundary stress, order variants, negative space). Managed by @mailwoman/corpus. sizes.

mailwoman registry matcher-scale [options]
FlagTypeDefaultDescription
--sizes [sizes]string10000,50000,100000,250000,500000Comma-separated record counts to sweep
--dup [dup]number3Average records per distinct place
--embooleanfalseFit the FS m/u with EMexpectation-maximizationAn iterative algorithm that estimates model parameters when some variables are unobserved. In Mailwoman's matcher, EM learns the Fellegi-Sunter m and u parameters from unlabeled data — no training labels needed. per size (slower)
--out-md [out-md]stringAlso write the markdown report here

mailwoman registry run

Resolve records into matched entities

mailwoman registry run [options] [csv...]
ArgumentRequiredDescription
[csv...]NoCSV input paths
FlagTypeDefaultDescription
--mapping [mapping]stringColumn mapping JSON or path
--infer-mappingbooleanfalseInfer mapping from headers
--sources [sources]stringMulti-source specification JSON or path
--out [out]stringGeoJSON output
--map-out [map-out]stringStandalone HTML map output
--no-train-embooleantrueTrain Fellegi-SunterFellegi-SunterA probabilistic record linkage model that computes match probability from agreement-level log-likelihood ratios: log₂(m/u) where m is the probability of agreement given a true match and u is the probability of agreement by chance. Mailwoman learns m and u label-free via expectation-maximization. parametersparameterA single learned number inside a model — one weight or bias. Mailwoman's encoder has roughly 30 million of them; training is the search for good values.
--threshold [threshold]number0Entity link threshold
--max-block-size [max-block-size]numberMaximum scanned block size
--reconcilebooleanfalseRun coveragecoverageThe fraction of a population or region for which a data source has real, non-placeholder entries — e.g. 47% rooftop coverage on Texas addresses. Distinct from accuracy on the rows that are present. reconciliation
--source [source]stringProvenance labelcomponent tagOne of the 25 labels in Mailwoman's address schema — street, locality, region, postcode, house_number, unit, po_box, country, venue, intersection, and others. Each parsed span carries exactly one component tag.
--locale [locale]stringen-USBCP-47 localelocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for.
--default-country [default-country]stringResolverresolverThe component that converts parsed address components (locality, region, postcode) into coordinates by looking them up in the gazetteer. The resolver ranks candidates by name match, population, and proximity, and returns the best-matching place with its centroid or polygon. countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head. scope
--no-place-countrybooleantrueEnable coarse countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head. prior
--resolve-db [resolve-db]stringWOFWOF (Who's On First). An open-source gazetteer of places maintained by Mapzen/whosonfirst. Mailwoman builds a custom SQLite database from WOF GeoJSON repos, extended with postcode data, importance scores, and coincident-role relations. admin database
--data-root [data-root]stringenvironment-dependentPer-state database root

mailwoman registry scorer-eval

Run a registry scorer evaluationevalRunning the model against a held-out golden dataset and computing per-component F1, exact-match, calibration, and resolved-coordinate error.

mailwoman registry scorer-eval [options] <kind>
ArgumentRequiredDescription
<kind>YesEvaluationevalRunning the model against a held-out golden dataset and computing per-component F1, exact-match, calibration, and resolved-coordinate error. kind
FlagTypeDefaultDescription
--sources [sources]stringRecord-matcher sources directory
--wof [wof]stringWOFWOF (Who's On First). An open-source gazetteer of places maintained by Mapzen/whosonfirst. Mailwoman builds a custom SQLite database from WOF GeoJSON repos, extended with postcode data, importance scores, and coincident-role relations. admin SQLite path
--data-root [data-root]stringPer-state database root
--out-md [out-md]stringMarkdown report path
--state [state]stringState filter
--npis [npis]numberNPIs sampled
--cap [cap]numberSample cap
--max [max]numberFacilities geocoded
--max-npis [max-npis]numberNPPES sample size
--tau [tau]numberCollision threshold
--seed [seed]numberPRNG seed
--seeds [seeds]numberSplits averaged
--split [split]numberTrain fraction
--train-state [train-state]stringTrainingtrainingThe process of adjusting a model's parameters so its predictions match labeled examples, by repeatedly measuring error and nudging the weights to reduce it. Distinct from inference, when the trained model is run on new input. state
--eval-state [eval-state]stringEvaluationevalRunning the model against a held-out golden dataset and computing per-component F1, exact-match, calibration, and resolved-coordinate error. state
--no-train-embooleantrueEMexpectation-maximizationAn iterative algorithm that estimates model parameters when some variables are unobserved. In Mailwoman's matcher, EM learns the Fellegi-Sunter m and u parameters from unlabeled data — no training labels needed.-train FS arms
--legacy-joinbooleanfalseUse legacy join
--candidate [candidate]stringGBTGBT (Gradient Boosted Trees). A non-linear machine learning model that combines many weak decision trees into a strong predictor. Mailwoman uses a GBT as an optional learned scorer for single-dataset dedup, improving F1 by 5–7 percentage points over the Fellegi-Sunter baseline. module
--dump-overmerges [dump-overmerges]stringAdjudication packet path
--h3-res [h3-res]numberH3H3Uber's hexagonal hierarchical geospatial indexing system. Mailwoman uses H3 cells at resolution 9 (~0.03 km²) for geo-first blocking in the matcher and for stable address primary keys in @mailwoman/address-id. resolution
--parallel-geocodebooleanfalseUse geocode worker pool
--geo-concurrency [geo-concurrency]numberGeocode concurrency
--model [model]stringModelneural 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.' path
--tokenizer [tokenizer]stringTokenizertokenizerThe component that converts a raw address string into a sequence of numeric token IDs the model can process. Mailwoman's tokenizer is a SentencePiece unigram model trained specifically on postal addresses. path
--model-card [model-card]stringModel cardmodel cardA JSON metadata file (model-card.json) shipped with each weights bundle. It declares the model version, lineage, label set, required inference channels (anchor, gazetteer), calibration data, and training provenance. path
--no-corpus-frequencybooleantrueBuild corpuscorpusThe BIO-labeled training data used to train Mailwoman's neural classifier. Assembled from real sources (OpenAddresses, National Address Database) and synthetic shards (boundary stress, order variants, negative space). Managed by @mailwoman/corpus. frequency table
--out-geojson [out-geojson]stringGeoJSON artifact path

mailwoman registry train-scorer

Train a learned registry scorer.

mailwoman registry train-scorer [options] <variant>
ArgumentRequiredDescription
<variant>YesModelneural 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.' variant
FlagTypeDefaultDescription
--sources [sources]stringRecord-matcher sources
--state [state]stringState filter
--npis [npis]numberNPIs sampled
--cap [cap]numberFacility cap
--cost [cost]numberNegative-class weightparameterA single learned number inside a model — one weight or bias. Mailwoman's encoder has roughly 30 million of them; training is the search for good values.
--precision-bar [precision-bar]numberHeld-out precisionprecisionOf the spans the model labeled as a given tag, the fraction it got right. High precision means few false positives. Paired with recall to compute F1. bar
--out [out]stringOutput module
--locale [locale]stringen-USWeightsparameterA single learned number inside a model — one weight or bias. Mailwoman's encoder has roughly 30 million of them; training is the search for good values. localelocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for.
--date [date]stringTrainingtrainingThe process of adjusting a model's parameters so its predictions match labeled examples, by repeatedly measuring error and nudging the weights to reduce it. Distinct from inference, when the trained model is run on new input. date
--wof [wof]stringWOFWOF (Who's On First). An open-source gazetteer of places maintained by Mapzen/whosonfirst. Mailwoman builds a custom SQLite database from WOF GeoJSON repos, extended with postcode data, importance scores, and coincident-role relations. database
--data-root [data-root]stringPer-state database root

mailwoman registry viz

Render record-matcher figures.

mailwoman registry viz [options] <figure>
ArgumentRequiredDescription
<figure>YesFigure id
FlagTypeDefaultDescription
--in [in]stringCross-dataset links GeoJSON
--cross-agency-onlybooleanfalseKeep only cross-agency entities
--lambda [lambda]numberIllustrative prior lambda
--state [state]stringState PostcodepostcodeThe country-specific postcode (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one.
--db [db]stringAddress-point database
--nad-mod [nad-mod]numberNADNAD (National Address Database). A US Department of Transportation dataset of structured address points, added to the training corpus as a major source of real US addresses. sampling modulus
--oa-mod [oa-mod]numberOpenAddressesOpenAddresses (OA). A global open aggregation of address points collected from many official sources. A primary source of component-supervised training data outside proprietary registries. sampling modulus
--cap [cap]numberPer-source marker cap
--out-html [out-html]stringOutput HTML path
--out-svg [out-svg]stringOutput SVG path

Exit codes

Every command shares one exit-code contract, owned by useCommandTask in packages/mailwoman/cli-kit.

CodeMeaningNext step
0The command completed. A command with a verdict returns 0 for a pass.None.
1The command threw, or its verdict is a failure. The message is on stderr.Read the message. Guidance-grade failures print one line and name the fix.

Two behaviors are worth stating because they are not failures.

  • mailwoman doctor exits 0 when the core checks pass, even when every optional data layerlayerOne transformer block — attention plus a feed-forward network, with normalization and residual connections — applied to every position. Stacking layers lets the model build up richer representations; Mailwoman's encoder has 6. is missing. 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. works without them.
  • mailwoman parse degrades to the structural stagesstageOne of the dataflow stages in the runtime pipeline (normalize, locale gate, kind classify, phrase group, token classify, sequence correct, reconcile, resolve). Distinct from tier (model vocabulary) and phase (plan milestone). when the neural weightsparameterA single learned number inside a model — one weight or bias. Mailwoman's encoder has roughly 30 million of them; training is the search for good values. are absent, prints a warning on stderr, and still exits 0. Standard output stays machine-parseable.

Commands this page does not cover

These groups build the data and the modelsneural 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.'. They read paths and databases that only exist inside a checkout of the repository, and they are documented in the repository rather than here. The two build tutorials under See also run the ones a self-hosting reader needs.

GroupCommandsPurpose
mailwoman corpus19Builds and audits the BIO-labeled trainingtrainingThe process of adjusting a model's parameters so its predictions match labeled examples, by repeatedly measuring error and nudging the weights to reduce it. Distinct from inference, when the trained model is run on new input. corpuscorpusThe BIO-labeled training data used to train Mailwoman's neural classifier. Assembled from real sources (OpenAddresses, National Address Database) and synthetic shards (boundary stress, order variants, negative space). Managed by @mailwoman/corpus..
mailwoman coverage1Builds the demo map's address-coveragecoverageThe fraction of a population or region for which a data source has real, non-placeholder entries — e.g. 47% rooftop coverage on Texas addresses. Distinct from accuracy on the rows that are present. overlay tiles.
mailwoman dev11Repository maintenance: source generation, fixture capture, lint passes.
mailwoman eval21Runs the evaluationsevalRunning the model against a held-out golden dataset and computing per-component F1, exact-match, calibration, and resolved-coordinate error. that decide whether a 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.' ships.
mailwoman filer2Record-linkage evaluationevalRunning the model against a held-out golden dataset and computing per-component F1, exact-match, calibration, and resolved-coordinate error. over regulatory filings.
mailwoman gazetteer52Builds every 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. artifact, including the candidate and admin databases.
mailwoman gnaf1Assembles the Australian G-NAFG-NAF (Geocoded National Address File). Australia's authoritative open address register (CC-BY-licensed), used as a training source for Australian addresses. address registerinput modeThe Decision-A register switch: 'fragmented' (human-typed fragments — feeds the evidence channels) vs 'formatted' (complete records — runs the trained absence identity). Explicit on CLI/API; per-endpoint defaults (batch→formatted, autocomplete→fragmented); kind-derived otherwise..
mailwoman placer5Trains and evaluates the coarse countrycountryThe top-level address component (an ISO country). Closed-vocabulary, so it is best handled by a deterministic matcher feeding a proposal rather than a retrained model head. placer.
mailwoman release1StagesstageOne of the dataflow stages in the runtime pipeline (normalize, locale gate, kind classify, phrase group, token classify, sequence correct, reconcile, resolve). Distinct from tier (model vocabulary) and phase (plan milestone). 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. for a release.
mailwoman situs5Builds the US rooftoprooftopGeocoding precision at the building or parcel level — coordinates within a few meters — the highest tier of the geocode cascade. Sourced from address-point and situs data. address-point and interpolationinterpolationA geocoding technique that estimates a coordinate along a street segment based on the house number range. Used as the middle tier of Mailwoman's geocode cascade when exact address-point data is unavailable. databases.
mailwoman tiger4Processes US Census TIGERTIGERThe US Census Topologically Integrated Geographic Encoding and Referencing database. Used as a corpus source for street-segment data./Line road and boundary data.
mailwoman tiles1Publishes vector tiles to the demo map's bucket.
mailwoman wof5Prepares and inspects the Who's On FirstWOF (Who's On First). An open-source gazetteer of places maintained by Mapzen/whosonfirst. Mailwoman builds a custom SQLite database from WOF GeoJSON repos, extended with postcode data, importance scores, and coincident-role relations. 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. source tree.

Rationale

This page is generated rather than written because a hand-maintained flag table is wrong the day a flag changes, and nothing catches it. The generator reads the same command specifications that build the binary, so a flag string here is the flag string --help prints. A test asserts the committed page against a fresh render, which turns a stale page into a failing build.

The scope split is deliberate. Publishing all 151 commands would bury the 23 that run against an installed package under trainingtrainingThe process of adjusting a model's parameters so its predictions match labeled examples, by repeatedly measuring error and nudging the weights to reduce it. Distinct from inference, when the trained model is run on new input. and dataset tooling that requires the repository, its data root, and hours of wall clock. The generator refuses to run if it meets a command group it has never been told about, so the boundary is a decision someone makes rather than an omission.

See also

  • Library API — the same pipelinestaged pipelineMailwoman's runtime architecture: a sequence of pure-function stages (normalize → query-shape → locale-gate → kind-classifier → phrase-grouper → classifier → decoder) connected by typed handoffs. Each stage is published as its own npm package., called from TypeScript.
  • HTTP APIs — the server surfaces, including mailwoman serve.
  • Runtime flags — the environment variables these commands read.
  • Understand a parsemailwoman parse, executed.
  • Geocode a CSVmailwoman data pull and mailwoman geocode, executed.
  • Build the US dataset — the gazetteer and situs groups, executed.