Skip to main content

v1.5.0 vs v1.7.0 — promote head-to-head (2026-06-18)

TL;DR

v1.7.0 is not a promote over the production default v1.5.0. On assembled coordinatescoord metricThe primary evaluation metric: distance from the resolved coordinate to the true address point. Measured at percentiles (p50, p90) and as 'within X meters.' Prevents the label-F1 trap where a model scores higher on token labels but geocodes worse. — the metric we ship — the two are flat on both US and FR. Measured with the production-faithful (anchor-on) harness, v1.7.0's per-tag F1 is a small us.localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. gain offset by us.streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels., fr.regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality., and 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. regressions — not a netneural networkA model made of layers of simple numeric units whose connection strengths (weights) are learned from data. The transformer encoder at Mailwoman's core is a neural network. improvement even at the labelcomponent tagOne of the 33 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. level. Recommendation: HOLD v1.5.0.

The baseline correction (the reason this re-eval happened)

The night-shift gate compared v1.7.0 against v1.5.1 — a falsified 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.-6.0 experiment that was never promoted. The production default is v1.5.0 (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.'-card 4.6.0; confirmed by md5 4674d3… == model-v150-step-40000-int8.onnx, the fr-order recovery 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.'). All deltas below are vs v1.5.0.

US — assembled coordinates (OpenAddresses, 2000 real gov points, full pipeline)

metricv1.5.0v1.7.0Δ
localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy.-match83.9%83.8%flat
regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality.-match99.9%99.9%flat
coord p503.3 km3.3 kmflat
coord p9010.7 km10.7 kmflat

The localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. work does not move the assembled US coordinate. Per-stateregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality., the misses are rural-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. 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. — SD 62.5%, VT 31.6% localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy.-match, identical for both 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.'.

