allium_identity.geo tables,
plus coverage statistics, data-quality caveats, and query best practices. For full column lists
see the Table Reference.
classification
The activity bucket carried through from the stablecoin transfer pipeline. Every transfer lands in exactly one:subcategory
Second-level label, inherited from downstream classifiers. Varies by classification:payments— purpose buckets:c2c_payment,b2b_payment,b2c_payment,c2b_payment,i2b_payment,i2c_payment,deposit_to_institutional,payment_processor_depositcex_flow— counterparty-typed exchange flows (sender type first; c = consumer, b = business, i = institutional, u = unclassified wallet, x = exchange):c2x/b2x/i2x/u2xdeposits,x2c/x2b/x2i/x2uwithdrawals, labeled verticals (df2x,ps2x,in2x,br2x,gm2x,tr2xand mirrors), and exchange↔exchange refined asx2x:intra_exchange(same entity — internal shuffling) vsx2x:inter_exchange(different entities)organic_activity/store_of_value/investment_trade—store,trade,organic_unclassifiedinfra_automation—inorganic,bridge,bot,admin- other —
routing(short_term_pair),mint/burn,micro_transfer(dust),nonewhen no finer label matched
tier & measurability
How each corridor row’s geography was resolved, and how much to trust it (see Geo-Measurability for the full mechanism):Geography keys (from_geo / to_geo / geo / counterparty_geo)
Leg types (from_leg_type / to_leg_type)
direction (country_flows_daily)
inbound — the row’s geo is the receiving end; outbound — the sending end.
Domestic transfers (both ends the same geography) appear once per direction.
conviction tiers (addresses_geography.confidence)
The five-tier scale for address-level attribution. This is usually the field to filter on: it folds in how well-corroborated an attribution is, not just how strong the single best signal was.addresses_geography.score is bounded to 0–1 (higher = stronger). confidence is not a pure
re-bucketing of score — for propagated rows it also requires corroboration from multiple related
wallets. Filter on the conviction tier when you want both strength and corroboration. The
corridor tables’ unhosted legs use score > 0.5.reasoning (free text)
addresses_geography.reasoning is not an enum — it is a human-readable explanation of the
signals behind each attribution. Use it for auditing individual rows; don’t GROUP BY it.
primary_region
addresses_geography.primary_region uses Allium’s three-region grouping: apac, emea,
americas (lowercase). The corridor region:* keys use the same regions.
Coverage
Geographic coverage is quantified, not assumed — and it differs by level: Address level. ~25% of classified addresses (~20M of ~80M) carry a country inaddresses_geography. The rest are eligible but lack a confident signal; they are not “missing
data.”
Transfer level. The share of stablecoin volume carrying geographic signal
(measurability != 'not_measurable') varies widely — and informatively — by chain. Indicative
year-to-date figures:
Always compute your denominator from
corridors_coverage_daily rather than assuming one:
A low geo-signal share is not a data defect — it is a property of the chain’s activity mix.
Ethereum’s uncovered volume is mostly DeFi protocol legs that have no geography; a bot-heavy
chain’s uncovered volume is churn. The coverage table makes these regimes visible instead of
hiding them inside averages.
Data Quality & Limitations
- The latest day is provisional. Corridor tables rebuild daily with a 3-day lookback; the most recent day may be partial until upstream pipelines complete, then self-corrects.
- Top-5 exchange geography is region-grain only. Country-level claims for the largest global
exchanges would not be credible; their legs fan at
region:*and gradepartially_measurable. - Fan-weighted counts are fractional.
n_transfersdistributes with the fan weights; sums reconcile to true counts, but a single row’s value is not a whole number of transfers. - Unhosted attribution has known geographic biases. Countries hosting infrastructure or institutional wallets can be over-represented in exact corridors; region-grain aggregation is the robust presentation.
- Attribution coverage ≈ 25% at address level — see Coverage above.
- Country propagation is partial. Flow-based relatedness propagation runs on ethereum,
polygon, base, solana, and tron (EVM chains surface as
evminaddresses_geography).
Best Practices
1. Filter on measurability, and say which grain you used
2. Never drop the x_* tiers from your denominator
SUM(usd) without a measurability filter reconciles to total transfer volume. If you only ever
query the measurable slice, you can’t say what share of activity it represents.
3. Use geography keys exactly as stored
Corridor tables use ISO alpha-2 codes (US, SG) plus the special keys listed above.
addresses_geography.primary_country uses short-form names (United States, South Korea).
4. Prefer conviction over a bare score threshold (addresses)
5. Case sensitivity
Address case varies by chain — preserve case when joining onaddress for Solana/Tron.
Support & Updates
For questions, data quality issues, or feature requests related to geographic intelligence:- Slack: #data-quality or #ask-data-team
- Email: [email protected]
Next Steps
Example Queries
Corridor matrices, country flow balances, payment-purpose geography
Geographic Intelligence
Back to the geographic intelligence overview