Skip to content
Every charge traces to a tariff line in a dated contract, or the document does not render

The standard

Twelve rules, written as refusals

A capability list is a description of a good day. These are the things that hold on a bad one — the last week before a vessel cut-off, with an invoice that does not reconcile and a customer on the phone.

  1. 01

    The model never produces an amount

    A figure reaches a rendered document from a charge line, a declaration line or a computation the engine performed — or it does not appear. A number a drafting model wrote into a cargo description or a claim letter blocks the render. This is enforced by a validator, and structurally as well: the build fails if the computation layer can even import the model client.

    The render is blocked and the job names the figure that had no charge line behind it.

  2. 02

    The model never chooses a heading that files

    It proposes a tariff classification with its reasoning and the competing candidates. A heading it proposed cannot reach a declaration line until a named person confirms it, and the confirmation carries who and when. A declaration built from an unconfirmed classification is refused.

    The declaration is refused until a named person confirms the heading.

  3. 03

    Nothing renders if it does not tie

    Charge lines sum to the stated total, cargo weights to the manifest gross, tare plus cargo to the declared verified mass, duty heads to the declared total, revenue less cost to the stated margin. A document that fails any of those is refused naming the container and the amount. There is no bypass flag, and the build fails if somebody adds one.

    The job ends naming the container and the amount it is out by. Nothing renders.

  4. 04

    Chargeable weight is the mode’s own rule

    Air on a divisor of 6000, courier on 5000, less-than-container ocean on weight-or-measure, a full container per box. The engine resolves the rule rather than applying a configured constant, and records which quantity won so a rate dispute has an answer beside the figure.

    A mode with no rule defined raises rather than falling back to gross weight.

  5. 05

    Tariffs are data, not code

    Rate contracts, surcharge formulas, free-time rules and duty rates are effective-dated rows from reviewed, checksummed sources. Every charge records the contract that produced it. A lane with no contract in force on the day is refused, never rated from an expired sheet.

    A lane with no contract in force on the day is refused, not rated from the last one.

  6. 06

    Every amount carries its currency; every conversion its source

    There are no bare amounts. A conversion takes an explicit rate naming its source and effective date, and those travel onto the row produced. One shipment can carry the carrier’s rate, the bank’s and the rate notified for customs without any being wrong. A date with no rate on file is refused rather than approximated.

    A conversion with no rate source raises, and a date with no rate on file is refused.

  7. 07

    Exact decimals, everywhere

    No floating-point number touches a charge, a weight or a duty figure — in the database, in the engine or in the browser. The arithmetic layer raises on a float rather than coercing it, because by then the precision is already gone and the fix belongs upstream.

    The arithmetic layer raises on a float rather than coercing it, and the build fails on a floating-point money column.

  8. 08

    Nothing is dropped silently

    Parsed plus rejected plus duplicate has to equal the rows submitted. An unrecognised format is an error, not an empty result, and every rejected row is kept exactly as the file wrote it with its reason — on a screen, not in a log.

    An unrecognised format is an error naming what it could not identify, never an empty result.

  9. 09

    Event time is not arrival time

    Free time, arrival estimates and exceptions compute from when a thing happened, not from when the message about it arrived. Both are kept. The two differ by days, and the difference is billable.

    Accrual and exception logic read the event timestamp; a late message does not move the clock.

  10. 10

    A document of title has per-original state

    Issuing a bill of lading mints its originals as rows with their own state. A second issuance is refused while any is neither surrendered nor voided, and an amendment voids the prior set explicitly. The chain is auditable end to end. Until issued, every export is watermarked a draft.

    A second issuance is refused naming the originals still outstanding.

  11. 11

    Screening blocks; it does not report

    Consignee, notify party, vessel and port are screened at booking against the published lists, with the list version recorded. A match stops the booking. The override requires an operations manager and a written reason, both audited.

    The booking stops. An override needs an operations manager and a written reason, both audited.

  12. 12

    The organisation is the tenant, at the query

    Scoping is applied where the query is built rather than at each endpoint, so it has one place it can be forgotten rather than one per route. A read, list, search or download across organisations answers as though the record does not exist — because a refusal would confirm it does, and a real shipment reference is a fact about another forwarder’s customer.

    A cross-organisation read answers 404, and a build in which a query can be made without a scope fails.

Hold us to these

Every rule above is falsifiable. If the software renders a document whose figures do not tie, files a declaration from a classification nobody confirmed, or issues a bill of lading while an original is outstanding, it is not working as described — and we would rather hear about it than have it discovered at a cut-off.

Take any one of these and try to break it

That is what the list is for. If one of them turns out to be incompatible with something the product needs to do, this page changes in public and says why — the alternative is a rule that quietly stopped applying.

Get in touch

Talk to the people building it

No chatbot and no ticket queue. Tell us what your operation actually looks like — the modes you move, whether you clear your own customs, and roughly how many shipments a month — and someone who works on the software will reply.

info@legosphere.com

Please keep customer names, IECs, GSTINs, container numbers and commercial invoices out of this box — it is an ordinary enquiry form, not a channel for a live shipment.