Update (post-localadmin scoreTree fix, 9f986ec3): these localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy.-match figures were UNDER-COUNTED. The evalevalRunning the model against a held-out golden dataset and computing per-component F1, exact-match, calibration, and resolved-coordinate error.'s scoreTree selected only the bare locality placetypeplacetypeThe Who's On First hierarchical classification of places: planet → continent → country → region → county → locality → neighbourhood. The resolver uses placetype to rank candidates — an exact locality match outranks a county-level match. and discarded the localadmin (New England town) resolutions the 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. had landed correctly. Re-measured with the corrected metric (crediting the 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.'s localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy.boroughboroughAn administrative or historical division of a city — e.g. the five boroughs of New York City. May be postal, legal, or both, and complicates the locality hierarchy.∪localadmin group): v1.5.0 US localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy.-match 83.9% → 97.8% (SD 62.5→97.5, VT 31.6→92.6); regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality.-match and coords unchanged — the 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. was always landing the right place. The v1.5.0-vs-v1.7.0 comparison stays FLAT (the fix is parser-agnostic), so the promote verdict is unchanged — but the rural "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. gap" was mostly this scoring artifact, not real under-resolution.

Update 2 (situssitusThe physical site address of a property, as opposed to the owner's mailing address. Parcel records often carry both; the divergence is a real-world data-quality challenge. cascade, dd3628da): the coord figures above are the admin-centroid tiertierInternal versioning of which label classes the model emits. Tier 1 is the coarse components (country, region, locality, postcode); Tier 2 adds venue, street, house_number; Tier 3 (future) would add attention, po_box, and POI venue subtyping. Historically called 'Stage 1/2/3' before the runtime-pipeline naming made that ambiguous.oa-resolver-eval resolved to the resolved place's centroid and never wired the situssitusThe physical site address of a property, as opposed to the owner's mailing address. Parcel records often carry both; the divergence is a real-world data-quality challenge. cascade the geocoder actually ships (mailwoman/geocode-core.ts). Graded through the production cascade (--cascade, per-stateregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. 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. shardsshardA partial output file of the corpus build, written in Parquet format. The training pipeline streams shards row by row. over the #567 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.) the same 10k US rows resolve to p50 0.0 km, p90 1.0 km, 85.9% within 100 m (79.8% address_point / 8.2% interpolated / 12.0% admin). 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.'-independent — both versions run the same 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., so the promote verdict is unchanged — but it retires the "coordinate bottleneck" framing below: the shipped US coordinate is meter-grade, not admin-centroid. Full write-up: 2026-06-18-situs-cascade-eval.md.

FR — assembled coordinates (corrected)

An earlier run resolved under 10% of FR — an evalevalRunning the model against a held-out golden dataset and computing per-component F1, exact-match, calibration, and resolved-coordinate error.-flag error: oa-resolver-eval's --default-country defaults to US, and the FR sample carries no 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. tokentokenOne word or subword in the tokenized input. For the neural classifier, tokens come from SentencePiece (subword units); for the rule classifiers, tokens are whitespace- and punctuation-separated words., so every FR lookup was filtered to US places (landing the addresses in America, p50 ~7200 km). With --default-country FR the 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. handles FR fine (admin-global-priority.db holds 114k FR places). Re-run correctly:

FR (admin-centroid)v1.5.0v1.7.0Δ
localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy.-match76.3%76.3%flat
coord p501.5 km1.5 kmflat
coord p905.3 km5.3 kmflat

Flat. v1.7.0's FR work doesn't reach the FR coordinate any more than its US work reaches the US coordinate. (regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality.-match is 0% for both — the FR sample has region: null, so there's no gold regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. to match; expected, not a bug. Neural beats the PeliasPeliasAn open-source geocoder, Mailwoman's spiritual predecessor. port on FR too: 76.3% vs 67.7%.)

country-homograph (n=54, real homograph addresses)

tagv1.5.0v1.7.0Δ
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. F183.380.9−2.4
regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. F190.993.8+2.9
localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. F182.095.3+13.3

The −2.4 is one row, not a systematic regression (diagnosed 2026-06-18). The set is 54 rows, 27 with a gold 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.; v1.7.0's miss set is v1.5.0's plus exactly one: Avenida Arequipa, Lima 15046, Peru — v1.7.0 keeps 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 neighbourhood in the hierarchy./postcodepostcodeThe country-specific postal code (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one. identical but demotes the trailing "Peru" to O (zero reverse flips; on n=27, one row ≈ 3.7 F1 points). The trigger is a narrow conjunction — a strong US-localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. homographhomonymyOne surface, many referents: 'Georgia' is a US state in 'Atlanta, Georgia' and a country in 'Tbilisi, Georgia.' Handled by disambiguation, split across two stages — the parser resolves the tag from in-string context; the resolver late-binds the referent with geographic context. tokentokenOne word or subword in the tokenized input. For the neural classifier, tokens come from SentencePiece (subword units); for the rule classifiers, tokens are whitespace- and punctuation-separated words. ("Peru" = Peru IN/IL; "Lebanon" = Lebanon TN/NH, both literally US rows in this set) + trailing position + a preceding numeric postcodepostcodeThe country-specific postal code (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one.. Swap "Peru" for Chile/Bolivia/Ecuador/Colombia/Brazil/France/Jordan in the same frame and v1.7.0 is correct; drop the postcodepostcodeThe country-specific postal code (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one. and "Peru" is correct; the structurally-identical Jordan/Greece rows pass. It is NOT a general "trailing-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.-after-postcodepostcodeThe country-specific postal code (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one." weakness — v1.7.0 actually splits the no-postcodepostcodeThe country-specific postal code (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one. trailing-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. rows (Beirut/Lebanon, Naples/Italy) better than v1.5.0. So the HOLD rests on the flat assembled coordinatecoord metricThe primary evaluation metric: distance from the resolved coordinate to the true address point. Measured at percentiles (p50, p90) and as 'within X meters.' Prevents the label-F1 trap where a model scores higher on token labels but geocodes worse. vs v1.5.0, not on this one homographhomonymyOne surface, many referents: 'Georgia' is a US state in 'Atlanta, Georgia' and a country in 'Tbilisi, Georgia.' Handled by disambiguation, split across two stages — the parser resolves the tag from in-string context; the resolver late-binds the referent with geographic context. row. (The 83.3 the night called a "stale floor" is exactly v1.5.0's score.)

Golden per-tag F1 (production-faithful, anchor-on)

The first per-localelocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for.-f1 pass reported v1.7.0 catastrophically worse (us.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. 0, fr.house_number 58.5) — a harness bug: per-locale-f1.ts fed the 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.' anchor-off, which is out-of-distribution for these anchor-trained STAGE3 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.' and selectively collapses the admin tags (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./regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality./localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy./postcodepostcodeThe country-specific postal code (US ZIP, French code postal, etc.). Mailwoman handles postcode parsing entirely by rule classifier — a regex problem, not an ML one.) while morphology tags survive. Fixed — anchor feed is now default-on (commit d7b51748); both v1.5.0 and v1.7.0 crater identically anchor-off and recover identically anchor-on. The production-faithful numbers:

tagv1.5.0v1.7.0Δ
us.localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy.77.980.5+2.6
us.regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality.90.591.3+0.8
us.streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels.80.276.2−4.0
us.house_number98.397.3−1.0
us.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.68.468.9+0.5
fr.house_number99.399.3flat
fr.regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality.41.835.7−6.1
fr.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.62.763.0+0.3

The night's headline "fr.house_number +10.2" was an anchor-off measurement artifact — anchor-on, both v1.5.0 and v1.7.0 score 99.3. Measured correctly, v1.7.0 is a small us.localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. gain (+2.6) offset by us.streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. −4.0, fr.regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. −6.1, us.house_number −1.0, and 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. −2.4. It is not a netneural networkA model made of layers of simple numeric units whose connection strengths (weights) are learned from data. The transformer encoder at Mailwoman's core is a neural network. improvement even at the labelcomponent tagOne of the 33 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. level, and none of it reaches the assembled coordinatecoord metricThe primary evaluation metric: distance from the resolved coordinate to the true address point. Measured at percentiles (p50, p90) and as 'within X meters.' Prevents the label-F1 trap where a model scores higher on token labels but geocodes worse. (flat on both localeslocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for.).

Recommendation

  1. HOLD v1.5.0; do not promote v1.7.0. Coordinate-flat on both US and FR; a labelcomponent tagOne of the 33 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.-level wash whose only "regression" is a single homographhomonymyOne surface, many referents: 'Georgia' is a US state in 'Atlanta, Georgia' and a country in 'Tbilisi, Georgia.' Handled by disambiguation, split across two stages — the parser resolves the tag from in-string context; the resolver late-binds the referent with geographic context. row (Lima/Peru, see 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.-homographhomonymyOne surface, many referents: 'Georgia' is a US state in 'Atlanta, Georgia' and a country in 'Tbilisi, Georgia.' Handled by disambiguation, split across two stages — the parser resolves the tag from in-string context; the resolver late-binds the referent with geographic context. above). There is no version of this comparison that favors the swap.
  2. The shipped US coordinate is already meter-grade — the "bottleneck" was the evalevalRunning the model against a held-out golden dataset and computing per-component F1, exact-match, calibration, and resolved-coordinate error. grading the admin centroid (see Update 2 + the situssitusThe physical site address of a property, as opposed to the owner's mailing address. Parcel records often carry both; the divergence is a real-world data-quality challenge.-cascade doc). Through the production cascade, 88% of US addresses resolve at 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. tiertierInternal versioning of which label classes the model emits. Tier 1 is the coarse components (country, region, locality, postcode); Tier 2 adds venue, street, house_number; Tier 3 (future) would add attention, po_box, and POI venue subtyping. Historically called 'Stage 1/2/3' before the runtime-pipeline naming made that ambiguous. (p50 0.0 km, 85.9% within 100 m). The 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.' has caught up to its database on both localeslocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for.; the remaining coordinate gain is point-data 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. for the ~12% admin tail, not another retrain and not broader 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. breadth.
  3. v1.7.1 (recover streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels.) is not worth the GPU — v1.7.0 is already coord-flat with v1.5.0.
  4. Both tooling bugs are fixed/diagnosed: per-locale-f1.ts now feeds the anchor by default (d7b51748); FR coord evalsevalRunning the model against a held-out golden dataset and computing per-component F1, exact-match, calibration, and resolved-coordinate error. need --default-country FR (no code change).

A broader flag worth chasing

The per-localelocaleThe combination of language and country an address comes from. en-US and fr-FR are the locales Mailwoman ships weights for.-f1 anchor-off default means the night-shift's v1.7.0 per-tag numbers were measured anchor-off — and the headline fr.house_number gain vanished when re-measured anchor-on. Worth verifying whether (a) boundary-stress-gate.ts and (b) the earlier fr.house_number "recovery" work were also graded anchor-off, since an anchor-off metric on an anchor-trained 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.' is systematically misleading.

Raw evalevalRunning the model against a held-out golden dataset and computing per-component F1, exact-match, calibration, and resolved-coordinate error. outputs under /tmp/h2h/ (run 2026-06-18). 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.': model-v150-step-40000-int8.onnx (volume), out/v170/model.onnx + out/v170/model-int8.onnx (local).

The row-level read (2026-06-19) — what the −4.0 / −6.1 actually are

The per-tag deltas above were aggregate-only. Pulled to the row level (MAILWOMAN_DUMP_MISS_TAG, v1.5.0 vs v1.7.0 int8, anchor-on; dumps under /tmp/reg/*.miss), they are softer than the macro implied — and they explain mechanically why the assembled coordinatecoord metricThe primary evaluation metric: distance from the resolved coordinate to the true address point. Measured at percentiles (p50, p90) and as 'within X meters.' Prevents the label-F1 trap where a model scores higher on token labels but geocodes worse. stayed flat.

us.streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. −4.0 = 96 newly-missed rows, 34 fixes (netneural networkA model made of layers of simple numeric units whose connection strengths (weights) are learned from data. The transformer encoder at Mailwoman's core is a neural network. +62 on 2,660). The dominant class is not damage to streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. names — it is spanspanA contiguous range of characters or tokens in the input string, tagged with an address component type (street, locality, postcode, etc.). Parsed addresses are represented as collections of spans, possibly nested in a tree.-boundary clipping at the edges:

  • 51/96 (53%) trailing-directional-dropWoodland Ave NE → Woodland Ave, 3rd St NW → 3rd St, Hillcrest Dr NE → Hillcrest Dr. v1.7.0 cuts the spanspanA contiguous range of characters or tokens in the input string, tagged with an address component type (street, locality, postcode, etc.). Parsed addresses are represented as collections of spans, possibly nested in a tree. before the trailing NE/NW/SE/SW and re-tags it unit. This is exactly the #723 directional class, and the directional streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels.-key fold shipped 2026-06-19 recovers it at geocode (+1.8 address-point / +1.7 within-100m). The boundary-stress shardshardA partial output file of the corpus build, written in Parquet format. The training pipeline streams shards row by row. over-corrected spanspanA contiguous range of characters or tokens in the input string, tagged with an address component type (street, locality, postcode, etc.). Parsed addresses are represented as collections of spans, possibly nested in a tree. boundaries the other way.
  • 14 leading-ZIP-mangle05770 VT DELONG LN → DELONG, 58703 Lakeside St → St. Reordered synthetic golden rows (ZIP-first), not the streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels.-first order production geocodes.
  • 8 numbered-digit-eat74TH ST SE → 4TH ST SE, 158TH AVE NE → 8TH AVE. A real numbered-streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. boundary error, thin slice.
  • 20 other, incl. a few genuine misfires (Wyoming 82435, Rd 21 → "Wyoming") and 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. noise (Ski Tow Rd → "S ki Tow Rd").

fr.regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. −6.1 = only 17 rows, OOD-concentrated, zero coordinate impact. Every regression row is a bare Locality, Département FR row (Creuse/Lozère) where v1.7.0 drops the regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality. to null (Thauron, Creuse → ∅) or, on the accented Lozère, emits a broken trailing subword — Montredon, Lozère → "ère" (the 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.' splits the diacriticdiacriticAn accent mark that modifies a letter (é, ñ, ç). Address normalization must fold diacritics for matching without discarding the information a user typed., putting Loz in localitylocalityThe city / town / settlement component of an address: a populated place sitting between region and neighbourhood in the hierarchy. and ère in regionregionThe first-level administrative subdivision of a country — a US state, a French region, a province. The component between country and locality.; this is not v1.7.0-specific — v1.5.0 does it on 4 rows too; filed as its own bug). Inputs skew OOD (CJK localities, Uzbek). The FR coordinate sample is region: null, so this labelcomponent tagOne of the 33 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. slice never touches a coordinate (FR coord flat 1.5 km both).

Netneural networkA model made of layers of simple numeric units whose connection strengths (weights) are learned from data. The transformer encoder at Mailwoman's core is a neural network.: reading the rows makes the HOLD firmer as "a wash with no upside" and weaker as "v1.7.0 broke things." It is coordinate-flat because the one systematic streetstreetThe named linear feature along which house numbers are ordered. Decomposes into a name plus street affixes; one of the Tier 2 fine labels. regression is the directional class the #723 fold recovers, and the FR piece is a 17-row OOD diacriticdiacriticAn accent mark that modifies a letter (é, ñ, ç). Address normalization must fold diacritics for matching without discarding the information a user typed. slice. Verdict unchanged; the reason is "no gain," not "new damage."