Options 1 and 2, opened up: the exact paperwork (field by field, from the Federal Register), who is legally allowed to press submit, what AI builds versus what you do at 11pm, and the website that runs the whole operation.
Your question — "would I file it for them?" — has a precise answer, and a January 2026 CBP ruling (H350722) drew the line for AI software specifically. Three lanes:
The broker is your customer and remains the legal decision-maker; your software is their power tool. Cleanest lane — it's how Cervo AI operates legally today. The broker's license, bond, and POA cover everything.
An importer may always do their own customs work, no license needed. Your software assists, suggests, formats — they review, decide, and submit in their own account. You never touch credentials.
Filing on another party's behalf — or logging into their ACE/Pay.gov with their passwords — is unlicensed customs business under 19 U.S.C. § 1641. Clients will offer their passwords. Decline every time.
| Activity | Ruling |
|---|---|
| Referral platform matching importers to licensed brokers | Not customs business — cleared |
| 6-digit HTS suggestions (not the full 10-digit) | Not customs business — cleared |
| AI classification tool, separate from filing, with disclaimers, importer decides | Conditional — keep the human decision with the importer/broker |
| OCR that extracts & decides what data goes on an entry, for others | Customs business — broker required |
| Filing Form 5106 / submitting anything to CBP for others | Customs business — broker required |
| Design rule that keeps you safe: AI suggests → the licensed party (or the importer, for their own goods) decides & submits. Get a one-time opinion letter from a trade attorney on the final product design (~$1–2k, worth it). | |
And the intuition to correct: importers hand total filing authority to strangers every day — it's called a customs broker with a Power of Attorney, the most routine document in the industry. They just can't hand it to you. So one handshake with one licensed broker gives your operation the legal wrapper for every "do it for me" client, with you keeping the software and the sales relationship.
Here is the entire government requirement, verified from the Federal Register (IFR 2026-12669) and CBP's July 8 bulletin. This is the "database" you asked for.
The IMDW — International Mail Duty Worksheet · all 14 fields| # | Field | Where your app gets it |
|---|---|---|
| 1 | Filer Code (3-char, CBP-assigned) | Client onboarding — stored once |
| 2 | Bond Number (must match ACE eBond) | Client onboarding — stored once |
| 3 | Description of Merchandise | Order export → AI normalization |
| 4 | Country of Origin | Order/supplier data → validated |
| 5 | 10-digit HTSUS Classification | The AI heart — see pipeline |
| 6 | Quantity / Weight (only if duty rate is specific) | Order export; rule-triggered |
| 7 | Duty Rate | HTS database lookup — deterministic |
| 8 | Value | Order export |
| 9 | Total Duty Owed | Deterministic math — never AI |
| 10 | Carrier | Shipment data |
| 11 | Flight / Conveyance Number | Shipment data |
| 12 | Tracking Number (foreign postal operator) | Shipment data |
| 13 | Arrival Port (CBP port code) | Shipment data → port-code lookup |
| 14 | Arrival Date | Shipment data |
[FilerCode]_[Month]_[Year]_Payment — e.g. 12345_08_2026_PaymentCBPDM@cbp.dhs.gov (email)IntlMailDutyHelp@cbp.dhs.govIntlMailDutyHelp@cbp.dhs.gov to obtain (do this Thursday)Oct 22, 2026: goods with Chapter 99 duties (= most China-origin merchandise), PGA requirements, or FTA claims can no longer use the spreadsheet — they must use Entry Type 13, the electronic filing that hits ACE production Sept 22 (test environment July 24). ET13 files via the ACE portal or ABI, and the technical specs (CATAIR guides, INT-057 / CBP-290) are already published. Translation: the spreadsheet is your August wedge; the ET13 integration — built with your broker partner — is the durable, hard-to-displace product. The migration moment is your upsell moment.
Yes — AI produces the monthly output itself. Here's the assembly line, with the model tier that runs each station and what it costs.
Client's order/shipment export lands in the web app — Shopify/Etsy CSV, warehouse spreadsheet, or email drop. Column-mapper remembers each client's format after the first month.
Small cheap model turns messy product rows ("blu wmns linen drs sz M") into clean structured fields. Pennies per thousand lines.
The heart. For each new product: proposes the 10-digit code with reasoning, HTSUS chapter notes, and citations to CBP binding rulings, plus a confidence score. High confidence → through. Low confidence → your 11pm review queue. The memo bank is the moat: every decision is remembered, so month 2 runs ~90% from memory and your marginal cost collapses while price stays. In the self-serve lane the client confirms each new classification (H350722-safe); in the broker lane the broker does.
Rate lookup from the HTS database, ad valorem/specific calc, totals. Code, not language models. Nothing that goes to the government is arithmetic'd by an LLM.
Every line checked against the 14-field spec: filer code format, bond on file, port codes, conditional quantity/weight rule, exclusion screens (AD/CVD, quota, and — after Oct 22 — Ch. 98/99, PGA, FTA → routed to ET13/formal instead).
The finished IMDW Excel (CBP's exact template), correctly named; a Pay.gov payment checklist; and a per-line audit log — who/what classified it, on what basis, confirmed by whom. The audit trail is what a broker buys.
| Call type | Tier | Volume (1,000-line client) | Est. cost/mo |
|---|---|---|---|
| Extraction/normalization | Haiku 4.5 | ~1,000 lines, batched | < $1 |
| Classification — novel SKUs | Sonnet 4.6 | ~300 novel month 1 → ~30 by month 3 | $3–6 → < $1 |
| Review-queue explanations | Haiku 4.5 | ~50 memos | < $1 |
| Duty calc, validation, file build | Code ($0) | everything | $0 |
| Total AI cost per client per month (vs. $500–1,500 price) | ≈ $5–10 | ||
Design rules baked in: memo-bank first, AI only for novel items (lazy generation); batched calls; cached system prompt; per-client spend cap; and the app still works with the API off — memory + manual entry. That's a >98% gross-margin engine.
The surprise: the CAPE declaration itself is a CSV with one column. The money is lost in everything around it — 15% of declarations get rejected, and only ~6% of affected importers even had ACE accounts when this started.
The actual fileEntry Number — any variation rejects the whole file9903.01.xx / 9903.02.xx lines only — 9903.88 (Section 301) look similar and are not refundable hereClient (or their broker) pulls the standard ES-003 report from ACE using your click-by-click runbook and uploads it. Your parser finds 9903.01/9903.02 lines, computes the refund estimate, flags the fakes. No ACE access? Playbook: broker provides 7501 copies + ES-003; meanwhile spin up their ACE account (modernized April 2026 — same-session if their Form 5106 contact email is current).
Every entry lands in a zone (table below). This is the report that makes the phone call urgent and honest.
Form 5106 contact fix → ACE account → SF-3881 ACH refund enrollment (bank signs, 7–10 business days — no ACH, no money; ~1,880 refund batches were stuck exactly here) → optional Form 4811 if refunds should route to a designee.
Your tool emits the perfect CSV; the client uploads it in their ACE session with you on a screen-share. Rejection linter runs first (the 9 known causes). They press the button. Flat $500–2,000 vs. a market at $125–350/entry or 3–8% contingency.
When a broker must file, it generally must be the broker who filed the original entry (the filer code is baked into the entry number). So "do-it-for-me" CAPE clients usually route to their own broker, not your partner. Your partner broker's lane is the protest tier (Zone 3) and fresh work. Your software + runbook is the product; the screen-share is the service.
| Zone | Entry status | Channel | Deadline |
|---|---|---|---|
| 1 | Not yet liquidated | CAPE Phase 1 | File before liquidation |
| 2 | Liquidated ≤ 80 days ago | CAPE Phase 1 | Sliding daily window |
| 3 | Liquidated 81–180 days ago | Protest (Form 19) → broker/attorney | Day 180 — hard cutoff. Jan-2026 liquidations expire THIS MONTH |
| 4 | Liquidated 181 days–2 yrs | CIT suit / pending class action | 2-year statute |
| 5 | Beyond 2 years | — | Foreclosed |
Phase 3 (finally-liquidated entries — where small importers disproportionately sit) is programming for end-of-July launch but currently covers only the ~3,700 companies that sued at the CIT; a class action to cover everyone else is pending, and the government is appealing. Don't promise Zone 4 outcomes — triage into Zones 1–3 and refer the rest.
Your default platform — Cloudflare — fits this exactly, and I build all of it with you: schema, pipeline, prompts, site.
CLOUDFLARE STACK
Pages/Workers ......... app + client portal (login via magic link)
D1 (SQLite) ........... the operating database (schema below)
R2 .................... document vault (exports, 7501s, generated IMDWs, audit PDFs)
Queues ................ monthly batch jobs, classification runs
Workers AI / API ...... Haiku + Sonnet calls (tiered, capped, cached)
Stripe ................ $500–1,500/mo subscriptions + flat rescue fees
D1 SCHEMA (the operating database)
clients brokerage / importer, filer_code, bond_no, tier, POA-path
products THE MEMO BANK — sku, description, hts10, confidence,
ruling_citations, confirmed_by, confirmed_at
shipments carrier, conveyance, tracking, port, arrival_date
line_items shipment → product, value, qty/weight, duty_rate, duty
filings type (IMDW | ET13 | CAPE-kit), period, file_hash,
status: draft → review → delivered → client-submitted
refund_cases entries, zones, es003_import, deadlines, ach_status
payments Stripe refs, invoices
audit_log every AI suggestion + every human confirmation — the
thing a broker actually buys
Degradation rule: with the AI API off, the app still works — memo bank + manual classification entry. AI is margin, never a single point of failure.
| Runtime AI (in the product) | Me, build-time (your CTO-in-a-box) | Only you |
|---|---|---|
| Extraction & normalization · classification proposals with citations · review memos · client-email drafts | The entire codebase & schema · classification prompt + memo-bank design · ES-003 parser · rejection linter · runbooks & screen-share scripts · sales one-pagers · this page | Read the UPS agreement · the 20 calls · classification sign-off until the memo bank is trained · the broker handshake · the attorney opinion letter · pressing nothing on anyone else's behalf |
Process goes live Friday. 20 calls off the CBP broker CSV. Email IntlMailDutyHelp@cbp.dhs.gov for the official template + Pay.gov registration steps. Bar: 3 paid/committed pilots.
First IMDW cycle (July arrivals due Aug 7). I generate the worksheets with you reviewing every line — no app yet, just the pipeline run by hand+AI. Cash arrives. Run refund scans as the second offer.
Weekend build of the portal on Cloudflare: intake → memo bank → IMDW generator → audit log. NimbleLogic verdict Aug 31 — on evidence, in parallel.
ET13 hits ACE production Sep 22; Ch-99/PGA goods forced off the spreadsheet Oct 22 — your upsell moment. Build the ET13 path with your broker partner. Attorney opinion letter on the self-serve lane.
Option 2 is the sprint: mostly deterministic software, urgent deadlines, fast flat-fee cash, and it fills your pipeline with importers. Option 1 is the engine: recurring monthly filings where the memo bank compounds and ET13 integration makes you hard to remove. Same stack, same buyer list, same phone calls. Calls first. Code second.