castomFLOW

Reference data and enrichment

Thirty-four million rows,as a step.

Countries, languages and currencies. 13.4 million populated places and geographic features. 19 million name variants. Two million postal codes. Airports, seaports, vehicle makes. Sixty-five endpoints, no authentication, no rate card, because it is the same platform your workflow already runs on.

Why this is unusual.

In every other automation tool, “validate this address” is a paid third-party integration. You find a vendor, open an account, agree a rate card, obtain a key, store the key, watch the quota, and renegotiate when your volume changes. The lookup itself takes twenty milliseconds; the procurement takes a fortnight.

Here it is a step in the picker. The data is public reference data — GeoNames, official code lists, published registers — cleaned, indexed and served by castomAPI, which exists because a dozen products in this family needed the same thing and building it once was cheaper than building it twelve times.

Search is trigram-based with a three-character minimum, so a partial or misspelled name still finds the place. That minimum is deliberate: two characters match everything, and a lookup that matches everything is worse than no lookup.

The three things people do with it.

Validate — stop bad data at the door. Is that a real postal code for that city? Does that country code exist, or is it a typo somebody made in 2019 that has been propagating ever since? Is PLN a currency, and is it the one this customer should be charged in?

Normalise — “Warsaw”, “Warszawa”, “Varsovie” and “Варшава” are one place with one identifier. Nineteen million name variants exist so that your customer database does not have to hold four spellings of the same city and pretend they are four cities.

Enrich — a city name becomes coordinates, a timezone, an administrative region and a population figure. An airport code becomes a name and a location. A postal code becomes everything above it in the hierarchy. Six fields that a person would otherwise have typed, filled in twenty milliseconds, for nothing.

The timezone is the quiet one.

Resolving a place gives you its timezone, and a timezone is what makes “send this at nine in the morning” mean nine in the morning for the recipient rather than nine in the morning for you. Quiet hours, schedules and reminders all become correct for an international list without anybody maintaining a mapping table.

Enrich a contactcastomAPI data
  • 1Input“ul. Powstańców Śląskich 5, 53-332 Wrocław, PL”
  • 2Postal code matched53-332 → Wrocław, Dolnośląskie, PL.
  • 3Place resolved51.0938 N, 17.0226 E · Europe/Warsaw · population 674 079.
  • 4Written backSix fields filled that a person would otherwise have typed.
  • §CostDeterministic step. No key, no quota, no per-lookup charge.

Elapsed: 40 ms65 endpoints available

Thirty-four million rows.
One step.

Worked examples

Where it earns its place.

Before the carrier sees it

An address checked and normalised before the shipping label is bought. A rejected label costs a fee and a day; a rejected postal code costs twenty milliseconds.

Before the accountant sees it

A currency code and a country code validated before an invoice is raised, which is considerably cheaper than validating them after it has been sent.

Deduplicating a list

Two records with the same customer under two spellings of the same city merge properly once both cities resolve to the same identifier.

Routing by geography

Coordinates for a customer and coordinates for your depots, and the run picks the nearest one without anybody maintaining a postcode-to-depot spreadsheet.

Language, correctly

A country resolves to its languages, so the message that goes out is in one the recipient probably reads — decided by data rather than by an assumption about a flag.

Fleet and logistics

Vehicle makes, airports and seaports as canonical records, for the workflows whose job involves something physically moving.

The honest limits.

This is public reference data, not a commercial address-verification service. It will tell you that 53-332 is a real postal code in Wrocław and give you the coordinates of the locality. It will not tell you whether flat 212 exists at number 5, or whether anybody lives there. For delivery-point-level verification you want a national postal operator's product, and a workflow can call one over HTTP alongside this.

It is also not a source of personal data. There are no people in it. It contains places, codes, registers and public facts — which is exactly why it can be served without authentication.

On freshness: reference data changes slowly, and this is refreshed on a schedule rather than continuously. A newly renamed village will not appear the same afternoon. For anything that changes by the hour you want the events feed instead, which is built for exactly that.

Illustrations by GetIllustrations.com (Blues pack).