# Swizz Global AG — Sourcing & Bid System

**Owner:** Swizz Global AG · Sihlbruggstrasse 109, 6340 Baar/ZG, Switzerland · CHE-340.397.627
**Purpose:** Central operating system for the commodity sourcing desk — offer catalogue, deal pipeline, counterparty records, pricing, and trade-document generation. Swizz operates as an **intermediary desk** working both the buy-side (sourcing from suppliers) and sell-side (issuing offers to buyers) under NCND / IMFPA protection.

> **Status classification (project instructions):** This is an internal operating tool, not legal advice. All trade documents produced here are drafts. Before any SPA, SBLC/DLC, or Performance Bond is signed or issued, obtain **formal legal review** and complete **KYC/AML + sanctions screening** (see §6).

---

## 1. Folder structure

```
Sourcing/
├── README_Sourcing_System.md      ← this file (start here)
├── 01_Offers/                     ← master offer catalogue (SCOs) + archived PDFs
│   ├── SCO-2026-001_Copper-Cathode.md / .pdf
│   ├── SCO-2026-002_Granular-Sulphur.md / .pdf
│   └── SCO-2026-003_Urea-46.md / .pdf
├── 02_Bid-System/                 ← the working tools
│   ├── Swizz_Bid_System.html      ← dashboard (open in browser)
│   └── Swizz_Bid_System_Tracker.xlsx  ← workbook (records / sharing)
├── 03_Templates/                  ← reusable trade documents
│   ├── NCNDA-IMFPA_Template.md
│   ├── ICPO_Template.md
│   ├── FCO_Template.md
│   ├── SPA_Checklist.md
│   └── KYC-AML_Onboarding_Checklist.md
├── 04_Deals/                      ← one folder per live deal
│   └── _DEAL-TEMPLATE/            ← copy this for each new deal
├── 05_Buyers/                     ← buyer KYC / POF records (one folder per buyer)
├── 06_Suppliers/                  ← supplier / source records (one folder per supplier)
├── 07_Backend-Supabase/           ← optional cloud backend: schema.sql, edge function, SETUP.md
└── Architecture_Recommendation.md ← scaling plan + free data-source decision
```

---

## 2. ID & naming system

Every record has a short, sortable ID. **Never rename an ID once issued** — it is the permanent key that links the folder, the Excel row, and the dashboard entry.

| Record type | ID format          | Example         | Notes |
|-------------|--------------------|-----------------|-------|
| Offer (SCO) | `SCO-YYYY-NNN`     | `SCO-2026-001`  | NNN = sequential per year |
| Deal        | `DL-YYYY-NNN`      | `DL-2026-001`   | One per buyer×product opportunity |
| Buyer       | `BUY-NNN`          | `BUY-001`       | Continuous sequence |
| Supplier    | `SUP-NNN`          | `SUP-001`       | Continuous sequence |

**Product codes** (for tagging and filtering): `CU-CATH` (Copper Cathode) · `SUL-GRAN` (Granular Sulphur) · `UREA-46` (Urea 46%). Add new codes in the same short, hyphenated style (e.g. `EN590`, `JETA1`, `AUS-DORE`).

### File naming inside a deal folder
```
DL-YYYY-NNN_DOCTYPE_YYYYMMDD_vN.ext
```
Example: `DL-2026-001_ICPO_20260701_v1.pdf`

**DOCTYPE** vocabulary (use exactly these): `NCNDA`, `IMFPA`, `ICPO`, `POF`, `FCO`, `SPA`, `SBLC`, `DLC`, `PB` (performance bond), `PL` (packing list), `BL` (bill of lading), `SGS`, `CI` (commercial invoice), `COO` (certificate of origin), `CORR` (correspondence).

**Rules:** lowercase extensions · dates as `YYYYMMDD` · version every revision (`_v1`, `_v2`) — never overwrite a signed document · one deal = one folder in `04_Deals/`.

### New-deal quick start
1. Copy `04_Deals/_DEAL-TEMPLATE/` → rename to the new deal ID (e.g. `DL-2026-001_ACME-Copper`).
2. Add the deal as a row in the Excel **Deal Pipeline** tab and a card in the HTML dashboard.
3. Drop all correspondence and documents into the deal folder using the naming rule above.

---

## 3. Deal pipeline (10 stages)

The same stage list drives the dashboard board, the Excel tracker, and the deal folders. As an intermediary desk, buy-side and sell-side legs are tracked inside one deal.

| # | Stage                       | Gate to advance |
|---|-----------------------------|-----------------|
| 1 | Lead / Inquiry              | Serious buyer or supplier identified |
| 2 | NCNDA / IMFPA signed        | Signed by all parties in the chain |
| 3 | Buyer ICPO + POF received   | ICPO on letterhead **and** verifiable Proof of Funds |
| 4 | Supplier sourced (buy-side) | Supplier FCO / allocation confirmed, cost locked |
| 5 | FCO issued to buyer         | Full Corporate Offer sent, pricing confirmed |
| 6 | SPA executed                | Signed Sales & Purchase Agreement |
| 7 | SBLC / DLC operative        | Financial instrument verified by bank |
| 8 | Performance Bond issued     | 2% PB posted in buyer's favour |
| 9 | Shipment / in transit       | Cargo loaded, SGS passed, docs presented |
| 10| Delivered / Closed-Won      | Payment released, commission paid |
| — | **Lost / Dead**             | Archive with reason code |

