name: trade-chokepoint description: > Screen export/import lanes by hunting supply-chain chokepoints. Use when the user wants to decide which goods to trade, from which origin to which destination, and whether the margin is defensible. Trigger on: "should I import X", "trade lane", "sourcing", "export/import opportunity", "landed cost", "is this product worth trading", "which corridor", or evaluating a supplier/product for resale across borders. Adapts the Serenity supply-chain bottleneck method for physical trade, with landed-cost and customs/regulatory risk built in.
Trade-Chokepoint
A discipline for deciding whether an export/import lane is worth trading. The thesis: durable trade margin does not come from generic buy-low-sell-high — it comes from owning a scarce layer in the chain that competitors cannot easily replicate. This skill finds that layer, prices it against the fully landed cost, and scores it net of real trade risk.
When to use
- Evaluating a product + origin + destination as a potential lane
- Comparing several sourcing options for the same destination demand
- Deciding pass / watch / pilot shipment / commit on a deal
- Pressure-testing a lane a counterparty is pitching
Core principle
Separate two questions and never conflate them:
- Is there a real chokepoint? (scarcity that persists — certification, capacity, exclusivity, spec-lock)
- Can YOU capture it? (sourcing defensibility + landed-cost margin after duty, VAT, freight, finance)
A lane can have a genuine chokepoint that you cannot capture, and a capturable position that is too thin after landed cost. You need both legs.
Workflow
- Scope — fix product, HS code, origin, destination, Incoterm basis.
- Demand inflection — what is forcing destination import demand up?
- Map the chain — raw material → processing → component → finished → certification → freight → clearance → buyer.
- Locate the chokepoint — mark the scarce layer; state in plain language why it persists.
- Build the landed cost — fill the worksheet in
assets/trade-thesis-template.md. Duty is a true cost; VAT/GST is usually recoverable but still locks cash — confirm recoverability. - Score — fill
assets/trade-chokepoint-scorecard.json(8 factors, 8 penalties, 0-5 each). Scoremargin_arbitrageagainst the landed cost, never the FOB gap. - Gather evidence — minimum two concrete points; prefer customs/trade data and signed quotes over supplier marketing. Treat broker pitches as leads needing stronger sources.
- Compute — run
python scripts/score_lane.py <filled.json>for the weighted net + verdict. - Pre-mortem — fill "what could weaken the view" (mandatory). Empty = not done.
- Decide — Pass / Watch / Pilot / Commit, with next research actions.
Verdict bands (net weighted score)
- >= 2.5 Commit — defensible chokepoint, build a standing lane
- 1.5–2.5 Pilot — trial shipment, validate landed cost live
- 0.5–1.5 Watch — thin or unproven; wait for a catalyst
- < 0.5 Pass — no durable edge after penalties
Boundaries
- Research and screening support only — not a customs broker, not legal/tax advice on a specific consignment. Confirm classification, licensing (e.g. KSA SABER/SASO, India BIS/FSSAI), and treaty relief with a qualified advisor before committing capital.
- The scorecard ranks opportunity. Execution (LC terms, contracts, clearance) is a separate step.
Comparing lanes
To rank several lanes against each other, score each into its own JSON, then:
python scripts/compare_lanes.py lane1.json lane2.json # explicit files
python scripts/compare_lanes.py examples/ # all *.json in a folder
python scripts/compare_lanes.py examples/ --sort margin # rank by net|factors|penalties|margin
python scripts/compare_lanes.py examples/ --top 3 # shortlist the top N after sorting
python scripts/compare_lanes.py examples/ --format md # force output: plain | md
python scripts/compare_lanes.py examples/ --md # shorthand for --format md
python scripts/compare_lanes.py examples/ --out memo.md # write to a file (md unless --format plain)
Flags compose: --sort margin --top 3 --out shortlist.md ranks by margin, keeps the best three,
and writes a markdown memo. --out defaults to markdown; add --format plain to write plain text.
The ranking shows where the opportunity is; the Flags column shows whether a lane has earned the right to be acted on. A lane can rank #1 on net yet still carry gates (too little evidence, no pre-mortem). Resolve gates before committing capital, regardless of rank.
India edition
For lanes into or out of India, prefer the localised pack — it wires in export incentive schemes (RoDTEP, Drawback, GST refund, Advance Auth/EPCG), FTA rules-of-origin (India–UAE CEPA, ECTA, India–UK FTA), GI-tagged origin-locked goods, and BIS/QCO on the import side:
assets/trade-chokepoint-scorecard-india.json— India-adapted scorecard (same scripts, adds anindia_contextblock)assets/india-landed-cost-worksheet.md— landed cost both directions, with scheme + FTA linesassets/india-lane-screener-onepager.md— non-technical one-page screener (print to PDF; the free hook)assets/india-lane-screener.csv— Google-Sheets import that auto-computes net + verdictexamples/india-agrochem-uae.json— worked India→UAE CEPA lane
Score margin_arbitrage against the landed cost net of scheme benefits and FTA relief, not the FOB gap.
Files
assets/trade-chokepoint-scorecard.json— scoring template (factors, penalties, weights, evidence)assets/trade-thesis-template.md— lane memo + landed-cost worksheetscripts/score_lane.py— single-lane weighted net score + verdictscripts/compare_lanes.py— multi-lane ranking, plain or markdown (--md/--out/--top/--format)examples/— three worked lanes spanning Commit / Watch / Passtests/— pytest suite for the scoring core, renderers, and CLI; runpython -m pytest tests/ -q