Showcase source
Full showcase JSON
This page exposes the curated showcase data used by the website examples. It includes supported countries, selected edge cases, hostile input behavior, and out-of-scope examples.
showcase.json
{
"_generated": "2026-07-03",
"_verified": "2026-08-25",
"_source": "Captured live from addresstokenizer-core-sample (GET /parse) and addresstokenizer-pro-sample (GET /enrich, /enrich/xml, /enrich/lines, /demo/edge-cases) running the v0.2.0 unified API. Raw HTTP captures: docs/showcase/raw/. Do not hand-edit output blocks — regenerate. Re-verified 2026-08-03: /demo, /demo/edge-cases, all outOfScope captures, and a pacs008 XML sample were re-run against freshly built jars and diffed byte-for-byte against docs/showcase/raw/ — no drift. Re-verified 2026-08-19: full live regeneration after the country-field-confidence geographic triangulation change (commit aef954a), the deduped country TraceLog fix (242309a), and the trailing self-referential country name fix (3ae4a68) — every scenario, edge case, and out-of-scope capture was re-run end to end against freshly built jars. Re-verified 2026-08-23: full live regeneration after plan 030 (/enrich response restructured — flat fields moved under general, iso20022Result promoted to top level, fieldConfidences changed to FieldConfidenceEntry{confidence,penalty}) and plan 032 (shared /parse endpoint, TokenType.CORRECTED_CITY deleted in favor of tokens carrying value+original in place). core blocks are the real {raw,tokens,diagnostics} /parse response; pro/proParseLines blocks are the real {raw,tokens,diagnostics,general,iso20022Result} /enrich response — every scenario, edge case, and out-of-scope capture was re-run end to end against freshly built jars, no hand-edited output blocks. Re-verified 2026-08-23 (same day, follow-up): removed tokens from the /enrich (and /enrich/lines, /demo, /demo/edge-cases) ParsedAddress JSON output — those endpoints now return {raw, diagnostics, general, iso20022Result}, dropping the raw tokens list from the enriched view (tokens remain fully available on the separate /parse contract). pro/proParseLines blocks below reflect this — no tokens key present. Re-verified 2026-08-25: added 2 new edgeCases after fixing 3 AU parser/enrichment bugs (docs/plans/036-038) — \"No-comma suburb + multi-locality postcode confidence (AU)\" and \"Floor.unit suite numbering with a dot (AU)\" — captured live from a freshly built addresstokenizer-pro-sample; no other entries touched. Re-verified 2026-08-25 (same day, follow-up): added a 3rd edgeCase, \"Native-script Chinese address (HK)\" (input=\"香港灣仔堅尼地道105號雅佳大廈12樓25室\") captured live from a freshly built addresstokenizer-pro-sample; exercises CountryDetector's CJK-character branch and HkChineseAddressHealer.translateToEnglish() end to end; no other entries touched. Re-verified 2026-08-25 (same day, follow-up): AuAddressParser now combines stacked unit-like prefixes (\"Suite 14.02, Level 14, ...\") into a single UNIT value instead of letting the second prefix leak into STREET_NAME (docs/plans/038). All 11 edgeCases fully regenerated in one pass from a single freshly built addresstokenizer-pro-sample for internal consistency, not just the one changed entry; no scenarios/coreEdgeCases/outOfScope entries touched. Re-verified 2026-08-25 (same day, follow-up): added a new per-scenario \"proParse\" block -- Pro's actual /parse endpoint response ({raw, tokens, diagnostics}, same shape as \"core\" but with full diagnostics -- fieldConfidences and traceLogs populated) -- captured live from a freshly built addresstokenizer-pro-sample for all 8 scenarios. User specifically wanted the website's side-by-side Core/Pro comparison to use the same endpoint (/parse) on both sides rather than comparing Core's /parse against Pro's /enrich, which have different wire shapes. \"pro\" (the /enrich capture) is unchanged and kept for a separate enrichment-focused section. Re-verified 2026-08-25 (same day, follow-up): fixed AddressEnrichmentService.assemble() using the rawAddress parameter (original, un-normalised caller input) instead of parsed.raw() (SWIFT-normalised) when building the final ParsedAddress -- Pro's GET /parse and GET /enrich both disagreed with Core's GET /parse on the \"raw\" field for the identical shared contract. All \"proParse\", \"pro\", and edgeCases blocks re-captured live from a freshly built addresstokenizer-pro-sample; \"core\" blocks unaffected (unchanged) since the bug was Pro-only. Separately noted, not fixed: AddressTokenizer.parseLines()'s PO-Box-detected branch still uses the un-normalised joined raw lines instead of parsed.raw() -- a pre-existing, Core-level inconsistency (affects both tiers equally for PO-Box addresses), out of scope for this fix. Re-verified 2026-08-25 (same day, second follow-up): fixed a separate, Core-level bug in AddressTokenizer.parseLines() -- the PO-Box-detected branch used the un-normalised rawJoined text (or, in an intermediate attempt, parsed.raw() after PO-Box stripping, which silently dropped the PO Box portion from raw) instead of the fully SWIFT-normalised pre-strip text. Now captures work (the normalised value from norm.toSwiftAsciiLines()) before the PO Box regex strips it out, so raw includes the normalised PO Box text and matches the non-PO-Box code path. Affected both Core and Pro identically (parseLines() lives in Core). New regression test: CoreOnlyWiringTest.parseLines_poBoxAddress_rawIsSwiftNormalized. The \"PO Box - FINTRAC non-compliant (CA)\" edgeCases entry raw re-captured live from a freshly built addresstokenizer-pro-sample; all other fields (diagnostics, general, iso20022Result) unchanged since the bug was raw-only. Reverted 2026-08-25 (same day, third follow-up) per explicit user decision: Pro's raw field should preserve the caller's ORIGINAL un-normalised input (e.g. \"3700, rue Saint-Denis, ...\", mixed case), not SWIFT-normalised uppercase -- this is a deliberate divergence from Core's own /parse raw (which stays SWIFT-normalised). Reverted AddressEnrichmentService.assemble() back to using the rawAddress constructor parameter instead of parsed.raw(). RawFieldNormalizationIT rewritten to assert the original-preserved invariant. All proParse/pro blocks (8 scenarios, 11 edgeCases) re-captured live from a freshly rebuilt addresstokenizer-pro-sample to reflect original-cased raw values again. Core's own PO-Box normalisation fix (parseLines() using normalizedFull) is unaffected and still stands -- it only affects Core's /parse raw for PO Box addresses, not Pro.",
"scenarios": [
{
"key": "us",
"scenario": "United States — civic address, New York",
"description": "House number precedes street, ZIP at end, 2-letter state. Gazetteer confirms NEW YORK via OurAirports municipality (P2); sub-division resolved to US-NY.",
"input": "350 Fifth Avenue, New York, NY 10118",
"core": {
"raw": "350 FIFTH AVENUE, NEW YORK, NY 10118",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "10118"
},
{
"type": "STATE_CODE",
"value": "NY"
},
{
"type": "CITY",
"value": "NEW YORK"
},
{
"type": "HOUSE_NO",
"value": "350"
},
{
"type": "STREET_NAME",
"value": "FIFTH"
},
{
"type": "STREET_TYPE",
"value": "AVENUE"
},
{
"type": "COUNTRY_CODE",
"value": "US"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.95,
"final": 0.95
},
"needsReview": false
}
},
"pro": {
"raw": "350 Fifth Avenue, New York, NY 10118",
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "FIFTH AVENUE",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "350",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "10118",
"reason": "Parsed from raw input (confidence=0.8); confirmed: NEW YORK, New York (US)"
},
{
"field": "country",
"value": "US",
"reason": "Country code 'US' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "NEW YORK",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
},
{
"field": "subDivision",
"value": "US-NY",
"reason": "Sub-division 'US-NY' resolved via exact ISO 3166-2 match"
}
]
},
"general": {
"countryCode": "US",
"countryName": "United States",
"streetName": "FIFTH AVENUE",
"buildingName": "350",
"city": "NEW YORK",
"district": "NEW YORK",
"state": "NY",
"postalCode": "10118",
"parseConfidence": 0.95,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
}
}
},
"iso20022Result": {
"strtNm": "FIFTH AVENUE",
"bldgNb": "350",
"pstCd": "10118",
"twnNm": "NEW YORK",
"ctry": "US",
"ctrySubDvsn": "US-NY",
"dstrct": "NEW YORK",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.97
},
"ctry": {
"confidence": 0.97
},
"ctrySubDvsn": {
"confidence": 0.97
}
}
}
},
"pacs008Xml": "<PstlAdr>\n <BldgNb>350</BldgNb>\n <StrtNm>FIFTH AVENUE</StrtNm>\n <PstCd>10118</PstCd>\n <TwnNm>NEW YORK</TwnNm>\n <Dstrct>NEW YORK</Dstrct>\n <CtrySubDvsn>US-NY</CtrySubDvsn>\n <Ctry>US</Ctry>\n</PstlAdr>",
"proParse": {
"raw": "350 Fifth Avenue, New York, NY 10118",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "10118"
},
{
"type": "STATE_CODE",
"value": "NY"
},
{
"type": "CITY",
"value": "NEW YORK"
},
{
"type": "HOUSE_NO",
"value": "350"
},
{
"type": "STREET_NAME",
"value": "FIFTH"
},
{
"type": "STREET_TYPE",
"value": "AVENUE"
},
{
"type": "COUNTRY_CODE",
"value": "US"
},
{
"type": "COUNTRY",
"value": "United States"
},
{
"type": "DISTRICT",
"value": "NEW YORK",
"source": "postal derived"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
}
},
"traceLogs": [
{
"field": "streetName",
"value": "FIFTH AVENUE",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "350",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "10118",
"reason": "Parsed from raw input (confidence=0.8); confirmed: NEW YORK, New York (US)"
},
{
"field": "country",
"value": "US",
"reason": "Country code 'US' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "NEW YORK",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
},
{
"field": "subDivision",
"value": "US-NY",
"reason": "Sub-division 'US-NY' resolved via exact ISO 3166-2 match"
}
]
}
}
},
{
"key": "uk",
"scenario": "United Kingdom — 10 Downing Street",
"description": "Postcode at end (SW1A 2AA). Core detects GB from the postcode pattern; Pro validates LONDON against the gazetteer.",
"input": "10 Downing Street, London SW1A 2AA",
"core": {
"raw": "10 DOWNING STREET, LONDON SW1A 2AA",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "SW1A 2AA"
},
{
"type": "CITY",
"value": "LONDON"
},
{
"type": "HOUSE_NO",
"value": "10"
},
{
"type": "STREET_NAME",
"value": "DOWNING"
},
{
"type": "STREET_TYPE",
"value": "STREET"
},
{
"type": "COUNTRY_CODE",
"value": "GB"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.95,
"final": 0.95
},
"needsReview": false
}
},
"pro": {
"raw": "10 Downing Street, London SW1A 2AA",
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "DOWNING STREET",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "10",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "SW1A 2AA",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "GB",
"reason": "Country code 'GB' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "LONDON",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
}
]
},
"general": {
"countryCode": "GB",
"countryName": "United Kingdom",
"streetName": "DOWNING STREET",
"buildingName": "10",
"city": "LONDON",
"postalCode": "SW1A 2AA",
"parseConfidence": 0.95,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
}
}
},
"iso20022Result": {
"strtNm": "DOWNING STREET",
"bldgNb": "10",
"pstCd": "SW1A 2AA",
"twnNm": "LONDON",
"ctry": "GB",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.97
},
"ctry": {
"confidence": 0.97
}
}
}
},
"pacs008Xml": "<PstlAdr>\n <BldgNb>10</BldgNb>\n <StrtNm>DOWNING STREET</StrtNm>\n <PstCd>SW1A 2AA</PstCd>\n <TwnNm>LONDON</TwnNm>\n <Ctry>GB</Ctry>\n</PstlAdr>",
"proParse": {
"raw": "10 Downing Street, London SW1A 2AA",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "SW1A 2AA"
},
{
"type": "CITY",
"value": "LONDON"
},
{
"type": "HOUSE_NO",
"value": "10"
},
{
"type": "STREET_NAME",
"value": "DOWNING"
},
{
"type": "STREET_TYPE",
"value": "STREET"
},
{
"type": "COUNTRY_CODE",
"value": "GB"
},
{
"type": "COUNTRY",
"value": "United Kingdom"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
}
},
"traceLogs": [
{
"field": "streetName",
"value": "DOWNING STREET",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "10",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "SW1A 2AA",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "GB",
"reason": "Country code 'GB' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "LONDON",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
}
]
}
}
},
{
"key": "de",
"scenario": "Germany — house number after street",
"description": "German convention: street name before house number, 5-digit postcode before city.",
"input": "Unter den Linden 6, 10117 Berlin",
"core": {
"raw": "UNTER DEN LINDEN 6, 10117 BERLIN",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "10117"
},
{
"type": "CITY",
"value": "BERLIN"
},
{
"type": "HOUSE_NO",
"value": "6"
},
{
"type": "STREET_NAME",
"value": "UNTER DEN LINDEN"
},
{
"type": "COUNTRY_CODE",
"value": "DE"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.95,
"final": 0.95
},
"needsReview": false
}
},
"pro": {
"raw": "Unter den Linden 6, 10117 Berlin",
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "UNTER DEN LINDEN",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "6",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "10117",
"reason": "Parsed from raw input (confidence=0.8); confirmed: BERLIN, Berlin (DE)"
},
{
"field": "country",
"value": "DE",
"reason": "Country code 'DE' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "BERLIN",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
},
{
"field": "subDivision",
"value": "DE-BE",
"reason": "Sub-division 'DE-BE' resolved via exact ISO 3166-2 match"
}
]
},
"general": {
"countryCode": "DE",
"countryName": "Germany",
"streetName": "UNTER DEN LINDEN",
"buildingName": "6",
"city": "BERLIN",
"townLocation": "BERLIN, STADT",
"postalCode": "10117",
"parseConfidence": 0.95,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
}
}
},
"iso20022Result": {
"strtNm": "UNTER DEN LINDEN",
"bldgNb": "6",
"pstCd": "10117",
"twnNm": "BERLIN",
"ctry": "DE",
"ctrySubDvsn": "DE-BE",
"twnLctnNm": "BERLIN, STADT",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.97
},
"ctry": {
"confidence": 0.97
},
"ctrySubDvsn": {
"confidence": 0.97
}
}
}
},
"pacs008Xml": "<PstlAdr>\n <BldgNb>6</BldgNb>\n <StrtNm>UNTER DEN LINDEN</StrtNm>\n <PstCd>10117</PstCd>\n <TwnNm>BERLIN</TwnNm>\n <CtrySubDvsn>DE-BE</CtrySubDvsn>\n <Ctry>DE</Ctry>\n</PstlAdr>",
"proParse": {
"raw": "Unter den Linden 6, 10117 Berlin",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "10117"
},
{
"type": "CITY",
"value": "BERLIN"
},
{
"type": "HOUSE_NO",
"value": "6"
},
{
"type": "STREET_NAME",
"value": "UNTER DEN LINDEN"
},
{
"type": "COUNTRY_CODE",
"value": "DE"
},
{
"type": "COUNTRY",
"value": "Germany"
},
{
"type": "TOWN_LOCATION_NAME",
"value": "BERLIN, STADT",
"source": "postal derived"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
}
},
"traceLogs": [
{
"field": "streetName",
"value": "UNTER DEN LINDEN",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "6",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "10117",
"reason": "Parsed from raw input (confidence=0.8); confirmed: BERLIN, Berlin (DE)"
},
{
"field": "country",
"value": "DE",
"reason": "Country code 'DE' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "BERLIN",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
},
{
"field": "subDivision",
"value": "DE-BE",
"reason": "Sub-division 'DE-BE' resolved via exact ISO 3166-2 match"
}
]
}
}
},
{
"key": "fr",
"scenario": "France — street type before name",
"description": "'Rue' street type precedes the name; BAN postcode data confirms 75001 → PARIS.",
"input": "75 Rue de Rivoli, 75001 Paris",
"core": {
"raw": "75 RUE DE RIVOLI, 75001 PARIS",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "75001"
},
{
"type": "CITY",
"value": "PARIS"
},
{
"type": "HOUSE_NO",
"value": "75"
},
{
"type": "STREET_TYPE",
"value": "RUE"
},
{
"type": "STREET_NAME",
"value": "DE RIVOLI"
},
{
"type": "COUNTRY_CODE",
"value": "FR"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.95,
"final": 0.95
},
"needsReview": false
}
},
"pro": {
"raw": "75 Rue de Rivoli, 75001 Paris",
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": true,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "RUE DE RIVOLI",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "75",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "75001",
"reason": "Parsed from raw input (confidence=0.8); confirmed: PARIS, 75 (FR)"
},
{
"field": "country",
"value": "FR",
"reason": "Country code 'FR' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "PARIS",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
},
{
"field": "subDivision",
"value": "75",
"reason": "Sub-division '75' passed through unvalidated"
}
]
},
"general": {
"countryCode": "FR",
"countryName": "France",
"streetName": "RUE DE RIVOLI",
"buildingName": "75",
"city": "PARIS",
"postalCode": "75001",
"parseConfidence": 0.95,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
}
}
},
"iso20022Result": {
"strtNm": "RUE DE RIVOLI",
"bldgNb": "75",
"pstCd": "75001",
"twnNm": "PARIS",
"ctry": "FR",
"ctrySubDvsn": "75",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.97
},
"ctry": {
"confidence": 0.97
},
"ctrySubDvsn": {
"confidence": 0.55
}
}
}
},
"pacs008Xml": "<PstlAdr>\n <BldgNb>75</BldgNb>\n <StrtNm>RUE DE RIVOLI</StrtNm>\n <PstCd>75001</PstCd>\n <TwnNm>PARIS</TwnNm>\n <CtrySubDvsn>75</CtrySubDvsn>\n <Ctry>FR</Ctry>\n</PstlAdr>",
"proParse": {
"raw": "75 Rue de Rivoli, 75001 Paris",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "75001"
},
{
"type": "CITY",
"value": "PARIS"
},
{
"type": "HOUSE_NO",
"value": "75"
},
{
"type": "STREET_TYPE",
"value": "RUE"
},
{
"type": "STREET_NAME",
"value": "DE RIVOLI"
},
{
"type": "COUNTRY_CODE",
"value": "FR"
},
{
"type": "COUNTRY",
"value": "France"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": true,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
}
},
"traceLogs": [
{
"field": "streetName",
"value": "RUE DE RIVOLI",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "75",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "75001",
"reason": "Parsed from raw input (confidence=0.8); confirmed: PARIS, 75 (FR)"
},
{
"field": "country",
"value": "FR",
"reason": "Country code 'FR' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "PARIS",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
},
{
"field": "subDivision",
"value": "75",
"reason": "Sub-division '75' passed through unvalidated"
}
]
}
}
},
{
"key": "au",
"scenario": "Australia — state abbreviation + G-NAF postcode",
"description": "Level/unit prefix, state abbreviation NSW before a 4-digit postcode; G-NAF data confirms the postcode/locality pair.",
"input": "Level 3, 80 Pacific Highway, North Sydney NSW 2060",
"core": {
"raw": "LEVEL 3, 80 PACIFIC HIGHWAY, NORTH SYDNEY NSW 2060",
"tokens": [
{
"type": "STATE_CODE",
"value": "NSW"
},
{
"type": "POSTAL_CODE",
"value": "2060"
},
{
"type": "CITY",
"value": "NORTH SYDNEY"
},
{
"type": "UNIT",
"value": "LEVEL 3"
},
{
"type": "HOUSE_NO",
"value": "80"
},
{
"type": "STREET_NAME",
"value": "PACIFIC"
},
{
"type": "STREET_TYPE",
"value": "HIGHWAY"
},
{
"type": "COUNTRY_CODE",
"value": "AU"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.95,
"final": 0.95
},
"needsReview": false
}
},
"pro": {
"raw": "Level 3, 80 Pacific Highway, North Sydney NSW 2060",
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.93,
"final": 0.93
},
"needsReview": true,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "PACIFIC HIGHWAY",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "80",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "2060",
"reason": "Parsed from raw input (confidence=0.8); confirmed: NORTH SYDNEY, NSW (AU)"
},
{
"field": "country",
"value": "AU",
"reason": "Geographic triangulation found a low correlation (postal-code locality vs city 'NORTH SYDNEY' = 0.8; postal code '2060' vs country 'AU' = 1.0; city 'NORTH SYDNEY' vs country 'AU' = 0.93); country field confidence set to the MIN of the available signals"
},
{
"field": "townName",
"value": "NORTH SYDNEY",
"reason": "P3-GN-ASCII: matched in GeoNames ASCII names; base=0.93-> final=0.93"
},
{
"field": "subDivision",
"value": "AU-NSW",
"reason": "Sub-division 'AU-NSW' resolved via exact ISO 3166-2 match"
}
]
},
"general": {
"countryCode": "AU",
"countryName": "Australia",
"streetName": "PACIFIC HIGHWAY",
"buildingName": "80",
"unit": "LEVEL 3",
"city": "NORTH SYDNEY",
"state": "NSW",
"postalCode": "2060",
"parseConfidence": 0.95,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.93
},
"country": {
"confidence": 0.8
},
"unit": {
"confidence": 0.65
}
}
},
"iso20022Result": {
"strtNm": "PACIFIC HIGHWAY",
"bldgNb": "80",
"bldgNm": "LEVEL 3",
"pstCd": "2060",
"twnNm": "NORTH SYDNEY",
"ctry": "AU",
"ctrySubDvsn": "AU-NSW",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"bldgNm": {
"confidence": 0.65
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.93
},
"ctry": {
"confidence": 0.8
},
"ctrySubDvsn": {
"confidence": 0.8
}
}
}
},
"pacs008Xml": "<PstlAdr>\n <BldgNb>80</BldgNb>\n <BldgNm>LEVEL 3</BldgNm>\n <StrtNm>PACIFIC HIGHWAY</StrtNm>\n <PstCd>2060</PstCd>\n <TwnNm>NORTH SYDNEY</TwnNm>\n <CtrySubDvsn>AU-NSW</CtrySubDvsn>\n <Ctry>AU</Ctry>\n</PstlAdr>",
"proParse": {
"raw": "Level 3, 80 Pacific Highway, North Sydney NSW 2060",
"tokens": [
{
"type": "STATE_CODE",
"value": "NSW"
},
{
"type": "POSTAL_CODE",
"value": "2060"
},
{
"type": "CITY",
"value": "NORTH SYDNEY"
},
{
"type": "UNIT",
"value": "LEVEL 3"
},
{
"type": "HOUSE_NO",
"value": "80"
},
{
"type": "STREET_NAME",
"value": "PACIFIC"
},
{
"type": "STREET_TYPE",
"value": "HIGHWAY"
},
{
"type": "COUNTRY_CODE",
"value": "AU"
},
{
"type": "COUNTRY",
"value": "Australia"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.93,
"final": 0.93
},
"needsReview": true,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.93
},
"country": {
"confidence": 0.8
},
"unit": {
"confidence": 0.65
}
},
"traceLogs": [
{
"field": "streetName",
"value": "PACIFIC HIGHWAY",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "80",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "2060",
"reason": "Parsed from raw input (confidence=0.8); confirmed: NORTH SYDNEY, NSW (AU)"
},
{
"field": "country",
"value": "AU",
"reason": "Geographic triangulation found a low correlation (postal-code locality vs city 'NORTH SYDNEY' = 0.8; postal code '2060' vs country 'AU' = 1.0; city 'NORTH SYDNEY' vs country 'AU' = 0.93); country field confidence set to the MIN of the available signals"
},
{
"field": "townName",
"value": "NORTH SYDNEY",
"reason": "P3-GN-ASCII: matched in GeoNames ASCII names; base=0.93-> final=0.93"
},
{
"field": "subDivision",
"value": "AU-NSW",
"reason": "Sub-division 'AU-NSW' resolved via exact ISO 3166-2 match"
}
]
}
}
},
{
"key": "ca-en",
"scenario": "Canada (English) — multiple unit tokens",
"description": "Two unit tokens (Unit 100, Suite 1002) ahead of the civic address; alternating letter-digit postal code.",
"input": "Unit 100, Suite 1002, 123 Bay Street, Toronto, ON M5H 2N2",
"core": {
"raw": "UNIT 100, SUITE 1002, 123 BAY STREET, TORONTO, ON M5H 2N2",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "M5H 2N2"
},
{
"type": "STATE_CODE",
"value": "ON"
},
{
"type": "UNIT",
"value": "UNIT 100"
},
{
"type": "UNIT",
"value": "SUITE 1002"
},
{
"type": "HOUSE_NO",
"value": "123"
},
{
"type": "STREET_NAME",
"value": "BAY"
},
{
"type": "STREET_TYPE",
"value": "STREET"
},
{
"type": "CITY",
"value": "TORONTO"
},
{
"type": "COUNTRY_CODE",
"value": "CA"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.95,
"final": 0.95
},
"needsReview": false
}
},
"pro": {
"raw": "Unit 100, Suite 1002, 123 Bay Street, Toronto, ON M5H 2N2",
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "BAY STREET",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "123",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "M5H 2N2",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "CA",
"reason": "Country code 'CA' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "TORONTO",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
},
{
"field": "subDivision",
"value": "CA-ON",
"reason": "Sub-division 'CA-ON' resolved via exact ISO 3166-2 match"
}
]
},
"general": {
"countryCode": "CA",
"countryName": "Canada",
"streetName": "BAY STREET",
"buildingName": "123",
"unit": "UNIT 100",
"city": "TORONTO",
"state": "ON",
"postalCode": "M5H 2N2",
"parseConfidence": 0.95,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
},
"unit": {
"confidence": 0.65
}
}
},
"iso20022Result": {
"strtNm": "BAY STREET",
"bldgNb": "123",
"bldgNm": "UNIT 100 SUITE 1002",
"pstCd": "M5H 2N2",
"twnNm": "TORONTO",
"ctry": "CA",
"ctrySubDvsn": "CA-ON",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"bldgNm": {
"confidence": 0.65
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.97
},
"ctry": {
"confidence": 0.97
},
"ctrySubDvsn": {
"confidence": 0.97
}
}
}
},
"pacs008Xml": "<PstlAdr>\n <BldgNb>123</BldgNb>\n <BldgNm>UNIT 100 SUITE 1002</BldgNm>\n <StrtNm>BAY STREET</StrtNm>\n <PstCd>M5H 2N2</PstCd>\n <TwnNm>TORONTO</TwnNm>\n <CtrySubDvsn>CA-ON</CtrySubDvsn>\n <Ctry>CA</Ctry>\n</PstlAdr>",
"proParse": {
"raw": "Unit 100, Suite 1002, 123 Bay Street, Toronto, ON M5H 2N2",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "M5H 2N2"
},
{
"type": "STATE_CODE",
"value": "ON"
},
{
"type": "UNIT",
"value": "UNIT 100"
},
{
"type": "UNIT",
"value": "SUITE 1002"
},
{
"type": "HOUSE_NO",
"value": "123"
},
{
"type": "STREET_NAME",
"value": "BAY"
},
{
"type": "STREET_TYPE",
"value": "STREET"
},
{
"type": "CITY",
"value": "TORONTO"
},
{
"type": "COUNTRY_CODE",
"value": "CA"
},
{
"type": "COUNTRY",
"value": "Canada"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
},
"unit": {
"confidence": 0.65
}
},
"traceLogs": [
{
"field": "streetName",
"value": "BAY STREET",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "123",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "M5H 2N2",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "CA",
"reason": "Country code 'CA' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "TORONTO",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
},
{
"field": "subDivision",
"value": "CA-ON",
"reason": "Sub-division 'CA-ON' resolved via exact ISO 3166-2 match"
}
]
}
}
},
{
"key": "ca-fr",
"scenario": "Canada (Québec French) — street-type-first",
"description": "French layout ('3700, rue Saint-Denis'); Québec French detection is included in Core.",
"input": "3700, rue Saint-Denis, Montreal, QC H2X 3L7",
"core": {
"raw": "3700, RUE SAINT-DENIS, MONTREAL, QC H2X 3L7",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "H2X 3L7"
},
{
"type": "STATE_CODE",
"value": "QC"
},
{
"type": "CITY",
"value": "MONTREAL"
},
{
"type": "HOUSE_NO",
"value": "3700"
},
{
"type": "STREET_TYPE",
"value": "RUE"
},
{
"type": "STREET_NAME",
"value": "SAINT-DENIS"
},
{
"type": "COUNTRY_CODE",
"value": "CA"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.95,
"final": 0.95
},
"needsReview": false
}
},
"pro": {
"raw": "3700, rue Saint-Denis, Montreal, QC H2X 3L7",
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.93,
"final": 0.93
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "RUE SAINT-DENIS",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "3700",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "H2X 3L7",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "CA",
"reason": "Country code 'CA' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "MONTREAL",
"reason": "P3-GN-ASCII: matched in GeoNames ASCII names; base=0.93-> final=0.93"
},
{
"field": "subDivision",
"value": "CA-QC",
"reason": "Sub-division 'CA-QC' resolved via exact ISO 3166-2 match"
}
]
},
"general": {
"countryCode": "CA",
"countryName": "Canada",
"streetName": "RUE SAINT-DENIS",
"buildingName": "3700",
"city": "MONTREAL",
"state": "QC",
"postalCode": "H2X 3L7",
"parseConfidence": 0.95,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.93
},
"country": {
"confidence": 0.93
}
}
},
"iso20022Result": {
"strtNm": "RUE SAINT-DENIS",
"bldgNb": "3700",
"pstCd": "H2X 3L7",
"twnNm": "MONTREAL",
"ctry": "CA",
"ctrySubDvsn": "CA-QC",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.93
},
"ctry": {
"confidence": 0.93
},
"ctrySubDvsn": {
"confidence": 0.93
}
}
}
},
"pacs008Xml": "<PstlAdr>\n <BldgNb>3700</BldgNb>\n <StrtNm>RUE SAINT-DENIS</StrtNm>\n <PstCd>H2X 3L7</PstCd>\n <TwnNm>MONTREAL</TwnNm>\n <CtrySubDvsn>CA-QC</CtrySubDvsn>\n <Ctry>CA</Ctry>\n</PstlAdr>",
"proParse": {
"raw": "3700, rue Saint-Denis, Montreal, QC H2X 3L7",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "H2X 3L7"
},
{
"type": "STATE_CODE",
"value": "QC"
},
{
"type": "CITY",
"value": "MONTREAL"
},
{
"type": "HOUSE_NO",
"value": "3700"
},
{
"type": "STREET_TYPE",
"value": "RUE"
},
{
"type": "STREET_NAME",
"value": "SAINT-DENIS"
},
{
"type": "COUNTRY_CODE",
"value": "CA"
},
{
"type": "COUNTRY",
"value": "Canada"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.93,
"final": 0.93
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.93
},
"country": {
"confidence": 0.93
}
},
"traceLogs": [
{
"field": "streetName",
"value": "RUE SAINT-DENIS",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "3700",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "H2X 3L7",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "CA",
"reason": "Country code 'CA' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "MONTREAL",
"reason": "P3-GN-ASCII: matched in GeoNames ASCII names; base=0.93-> final=0.93"
},
{
"field": "subDivision",
"value": "CA-QC",
"reason": "Sub-division 'CA-QC' resolved via exact ISO 3166-2 match"
}
]
}
}
},
{
"key": "hk",
"scenario": "Hong Kong — Pro-only parser",
"description": "Flat/floor/building tokens, no postal code. HK parsing is a Pro-tier parser — see the Core output for what the free tier does with it.",
"input": "Flat 25, 12/F, Acacia Building, 150 Kennedy Road, Wan Chai, Hong Kong",
"core": {
"raw": "FLAT 25, 12/F, ACACIA BUILDING, 150 KENNEDY ROAD, WAN CHAI, HONG KONG",
"tokens": [
{
"type": "STREET_NAME",
"value": "FLAT 25"
},
{
"type": "CITY",
"value": "12/F"
},
{
"type": "CITY",
"value": "ACACIA BUILDING"
},
{
"type": "CITY",
"value": "150 KENNEDY ROAD"
},
{
"type": "CITY",
"value": "WAN CHAI"
},
{
"type": "CITY",
"value": "HONG KONG"
},
{
"type": "COUNTRY_CODE",
"value": "HK"
}
],
"diagnostics": {
"confidence": {
"parse": 0.77,
"gazetteer": 0.77,
"final": 0.77
},
"needsReview": false
}
},
"pro": {
"raw": "Flat 25, 12/F, Acacia Building, 150 Kennedy Road, Wan Chai, Hong Kong",
"diagnostics": {
"confidence": {
"parse": 0.82,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "KENNEDY ROAD",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "150",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "country",
"value": "HK",
"reason": "Country code 'HK' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "HONG KONG",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
}
]
},
"general": {
"countryCode": "HK",
"countryName": "Hong Kong SAR China",
"streetName": "KENNEDY ROAD",
"buildingName": "150",
"unit": "FLAT 25",
"floor": "12/F",
"city": "HONG KONG",
"district": "WAN CHAI",
"parseConfidence": 0.82,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
},
"unit": {
"confidence": 0.65
},
"district": {
"confidence": 0.6
}
}
},
"iso20022Result": {
"strtNm": "KENNEDY ROAD",
"bldgNb": "150",
"bldgNm": "FLAT 25 ACACIA BUILDING",
"twnNm": "HONG KONG",
"ctry": "HK",
"dstrct": "WAN CHAI",
"flr": "12/F",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"bldgNm": {
"confidence": 0.65
},
"twnNm": {
"confidence": 0.97
},
"ctry": {
"confidence": 0.97
}
}
}
},
"pacs008Xml": "<PstlAdr>\n <Flr>12/F</Flr>\n <BldgNb>150</BldgNb>\n <BldgNm>FLAT 25 ACACIA BUILDING</BldgNm>\n <StrtNm>KENNEDY ROAD</StrtNm>\n <TwnNm>HONG KONG</TwnNm>\n <Dstrct>WAN CHAI</Dstrct>\n <Ctry>HK</Ctry>\n</PstlAdr>",
"proParse": {
"raw": "Flat 25, 12/F, Acacia Building, 150 Kennedy Road, Wan Chai, Hong Kong",
"tokens": [
{
"type": "UNIT",
"value": "FLAT 25"
},
{
"type": "FLOOR",
"value": "12/F"
},
{
"type": "BUILDING_NAME",
"value": "ACACIA BUILDING"
},
{
"type": "HOUSE_NO",
"value": "150"
},
{
"type": "STREET_NAME",
"value": "KENNEDY ROAD"
},
{
"type": "DISTRICT",
"value": "WAN CHAI"
},
{
"type": "CITY",
"value": "HONG KONG"
},
{
"type": "COUNTRY_CODE",
"value": "HK"
},
{
"type": "COUNTRY",
"value": "Hong Kong SAR China",
"original": "HK"
}
],
"diagnostics": {
"confidence": {
"parse": 0.82,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
},
"unit": {
"confidence": 0.65
},
"district": {
"confidence": 0.6
}
},
"traceLogs": [
{
"field": "streetName",
"value": "KENNEDY ROAD",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "150",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "country",
"value": "HK",
"reason": "Country code 'HK' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "HONG KONG",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
}
]
}
}
}
],
"edgeCases": [
{
"label": "PO Box — FINTRAC non-compliant (CA)",
"why": "Canadian FINTRAC rules for cross-border EFT require a civic street address. A PO Box without a street line sets fintracPoBoxInvalid=true.",
"input": "PO Box 9000, Victoria, BC V8W 9V6",
"pro": {
"raw": "PO Box 9000, Victoria, BC V8W 9V6",
"diagnostics": {
"confidence": {
"parse": 0.9,
"gazetteer": 0.75,
"final": 0.75
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": false,
"fintracPoBoxInvalid": true,
"traceLogs": [
{
"field": "streetName",
"value": "VICTORIA",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "V8W 9V6",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "CA",
"reason": "Country code 'CA' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "VICTORIA CENTRAL BRITISH COLUMBIA P",
"reason": "No city in raw input; derived from postal code lookup; P8-CC-ONLY: city not found in reference data; country validated only; base=0.75-> final=0.75"
},
{
"field": "subDivision",
"value": "CA-BC",
"reason": "Sub-division 'CA-BC' resolved via exact ISO 3166-2 match"
}
]
},
"general": {
"countryCode": "CA",
"countryName": "Canada",
"streetName": "VICTORIA",
"city": "VICTORIA CENTRAL BRITISH COLUMBIA P",
"state": "BC",
"postalCode": "V8W 9V6",
"parseConfidence": 0.9,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.75
},
"country": {
"confidence": 1
},
"poBox": {
"confidence": 0.6
}
}
},
"iso20022Result": {
"strtNm": "VICTORIA",
"pstCd": "V8W 9V6",
"twnNm": "VICTORIA CENTRAL BRITISH COLUMBIA P",
"ctry": "CA",
"ctrySubDvsn": "CA-BC",
"violations": [
"VIOLATION [R6-FINTRAC]: <PstBx> present without a complete civic address (<BldgNb> + <StrtNm>). Invalid under FINTRAC guidance for Canadian cross-border EFT. Provide a full physical address."
],
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.75
},
"ctry": {
"confidence": 1
},
"ctrySubDvsn": {
"confidence": 1
}
}
}
}
},
{
"label": "City + country only — HYBRID pacs.008 shape",
"why": "No street name is present, so PostalAddress.resolveType() falls through to HYBRID. TwnNm and Ctry are emitted as structured elements; nothing goes into AdrLine.",
"input": "London, United Kingdom",
"pro": {
"raw": "London, United Kingdom",
"diagnostics": {
"confidence": {
"parse": 0.63,
"gazetteer": 0,
"final": 0
},
"needsReview": true,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "UNSTRUCTURED",
"cbprStructured": false,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "LONDON, UNITED KINGDOM",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "country",
"value": "GB",
"reason": "Country code 'GB' is a valid ISO 3166-1 alpha-2 code"
}
]
},
"general": {
"countryCode": "GB",
"countryName": "United Kingdom",
"streetName": "LONDON, UNITED KINGDOM",
"parseConfidence": 0.63,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
}
}
},
"iso20022Result": {
"strtNm": "LONDON, UNITED KINGDOM",
"ctry": "GB",
"violations": [
"VIOLATION [R1]: <TwnNm> is missing or blank. Mandatory from November 2026 (CBPR+ / FATF R.16).",
"VIOLATION [R3]: Address is fully UNSTRUCTURED (only <AdrLine> elements, no <TwnNm>/<Ctry>). Payments will be REJECTED after November 2026."
],
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"ctry": {
"confidence": 0
}
}
}
}
},
{
"label": "Country name variant — normalised to ISO code",
"why": "PostalAddress.Builder.normalizeCountry() converts 'United States of America'-> 'US'. countryCodeStatus = KNOWN_ALIAS_NORMALIZED (not VALID_ISO3166) so needsReview may be set.",
"input": "1600 Pennsylvania Avenue NW, Washington DC 20500, United States of America",
"pro": {
"raw": "1600 Pennsylvania Avenue NW, Washington DC 20500, United States of America",
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "PENNSYLVANIA AVENUE",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "1600",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "20500",
"reason": "Parsed from raw input (confidence=0.8); confirmed: WASHINGTON, District of Columbia (US)"
},
{
"field": "country",
"value": "US",
"reason": "Country code 'US' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "WASHINGTON",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
},
{
"field": "subDivision",
"value": "US-DC",
"reason": "Sub-division 'US-DC' resolved via exact ISO 3166-2 match"
}
]
},
"general": {
"countryCode": "US",
"countryName": "United States",
"streetName": "PENNSYLVANIA AVENUE",
"buildingName": "1600",
"city": "WASHINGTON",
"district": "DISTRICT OF COLUMBIA",
"state": "DC",
"postalCode": "20500",
"parseConfidence": 0.95,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
}
}
},
"iso20022Result": {
"strtNm": "PENNSYLVANIA AVENUE",
"bldgNb": "1600",
"pstCd": "20500",
"twnNm": "WASHINGTON",
"ctry": "US",
"ctrySubDvsn": "US-DC",
"dstrct": "DISTRICT OF COLUMBIA",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.97
},
"ctry": {
"confidence": 0.97
},
"ctrySubDvsn": {
"confidence": 0.97
}
}
}
}
},
{
"label": "City typo — still resolved by gazetteer",
"why": "'Tronoto' is not in OurAirports directly. The gazetteer falls through its priority levels; if no fuzzy match fires, confidence drops to P8 (0.55) and needsReview=true.",
"input": "123 Bay Street, Tronoto, ON M5J 2T3",
"pro": {
"raw": "123 Bay Street, Tronoto, ON M5J 2T3",
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.55,
"final": 0.45000000000000007
},
"needsReview": true,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"corrections": {
"townName": {
"original": "TRONOTO",
"corrected": "Downtown Toronto (Harbourfront East / Union Station / Toronto Island)",
"reason": "TYPO"
}
},
"traceLogs": [
{
"field": "streetName",
"value": "BAY STREET",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "123",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "M5J 2T3",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "CA",
"reason": "Country code 'CA' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "TRONOTO",
"reason": "Parsed city 'TRONOTO' not found in gazetteer; corrected to 'Downtown Toronto (Harbourfront East / Union Station / Toronto Island)' via postal lookup; P8-CC-ONLY: city not found in reference data; country validated only; base=0.55; typo_correction=−0.10-> final=0.45000000000000007"
},
{
"field": "subDivision",
"value": "CA-ON",
"reason": "Sub-division 'CA-ON' resolved via exact ISO 3166-2 match"
}
]
},
"general": {
"countryCode": "CA",
"countryName": "Canada",
"streetName": "BAY STREET",
"buildingName": "123",
"city": "TRONOTO",
"state": "ON",
"postalCode": "M5J 2T3",
"parseConfidence": 0.95,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.55,
"penalty": -0.1
},
"country": {
"confidence": 1
}
}
},
"iso20022Result": {
"strtNm": "BAY STREET",
"bldgNb": "123",
"pstCd": "M5J 2T3",
"twnNm": "TRONOTO",
"ctry": "CA",
"ctrySubDvsn": "CA-ON",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.55,
"penalty": -0.1
},
"ctry": {
"confidence": 1
},
"ctrySubDvsn": {
"confidence": 1
}
}
}
}
},
{
"label": "Apartment suffix on house number",
"why": "Some US addresses encode the unit in the civic number field ('1234A'). The parser emits a HOUSE_NO token with the full value; it should not be split.",
"input": "1234A Main Street, Springfield, IL 62701",
"pro": {
"raw": "1234A Main Street, Springfield, IL 62701",
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "MAIN STREET",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "1234A",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "62701",
"reason": "Parsed from raw input (confidence=0.8); confirmed: SPRINGFIELD, Illinois (US)"
},
{
"field": "country",
"value": "US",
"reason": "Country code 'US' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "SPRINGFIELD",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
},
{
"field": "subDivision",
"value": "US-IL",
"reason": "Sub-division 'US-IL' resolved via exact ISO 3166-2 match"
}
]
},
"general": {
"countryCode": "US",
"countryName": "United States",
"streetName": "MAIN STREET",
"buildingName": "1234A",
"city": "SPRINGFIELD",
"district": "SANGAMON",
"state": "IL",
"postalCode": "62701",
"parseConfidence": 0.95,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
}
}
},
"iso20022Result": {
"strtNm": "MAIN STREET",
"bldgNb": "1234A",
"pstCd": "62701",
"twnNm": "SPRINGFIELD",
"ctry": "US",
"ctrySubDvsn": "US-IL",
"dstrct": "SANGAMON",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.97
},
"ctry": {
"confidence": 0.97
},
"ctrySubDvsn": {
"confidence": 0.97
}
}
}
}
},
{
"label": "Multi-line MT103 — split across 3 lines",
"why": "MT103 field 70 delivers addresses as 35-char lines. parseLines preserves line boundaries so parsers can use positional logic across lines.",
"input": "10 Downing Street\nLondon\nSW1A 2AA United Kingdom",
"pro": {
"raw": "10 Downing Street\nLondon\nSW1A 2AA United Kingdom",
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.75,
"final": 0.75
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "DOWNING STREET",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "10",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "SW1A 2AA",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "GB",
"reason": "Country code 'GB' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "BELGRAVIA",
"reason": "No city in raw input; derived from postal code lookup; P8-CC-ONLY: city not found in reference data; country validated only; base=0.75-> final=0.75"
}
]
},
"general": {
"countryCode": "GB",
"countryName": "United Kingdom",
"streetName": "DOWNING STREET",
"buildingName": "10",
"city": "BELGRAVIA",
"postalCode": "SW1A 2AA",
"parseConfidence": 0.95,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.75
},
"country": {
"confidence": 1
}
}
},
"iso20022Result": {
"strtNm": "DOWNING STREET",
"bldgNb": "10",
"pstCd": "SW1A 2AA",
"twnNm": "BELGRAVIA",
"ctry": "GB",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.75
},
"ctry": {
"confidence": 1
}
}
}
}
},
{
"label": "Long street name — StrtNm capped at 70 chars",
"why": "pacs.008 limits StrtNm to 70 characters. Any excess is silently truncated by PostalAddress.Builder.streetName(). The raw street name is preserved in iso20022Result.",
"input": "1 Extraordinarily Long Boulevard Name That Exceeds The Seventy Character Limit Street, New York, NY 10001",
"pro": {
"raw": "1 Extraordinarily Long Boulevard Name That Exceeds The Seventy Character Limit Street, New York, NY 10001",
"diagnostics": {
"confidence": {
"parse": 0.82,
"gazetteer": 0.55,
"final": 0.55
},
"needsReview": true,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "BOULEVARD EXTRAORDINARILY LONG NAME THAT EXCEEDS THE SEVENTY CHARACTER",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "1",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "country",
"value": "FR",
"reason": "Geographic triangulation found a low correlation (city 'NEW YORK' vs country 'FR' = 0.75); country field confidence set to the MIN of the available signals"
},
{
"field": "townName",
"value": "NEW YORK",
"reason": "P8-CC-ONLY: city not found in reference data; country validated only; base=0.55-> final=0.55"
}
]
},
"general": {
"countryCode": "FR",
"countryName": "France",
"streetName": "BOULEVARD EXTRAORDINARILY LONG NAME THAT EXCEEDS THE SEVENTY CHARACTER",
"buildingName": "1",
"city": "NEW YORK",
"parseConfidence": 0.82,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"townName": {
"confidence": 0.55
},
"country": {
"confidence": 0.75
}
}
},
"iso20022Result": {
"strtNm": "BOULEVARD EXTRAORDINARILY LONG NAME THAT EXCEEDS THE SEVENTY CHARACTER",
"bldgNb": "1",
"twnNm": "NEW YORK",
"ctry": "FR",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"twnNm": {
"confidence": 0.55
},
"ctry": {
"confidence": 0.75
}
}
}
}
},
{
"label": "No country signal — UNSTRUCTURED fallback",
"why": "When no country is detected and no postal code pattern fires, CountryDetector returns UNKNOWN. Without a valid Ctry, PostalAddress resolveType() returns UNSTRUCTURED, and the serializer emits a WARNING comment in the XML output.",
"input": "somewhere on a street in a place",
"pro": {
"raw": "somewhere on a street in a place",
"diagnostics": {
"confidence": {
"parse": 0.63,
"gazetteer": 0,
"final": 0
},
"needsReview": true,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "UNSTRUCTURED",
"cbprStructured": false,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "SOMEWHERE ON A STREET IN A PLACE",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "country",
"value": "GB",
"reason": "Country code 'GB' is a valid ISO 3166-1 alpha-2 code"
}
]
},
"general": {
"countryCode": "GB",
"countryName": "United Kingdom",
"streetName": "SOMEWHERE ON A STREET IN A PLACE",
"parseConfidence": 0.63,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
}
}
},
"iso20022Result": {
"strtNm": "SOMEWHERE ON A STREET IN A PLACE",
"ctry": "GB",
"violations": [
"VIOLATION [R1]: <TwnNm> is missing or blank. Mandatory from November 2026 (CBPR+ / FATF R.16).",
"VIOLATION [R3]: Address is fully UNSTRUCTURED (only <AdrLine> elements, no <TwnNm>/<Ctry>). Payments will be REJECTED after November 2026."
],
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"ctry": {
"confidence": 0
}
}
}
}
},
{
"label": "No-comma suburb + multi-locality postcode confidence (AU)",
"why": "\"Hong Kong\" appears twice as an unrelated organization/building name, tied on length with the trailing \"AUSTRALIA\" declaration — CountryDetector's tie-break resolves to the trailing one. The suburb (\"SYDNEY\") has no comma separating it from the street, so AuAddressParser reads it from the text after the street type instead. Postcode 2000 maps to several named localities (Sydney, Barangaroo, Darling Harbour, ...); the parsed city is checked against all of them, not just one arbitrary pick, so it resolves at high confidence instead of a false CROSS_CITY_MISMATCH penalty.",
"input": "Hong Kong Tourism Board - Sydney Office Level 4 Hong Kong House 80 Druitt Street SYDNEY NSW 2000 ,NEW SOUTH WALES, AUSTRALIA",
"pro": {
"raw": "Hong Kong Tourism Board - Sydney Office Level 4 Hong Kong House 80 Druitt Street SYDNEY NSW 2000 ,NEW SOUTH WALES, AUSTRALIA",
"diagnostics": {
"confidence": {
"parse": 0.9,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": true,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "HONG KONG TOURISM BOARD - SYDNEY OFFICE LEVEL 4 HONG KONG HOUSE 80 DRU",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "2000",
"reason": "Parsed from raw input (confidence=0.8); confirmed: SYDNEY, NSW (AU)"
},
{
"field": "country",
"value": "AU",
"reason": "Geographic triangulation found a low correlation (postal-code locality vs city 'SYDNEY' = 0.8; postal code '2000' vs country 'AU' = 1.0; city 'SYDNEY' vs country 'AU' = 0.97); country field confidence set to the MIN of the available signals"
},
{
"field": "townName",
"value": "SYDNEY",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
},
{
"field": "subDivision",
"value": "AU-NSW",
"reason": "Sub-division 'AU-NSW' resolved via exact ISO 3166-2 match"
}
]
},
"general": {
"countryCode": "AU",
"countryName": "Australia",
"streetName": "HONG KONG TOURISM BOARD - SYDNEY OFFICE LEVEL 4 HONG KONG HOUSE 80 DRU",
"city": "SYDNEY",
"state": "NSW",
"postalCode": "2000",
"parseConfidence": 0.9,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.8
}
}
},
"iso20022Result": {
"strtNm": "HONG KONG TOURISM BOARD - SYDNEY OFFICE LEVEL 4 HONG KONG HOUSE 80 DRU",
"pstCd": "2000",
"twnNm": "SYDNEY",
"ctry": "AU",
"ctrySubDvsn": "AU-NSW",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.97
},
"ctry": {
"confidence": 0.8
},
"ctrySubDvsn": {
"confidence": 0.8
}
}
}
}
},
{
"label": "Floor.unit suite numbering with a dot (AU)",
"why": "AU commercial buildings commonly number suites as <level>.<unit> (\"Suite 14.02\" = suite 02 on level 14). The UNIT value must retain the dot rather than truncating at it.",
"input": "Suite 14.02, Level 14, 31 Market Street, Sydney, NSW 2009",
"pro": {
"raw": "Suite 14.02, Level 14, 31 Market Street, Sydney, NSW 2009",
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": true,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "MARKET STREET",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "buildingName",
"value": "31",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "2009",
"reason": "Parsed from raw input (confidence=0.8); confirmed: SYDNEY, NSW (AU)"
},
{
"field": "country",
"value": "AU",
"reason": "Geographic triangulation found a low correlation (postal-code locality vs city 'SYDNEY' = 0.8; postal code '2009' vs country 'AU' = 1.0; city 'SYDNEY' vs country 'AU' = 0.97); country field confidence set to the MIN of the available signals"
},
{
"field": "townName",
"value": "SYDNEY",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
},
{
"field": "subDivision",
"value": "AU-NSW",
"reason": "Sub-division 'AU-NSW' resolved via exact ISO 3166-2 match"
}
]
},
"general": {
"countryCode": "AU",
"countryName": "Australia",
"streetName": "MARKET STREET",
"buildingName": "31",
"unit": "SUITE 14.02, LEVEL 14",
"city": "SYDNEY",
"state": "NSW",
"postalCode": "2009",
"parseConfidence": 0.95,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"buildingName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.8
},
"unit": {
"confidence": 0.65
}
}
},
"iso20022Result": {
"strtNm": "MARKET STREET",
"bldgNb": "31",
"bldgNm": "SUITE 14.02, LEVEL 14",
"pstCd": "2009",
"twnNm": "SYDNEY",
"ctry": "AU",
"ctrySubDvsn": "AU-NSW",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"bldgNb": {
"confidence": 0.7
},
"bldgNm": {
"confidence": 0.65
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.97
},
"ctry": {
"confidence": 0.8
},
"ctrySubDvsn": {
"confidence": 0.8
}
}
}
}
},
{
"label": "Native-script Chinese address (HK)",
"why": "No Latin characters at all — CountryDetector recognises this via its CJK-character branch (unrelated to the COUNTRY_NAME_HINT text-scan used for Latin-script addresses), and HkChineseAddressHealer.translateToEnglish() runs before SWIFT normalisation to convert region (香港 -> Hong Kong), district (灣仔 -> Wan Chai), street (堅尼地道 -> Kennedy Road), house number, floor (楼 -> /F), and unit (室 -> Unit) into the Latin-script line order HkAddressParser expects.",
"input": "香港灣仔堅尼地道105號雅佳大廈12樓25室",
"pro": {
"raw": "香港灣仔堅尼地道105號雅佳大廈12樓25室",
"diagnostics": {
"confidence": {
"parse": 0.68,
"gazetteer": 0.97,
"final": 0.97
},
"needsReview": false,
"countryCodeStatus": "VALID_ISO3166",
"inputStructure": "HYBRID",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "buildingName",
"value": "105",
"reason": "Parsed from raw input (token confidence=0.0)"
},
{
"field": "country",
"value": "HK",
"reason": "Country code 'HK' is a valid ISO 3166-1 alpha-2 code"
},
{
"field": "townName",
"value": "HONG KONG",
"reason": "P2-OA-MUNI: matched in OurAirports municipality; base=0.97-> final=0.97"
}
]
},
"general": {
"countryCode": "HK",
"countryName": "Hong Kong SAR China",
"buildingName": "105",
"unit": "UNIT 25",
"floor": "12/F",
"city": "HONG KONG",
"district": "WAN CHAI",
"parseConfidence": 0.68,
"fieldConfidences": {
"townName": {
"confidence": 0.97
},
"country": {
"confidence": 0.97
},
"unit": {
"confidence": 0.65
},
"district": {
"confidence": 0.6
}
}
},
"iso20022Result": {
"bldgNb": "105",
"bldgNm": "UNIT 25 105",
"twnNm": "HONG KONG",
"ctry": "HK",
"dstrct": "WAN CHAI",
"flr": "12/F",
"fieldConfidence": {
"bldgNm": {
"confidence": 0.65
},
"twnNm": {
"confidence": 0.97
},
"ctry": {
"confidence": 0.97
}
}
}
}
}
],
"coreEdgeCases": [
{
"label": "Garbage input",
"why": "Punctuation-only input: nothing survives normalisation; country UNKNOWN.",
"input": "!!!???",
"core": {
"raw": "???",
"tokens": [
{
"type": "STREET_NAME",
"value": "???"
}
],
"diagnostics": {
"confidence": {
"parse": 0.53,
"gazetteer": 0.53,
"final": 0.53
},
"needsReview": true
}
}
},
{
"label": "Empty input",
"why": "Blank address returns an empty parse rather than an error.",
"input": "",
"core": {
"raw": "",
"tokens": [],
"diagnostics": {
"confidence": {
"parse": 0,
"gazetteer": 0,
"final": 0
},
"needsReview": true
}
}
},
{
"label": "Postcode only",
"why": "A bare UK postcode is enough for Core to detect GB.",
"input": "SW1A 2AA",
"core": {
"raw": "SW1A 2AA",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "SW1A 2AA"
},
{
"type": "COUNTRY_CODE",
"value": "GB"
}
],
"diagnostics": {
"confidence": {
"parse": 0.63,
"gazetteer": 0.63,
"final": 0.63
},
"needsReview": true
}
}
},
{
"label": "Québec French diacritics",
"why": "Diacritics (Gauchetière, Montréal) are normalised to SWIFT-safe ASCII.",
"input": "1000 rue de la Gauchetière Ouest, Bureau 2500, Montréal, QC H3B 4W5",
"core": {
"raw": "1000 RUE DE LA GAUCHETIERE OUEST, BUREAU 2500, MONTREAL, QC H3B 4W5",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "H3B 4W5"
},
{
"type": "STATE_CODE",
"value": "QC"
},
{
"type": "CITY",
"value": "BUREAU 2500 MONTREAL"
},
{
"type": "HOUSE_NO",
"value": "1000"
},
{
"type": "STREET_TYPE",
"value": "RUE"
},
{
"type": "STREET_NAME",
"value": "DE LA GAUCHETIERE"
},
{
"type": "DIRECTION",
"value": "OUEST"
},
{
"type": "COUNTRY_CODE",
"value": "CA"
}
],
"diagnostics": {
"confidence": {
"parse": 0.95,
"gazetteer": 0.95,
"final": 0.95
},
"needsReview": false
}
}
},
{
"label": "5-digit postcode collision (FR input)",
"why": "'75001 Paris' with no street context: the 5-digit pattern is ambiguous between DE and FR — Core picks DE. Honest limitation: postcode alone cannot disambiguate.",
"input": "75001 Paris",
"core": {
"raw": "75001 PARIS",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "75001"
},
{
"type": "CITY",
"value": "PARIS"
},
{
"type": "COUNTRY_CODE",
"value": "DE"
}
],
"diagnostics": {
"confidence": {
"parse": 0.77,
"gazetteer": 0.77,
"final": 0.77
},
"needsReview": false
}
}
},
{
"label": "5-digit postcode collision (DE input)",
"why": "'10117 Berlin' — same ambiguity, and here DE happens to be correct.",
"input": "10117 Berlin",
"core": {
"raw": "10117 BERLIN",
"tokens": [
{
"type": "POSTAL_CODE",
"value": "10117"
},
{
"type": "CITY",
"value": "BERLIN"
},
{
"type": "COUNTRY_CODE",
"value": "DE"
}
],
"diagnostics": {
"confidence": {
"parse": 0.77,
"gazetteer": 0.77,
"final": 0.77
},
"needsReview": false
}
}
}
],
"outOfScope": [
{
"key": "cn-latin",
"country": "China (romanised)",
"input": "1 Zhongshan East 1st Road, Huangpu District, Shanghai 200002, China",
"why": "Country detected from the trailing name, but no CN parser exists: the district lands in the city field and confidence drops to the P8 floor (0.55), needsReview=true.",
"core": {
"raw": "1 ZHONGSHAN EAST 1ST ROAD, HUANGPU DISTRICT, SHANGHAI 200002, CHINA",
"tokens": [
{
"type": "STREET_NAME",
"value": "1 ZHONGSHAN EAST 1ST ROAD"
},
{
"type": "CITY",
"value": "HUANGPU DISTRICT"
},
{
"type": "POSTAL_CODE",
"value": "200002"
},
{
"type": "CITY",
"value": "CHINA"
},
{
"type": "COUNTRY_CODE",
"value": "CN"
}
],
"diagnostics": {
"confidence": {
"parse": 0.9,
"gazetteer": 0.9,
"final": 0.9
},
"needsReview": false
}
},
"pro": {
"raw": "1 Zhongshan East 1st Road, Huangpu District, Shanghai 200002, China",
"diagnostics": {
"confidence": {
"parse": 0.9,
"gazetteer": 0.55,
"final": 0.55
},
"needsReview": true,
"countryCodeStatus": "UNSUPPORTED",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "1 ZHONGSHAN EAST 1ST ROAD",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "200002",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "CN",
"reason": "Geographic triangulation found a low correlation (postal code '200002' vs country 'CN' = 0.75; city 'HUANGPU DISTRICT' vs country 'CN' = 0.55); country field confidence set to the MIN of the available signals"
},
{
"field": "townName",
"value": "HUANGPU DISTRICT",
"reason": "P8-CC-ONLY: city not found in reference data; country validated only; base=0.55 → final=0.55"
}
]
},
"general": {
"countryCode": "CN",
"countryName": "China",
"streetName": "1 ZHONGSHAN EAST 1ST ROAD",
"city": "HUANGPU DISTRICT",
"postalCode": "200002",
"parseConfidence": 0.9,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.55
},
"country": {
"confidence": 0.55
}
}
},
"iso20022Result": {
"strtNm": "1 ZHONGSHAN EAST 1ST ROAD",
"pstCd": "200002",
"twnNm": "HUANGPU DISTRICT",
"ctry": "CN",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.55
},
"ctry": {
"confidence": 0.55
}
}
}
}
},
{
"key": "cn-native",
"country": "China (native script)",
"input": "上海市黄浦区中山东一路1号",
"why": "Core has no CJK handling — SWIFT normalisation strips the script entirely, leaving '1'. Pro returns UNKNOWN with confidence 0.0. Fully out of scope.",
"core": {
"raw": "1",
"tokens": [
{
"type": "STREET_NAME",
"value": "1"
}
],
"diagnostics": {
"confidence": {
"parse": 0.53,
"gazetteer": 0.53,
"final": 0.53
},
"needsReview": true
}
},
"pro": {
"raw": "上海市黄浦区中山东一路1号",
"diagnostics": {
"confidence": {
"parse": 0.53,
"gazetteer": 0,
"final": 0
},
"needsReview": true,
"countryCodeStatus": "KNOWN_ALIAS_NORMALIZED",
"inputStructure": "UNSTRUCTURED",
"cbprStructured": false,
"fintracPoBoxInvalid": false,
"corrections": {
"country": {
"original": "UNKNOWN",
"corrected": "UNKNOWN",
"reason": "COUNTRY_INFERRED"
}
},
"traceLogs": [
{
"field": "streetName",
"value": "1",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "country",
"value": "UNKNOWN",
"reason": "Country was not present or not recognised; resolved from postal code dataset"
}
]
},
"general": {
"countryCode": "UNKNOWN",
"streetName": "1",
"parseConfidence": 0.53,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
}
}
},
"iso20022Result": {
"strtNm": "1",
"ctry": "UNKNOWN",
"violations": [
"VIOLATION [R1]: <TwnNm> is missing or blank. Mandatory from November 2026 (CBPR+ / FATF R.16).",
"VIOLATION [R2]: <Ctry> is missing or blank. Mandatory from November 2026.",
"VIOLATION [R3]: Address is fully UNSTRUCTURED (only <AdrLine> elements, no <TwnNm>/<Ctry>). Payments will be REJECTED after November 2026."
],
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"ctry": {
"confidence": 0
}
}
}
}
},
{
"key": "in",
"country": "India",
"input": "Flat 4B, 12 MG Road, Bengaluru, Karnataka 560001, India",
"why": "The 6-digit PINCODE pattern is recognised for country detection, but with no IN parser the street ('12 MG Road') is misread as the city. Confidence 0.25, needsReview=true.",
"core": {
"raw": "FLAT 4B, 12 MG ROAD, BENGALURU, KARNATAKA 560001, INDIA",
"tokens": [
{
"type": "STREET_NAME",
"value": "FLAT 4B"
},
{
"type": "CITY",
"value": "12 MG ROAD"
},
{
"type": "CITY",
"value": "BENGALURU"
},
{
"type": "POSTAL_CODE",
"value": "560001"
},
{
"type": "CITY",
"value": "INDIA"
},
{
"type": "COUNTRY_CODE",
"value": "IN"
}
],
"diagnostics": {
"confidence": {
"parse": 0.9,
"gazetteer": 0.9,
"final": 0.9
},
"needsReview": false
}
},
"pro": {
"raw": "Flat 4B, 12 MG Road, Bengaluru, Karnataka 560001, India",
"diagnostics": {
"confidence": {
"parse": 0.9,
"gazetteer": 0.55,
"final": 0.55
},
"needsReview": true,
"countryCodeStatus": "UNSUPPORTED",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "FLAT 4B",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "560001",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "IN",
"reason": "Geographic triangulation found a low correlation (city '12 MG ROAD' vs country 'IN' = 0.55); country field confidence set to the MIN of the available signals"
},
{
"field": "townName",
"value": "12 MG ROAD",
"reason": "P8-CC-ONLY: city not found in reference data; country validated only; base=0.55 → final=0.55"
}
]
},
"general": {
"countryCode": "IN",
"countryName": "India",
"streetName": "FLAT 4B",
"city": "12 MG ROAD",
"postalCode": "560001",
"parseConfidence": 0.9,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.55
},
"country": {
"confidence": 0.55
}
}
},
"iso20022Result": {
"strtNm": "FLAT 4B",
"pstCd": "560001",
"twnNm": "12 MG ROAD",
"ctry": "IN",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.55
},
"ctry": {
"confidence": 0.55
}
}
}
}
},
{
"key": "kr",
"country": "South Korea",
"input": "166 Sejong-daero, Jung-gu, Seoul 04520, South Korea",
"why": "Country detected from the name; the district (Jung-gu) is misread as the city. Confidence 0.35, needsReview=true.",
"core": {
"raw": "166 SEJONG-DAERO, JUNG-GU, SEOUL 04520, SOUTH KOREA",
"tokens": [
{
"type": "STREET_NAME",
"value": "166 SEJONG-DAERO"
},
{
"type": "CITY",
"value": "JUNG-GU"
},
{
"type": "POSTAL_CODE",
"value": "04520"
},
{
"type": "CITY",
"value": "SOUTH KOREA"
},
{
"type": "COUNTRY_CODE",
"value": "KR"
}
],
"diagnostics": {
"confidence": {
"parse": 0.9,
"gazetteer": 0.9,
"final": 0.9
},
"needsReview": false
}
},
"pro": {
"raw": "166 Sejong-daero, Jung-gu, Seoul 04520, South Korea",
"diagnostics": {
"confidence": {
"parse": 0.9,
"gazetteer": 0.55,
"final": 0.55
},
"needsReview": true,
"countryCodeStatus": "UNSUPPORTED",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "166 SEJONG-DAERO",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "04520",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "KR",
"reason": "Geographic triangulation found a low correlation (city 'JUNG-GU' vs country 'KR' = 0.55); country field confidence set to the MIN of the available signals"
},
{
"field": "townName",
"value": "JUNG-GU",
"reason": "P8-CC-ONLY: city not found in reference data; country validated only; base=0.55 → final=0.55"
}
]
},
"general": {
"countryCode": "KR",
"countryName": "South Korea",
"streetName": "166 SEJONG-DAERO",
"city": "JUNG-GU",
"postalCode": "04520",
"parseConfidence": 0.9,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.55
},
"country": {
"confidence": 0.55
}
}
},
"iso20022Result": {
"strtNm": "166 SEJONG-DAERO",
"pstCd": "04520",
"twnNm": "JUNG-GU",
"ctry": "KR",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.55
},
"ctry": {
"confidence": 0.55
}
}
}
}
},
{
"key": "mx",
"country": "Mexico",
"input": "Av. Paseo de la Reforma 483, Cuauhtémoc, 06500 Ciudad de México, CDMX, Mexico",
"why": "The gazetteer resolves CUAUHTEMOC (0.93) because it is a real municipality — but it is the borough, not the town, and needsReview is still raised. Plausible-looking output still needs a dedicated MX parser.",
"core": {
"raw": "AV. PASEO DE LA REFORMA 483, CUAUHTEMOC, 06500 CIUDAD DE MEXICO, CDMX, MEXICO",
"tokens": [
{
"type": "STREET_NAME",
"value": "AV. PASEO DE LA REFORMA 483"
},
{
"type": "CITY",
"value": "CUAUHTEMOC"
},
{
"type": "POSTAL_CODE",
"value": "06500"
},
{
"type": "CITY",
"value": "CDMX"
},
{
"type": "CITY",
"value": "MEXICO"
},
{
"type": "COUNTRY_CODE",
"value": "MX"
}
],
"diagnostics": {
"confidence": {
"parse": 0.9,
"gazetteer": 0.9,
"final": 0.9
},
"needsReview": false
}
},
"pro": {
"raw": "Av. Paseo de la Reforma 483, Cuauhtémoc, 06500 Ciudad de México, CDMX, Mexico",
"diagnostics": {
"confidence": {
"parse": 0.9,
"gazetteer": 0.93,
"final": 0.93
},
"needsReview": true,
"countryCodeStatus": "UNSUPPORTED",
"inputStructure": "STRUCTURED",
"cbprStructured": true,
"fintracPoBoxInvalid": false,
"traceLogs": [
{
"field": "streetName",
"value": "AV. PASEO DE LA REFORMA 483",
"reason": "Parsed from raw input (token confidence=0.7)"
},
{
"field": "postalCode",
"value": "06500",
"reason": "Parsed from raw input (confidence=0.8)"
},
{
"field": "country",
"value": "MX",
"reason": "Geographic triangulation found a low correlation (postal code '06500' vs country 'MX' = 0.75; city 'CUAUHTEMOC' vs country 'MX' = 0.93); country field confidence set to the MIN of the available signals"
},
{
"field": "townName",
"value": "CUAUHTEMOC",
"reason": "P3-GN-ASCII: matched in GeoNames ASCII names; base=0.93 → final=0.93"
}
]
},
"general": {
"countryCode": "MX",
"countryName": "Mexico",
"streetName": "AV. PASEO DE LA REFORMA 483",
"city": "CUAUHTEMOC",
"postalCode": "06500",
"parseConfidence": 0.9,
"fieldConfidences": {
"streetName": {
"confidence": 0.7
},
"postalCode": {
"confidence": 0.8
},
"townName": {
"confidence": 0.93
},
"country": {
"confidence": 0.75
}
}
},
"iso20022Result": {
"strtNm": "AV. PASEO DE LA REFORMA 483",
"pstCd": "06500",
"twnNm": "CUAUHTEMOC",
"ctry": "MX",
"fieldConfidence": {
"strtNm": {
"confidence": 0.7
},
"pstCd": {
"confidence": 0.8
},
"twnNm": {
"confidence": 0.93
},
"ctry": {
"confidence": 0.75
}
}
}
}
}
]
}