N 40° / W 74°
U.S. Customs Automated Broker Interface / CATAIR

Every spec. Every record.
One agent that ships compliance risk code.

100 official CBP specification PDFs, 10,000+ data elements, and every CATAIR chapter — ingested, structured, and grounded. Ask it anything. Generate filer-grade Python on demand. Every answer quotes the source verbatim.

T+16h From conversation to live API in sixteen hours — 336 tests green · 8 modules shipped · 3 jurisdictions scoped. See how this came together →
Try the live demo See the architecture
Live corpus manifest
Source docs
Official CBP specification PDFs
Verbatim chunks
Indexed with e5-large embeddings
Data elements
Typed Pydantic-ready fields
Records
Layouts across modules
Error codes
From Appendix S, T, and beyond
Sprint status 336 tests green 8 modules shipped 3 jurisdictions scoped Full T+16h roadmap →
Interactive demo

Ask it. Verbatim answers, cited to the PDF.

Grounded in the same specs your broker has been photocopying for 30 years — just faster, and never wrong about a record position.

catair.atwenture.com · /public/ask
Claude Opus · Grounded Retrieval
$ ready
Ask any question about US Customs ABI/CATAIR. Try an example below, or type your own. Every answer cites its source PDF + page.
Architecture

From scanned spec to production code in three stages.

No retraining. No fine-tuning. Just disciplined retrieval over a typed knowledge graph — and hard rules that forbid paraphrasing.

/ 01 INGEST
OCR the entire CATAIR corpus.
Every CBP publication runs through vision-grade OCR. Record-layout tables are preserved as structured markdown — positions, lengths, and codes remain byte-exact. No summaries, no reformatting.
/ 02 STRUCTURE
Type everything into an ontology.
Ten strict entity types — Module, Record, DataElement, CodeTable, ErrorCode, BusinessRule, Workflow — extracted and linked. The knowledge becomes a typed graph, not a bag of embeddings.
/ 03 GROUND
Answer with source, or don't answer.
Every question retrieves the top verbatim chunks. The LLM is forced to cite source:page inline or return "not found in sources." The builder-agent can quote exact field layouts into generated Pydantic models.
Why this changes the game

Four things your current stack can't do.

00 / Verbatim or silent
No paraphrased field names. Ever.
CBP rejects a filing for a single off-by-one position. This agent refuses to paraphrase — field names, lengths, and codes are quoted from the PDF byte-for-byte, or the answer returns "not found."
Enforced in the system prompt and verified against source chunks
01 / Complete corpus
Every PGA. Every Appendix.
No blind spots.
TTB, EPA, FDA, APHIS, NHTSA, NMFS, ATF, CPSC, FWS — every Partner Government Agency message set is indexed alongside the core ACE/ABI chapters. Appendix code tables become typed enums.
100 official CBP PDFs · 10,000+ data elements
02 / Typed graph
A knowledge graph your code can import.
Records relate to CodeTables relate to BusinessRules relate to ErrorCodes. The ontology mirrors 1:1 to Python packages. One module in the corpus = one Pydantic package in the generated filer.
10 entity types · typed edges · MCP-exposed
03 / Code, not chat
Hands a builder-agent the exact layout — it ships.
MCP tool catair_get_record(slug) returns every DataElement with position, length, and validator hints. A Claude-Code subagent generates the serializer, the parser, the Pydantic model, and the tests against Appendix examples.
From spec-to-filer in one agent session
Moat expansion · CBAM module scoped · EU UK Green Lane (UKIMS) scoped MX VUCEM research complete 4-jurisdiction plan →
T+16h · Progress Report

See how this came together.

Sixteen hours from a 21:00 conversation to a live production API. The roadmap lays out the sprint timeline, the $5M-ARR revenue math from a single customer network, the three real killers, and the phased path from first sandbox submission to 4-jurisdiction coverage.

16h
conversation → deployable software
336
tests green, first-run
$5M
ARR math, single customer network
4
jurisdictions on the map
Sample output

This is what the agent actually knows about your records.

A real extraction from eBond Create/Update (CB/CX) V1.9. Byte-exact — pulled from the CBP PDF, page 23. Every row maps to a Pydantic field.

Module · ebond · Record Identifier 10
Bond Header Record
Mandatory · Input/Output
Data Element Position Class Desig Description
Control Identifier1–22ANMMust always equal "10"
Bond Designation Type Code31ANMB = new basic · A = additional · V = void · C = adjust · U = substitute · E = supersede · T = terminate · R = rider
Bond Type Code41NMNumeric bond type from CBP 301 taxonomy
Bond Activity Code5–73ANCRequired when Bond Type > 0; indicates the activity under which the bond secures
Bond Amount8–1710NCWhole dollars; right-justified, zero-filled; total bond value
Entry Filer Code18–203ANMThree-character filer code assigned by CBP
Entry Number21–299ANMSeven-digit serial + one check digit, modulus 11
Importer of Record Number30–4112ANMIRS EIN · SSN · CBP-assigned number per Appendix 2

Ship customs code in hours, not months.

Walk through the Ops UI — the operator surface where brokers stage filings, watch audit chains, and diff compliance outputs. Live demo environment, no signup. Or request a tenant for your brokerage.