How it works
Methodology
How LandedGrid ingests official tariff data, validates it, versions it, evaluates duty formulas, values goods, converts currencies and decides when to say “unresolved” instead of giving a number.
Updated 2026-09-22
Principles
- Every government charge comes from an official source, carries its dataset version and legal basis, and can be traced from the result line back to that source.
- Anything that cannot be verified from the data held is reported as unresolved. No component is ever silently zero, and no total is given while a material component is unresolved.
- Conditions create scenarios, not assumptions. A preference, a quota or an end-use suspension is shown as a separate scenario with its assumption written out.
- Freshness is computed from the last verification against the authority. A dataset older than its allowed age is labelled stale and, beyond a second limit, disabled.
Ingestion pipeline
Each source has an adapter that discovers the current upstream version, downloads the official files over an allowlisted HTTPS host with size and time limits, stores an immutable raw snapshot with its checksum, parses it into a normalised model, and validates it: schema checks, structural anomaly checks (record-count swings, missing chapters, sudden zero rates, unparseable formulas, encoding damage, HTML served as data), a diff against the active version, and fixed golden checks. Only a passing dataset is written as a new version; promotion is an atomic pointer swap, and rollback is the same swap in reverse. Test fixtures are marked as such and are invisible in production mode.
Nomenclature and measures
Tariff lines hold the national code, its ancestors, units and a list of measures: base duty, preferences, suspensions, quota rates, additional tariffs, anti-dumping and countervailing duties, VAT and excise where the tariff carries them. Each measure has an origin scope, validity dates, conditions, an additional code where relevant and the rate text exactly as published. Rates are parsed into a formula tree — ad valorem, specific per unit, compound, lower-of, higher-of, minimum, maximum, threshold, tiered — and anything outside that grammar is kept as non-calculable with the original wording.
Valuation
The invoice is converted to the destination’s valuation basis using the Incoterm and the transport amounts you supply, with statutory additions and deductions. Where the transaction value method is not available, the calculation stops at “valuation review required”.
Exchange rates
Official customs rates are ingested where they are published in machine-readable form and applied by their legal period. User-supplied rates are labelled as such. See the exchange-rate guide.
Arithmetic and rounding
All amounts are decimal, never binary floating point. Rounding rules are recorded per jurisdiction and per component (for example Japan’s truncation to ¥1,000 for the base and ¥100 for the tax) and shown in each line’s explanation.
Audit trail
Every result carries a calculation ID, engine version, effective date, the inputs, the dataset versions, rule identifiers, exchange rates, rounding rules and assumptions, plus a hash of the data bundle. The same inputs against the same dataset versions reproduce the result exactly, and archived versions allow an old calculation to be reproduced.
Statuses
Three separate vocabularies are shown and never merged: calculation coverage (full verified, verified with user input, conditional, needs information, special review required, unsupported), data freshness (current, update available, stale, source unavailable, validation failed, permission required, licence required, access required, not ingested) and classification (confirmed by inputs, likely, ambiguous, more information required, ruling recommended, user-provided code). The certified state of each jurisdiction is on the coverage page.
What LandedGrid does not do
It does not issue classifications, rulings or legal advice. It does not estimate carrier, broker or terminal charges. It does not evaluate product-specific rules of origin. It does not use large language models for any monetary calculation; language models are not part of the calculation engine at all.