---

## 4. How the two tools work together

- **HTML dashboard** (`Swizz_Bid_System.html`) — day-to-day cockpit. Runs entirely offline in your browser; data is saved in that browser (localStorage). Use it to move deals across the pipeline, log buyers/suppliers, run pricing/margin numbers, and generate draft documents. Export to CSV/JSON to back up or hand to the workbook.
- **Excel workbook** (`Swizz_Bid_System_Tracker.xlsx`) — system of record and sharing format. Use it for the durable log, formula-based pricing, and anything you need to email or archive. Dropdowns enforce the stage/status vocabulary.

Keep IDs identical across both. The dashboard is the fast layer; the workbook is the archive layer.

**Cloud backend (optional, Stage 1):** for multi-device / multi-user and server-side price keys, the dashboard has a **Backend** tab that connects to a free **Supabase** database (Postgres + login + a scheduled price fetcher). Local mode (this browser only) works without it. Any commodity is added as one `commodities` row and priced automatically on the next run. Setup: `07_Backend-Supabase/SETUP.md`. Rationale + scaling/data-source decision: `Architecture_Recommendation.md`.

---

## 5. Pricing logic (built into both tools)

- **Copper Cathode** — priced as a **discount to LME cash**. Sell price/MT = `LME × (1 − sell_discount)`. Buy cost/MT = `LME × (1 − buy_discount)`. Intermediary margin/MT = `LME × (buy_discount − sell_discount)`. Deal margin = margin/MT × MT. *(Buy at the deeper discount, sell at the shallower one.)*
- **Granular Sulphur** — fixed tier price (580 / 550 / 520 USD/MT by volume). Margin/MT = sell tier − buy cost. 
- **Urea 46%** — price on request (volatile); enter confirmed daily price manually.
- **Commission model** — where Swizz earns a per-MT commission via IMFPA instead of a price spread, use `commission/MT × MT` (dashboard supports both models).

### Live benchmark feed (dashboard)
The dashboard carries **benchmark prices** for all three products, driving the pricing calculators and the deal-form helpers (auto-fill sell/buy). Set them on the Pricing tab → *Benchmark prices*; copper also shows on the Dashboard bar with a ⟳ Refresh button.
- **Copper — live.** A metals.dev API key is embedded, so copper auto-fetches on open (if the stored price is >3h old) and via Refresh / Fetch live — LME copper in USD/MT (CORS-enabled, ≤60s, 100 calls/month). Override or rotate the key in the field provided.
- **Sulphur & Urea — manual.** metals.dev carries no sulphur or urea; those benchmarks live in paid trade services (Argus, ICIS, CRU, Fastmarkets, CME urea swaps). Enter the latest figure manually, or point the Advanced adapter (custom URL + JSON path + unit) at a licensed feed.

**Basis caveat:** metals.dev copper is an LME *reference*, not the official LME **cash settlement** the SCO prices off — fine for indicative margining; confirm exact settlement before contract pricing. Official real-time LME is licensed/paid and cannot be redistributed.

**Security:** an API key is embedded in the HTML for convenience — **treat the file as sensitive**, don't publicly host or share it, and rotate the key at metals.dev if exposed. Keys are excluded from JSON backups. Excel keeps prices manual by design.

---

## 6. Compliance guardrails — read before every deal

This SCO → ICPO → SBLC/DLC → 2% PB → NCND format is standard in commodity broking, **but it is also the exact template most often used in non-performing "paper" deals and advance-fee fraud.** Protect Swizz's name and money:

- **KYC/AML on every counterparty** before sharing an FCO or signing anything — complete `03_Templates/KYC-AML_Onboarding_Checklist.md`. Verify legal entity, UBO, registration, and bank.
- **Sanctions & origin screening** — screen every counterparty, vessel, and bank against EU/SECO (Switzerland), OFAC, and UN lists. "Non-sanctioned origin" is a claim to verify, not accept.
- **Proof of Funds discipline** — treat unverified RWA/BCL/POF as worthless. Confirm bank-to-bank where possible. Be wary of buyers who demand the seller move first (PB before operative LC) with no verifiable funds.
- **No upfront fees** — legitimate deals do not require the buyer or Swizz to pay advance "allocation", "tank", or "storage" fees to release product. This is the classic fraud pattern.
- **Protect the chain** — keep NCNDA/IMFPA signed and on file before disclosing end-buyer or supplier identities. Log every party in the CRM.
- **Legal review** — SPA, SBLC/DLC wording, and PB terms must be reviewed by qualified counsel (Swiss / relevant jurisdiction) before execution. Swizz Cowork tooling drafts; it does not sign off.

**Red-flag reasons to slow down or walk away:** unverifiable end-seller, request for fees before an operative instrument, pressure to skip KYC, refusal to go bank-to-bank, prices far off market, broker chains with no direct mandate evidence, documents that cannot be authenticated.

---

*Maintained for Swizz Global AG. Update this README whenever the folder structure, ID scheme, or pipeline stages change.*
