simpliRecycle runs a scrap-recycling depot end to end — supplier weigh-ins, A/B/C grading with price snapshotting, FIFO inventory, sales orders, and VAT invoicing — with a mobile-first buying flow built for the yard, not the office.
No event bus, no signals — each stage hands off to the next through a plain foreign key. Inventory and reporting don't own any data of their own; they're read-only views over what intake, sales, and billing already recorded.
%%{init: {
"theme":"base",
"themeVariables": {
"background":"#11150f",
"primaryColor":"#12261c",
"primaryTextColor":"#eef1ea",
"primaryBorderColor":"#3fd694",
"secondaryColor":"#171b14",
"tertiaryColor":"#171b14",
"lineColor":"#aeb5a6",
"textColor":"#eef1ea",
"fontFamily":"IBM Plex Mono, monospace",
"fontSize":"15px"
},
"flowchart": { "htmlLabels": false, "curve": "basis", "nodeSpacing": 55, "rankSpacing": 90, "padding": 14 }
}}%%
flowchart LR
subgraph actors[ ]
direction TB
SUP["🏭 Suppliers
scrap factories"]
BUY["🏗️ Buyers
smelters and recyclers"]
STAFF["👷 Depot Staff
weigher, cashier, manager"]
end
subgraph pipeline[ ]
direction TB
IN["intake
Lot / LotGrade"]
SA["sales
FIFOAllocation"]
BI["billing
Invoice"]
end
CAT[("catalog
Variety, Grade, PriceTable")]
INV[("inventory
read-only over LotGrade")]
REP[("reporting
read-only over billing/intake/sales")]
SUP -- "weigh-in" --> STAFF
STAFF -- "records" --> IN
CAT -.->|price lookup| IN
IN -- "graded lots" --> INV
IN -- "oldest first" --> SA
BUY -- "places order" --> SA
SA --> BI
IN -.-> REP
SA -.-> REP
BI -.-> REP
classDef svc fill:#12261c,stroke:#3fd694,color:#eef1ea
classDef actor fill:#171b14,stroke:#232922,color:#eef1ea
classDef store fill:#171b14,stroke:#3fd694,color:#eef1ea
class IN,SA,BI svc
class SUP,BUY,STAFF actor
class CAT,INV,REP store
Live captures from a running instance, seeded with demo data — real layouts, real numbers, not mockups.
Revenue vs. cost, payable vs. receivable, and stock aging on one screen — ฿104,310 in intake cost and 423 kg weighed on this day alone.
Weigh each container as it comes off the truck: pick a supplier, check off who's on-site, and net weight comes out automatically — tare already subtracted.
Every entry and the lots it produced, on one permanent page — exportable as a PDF to hand the supplier or file for the books.
Every factory this depot buys from — contact details, tax ID, and the bank account payouts go to.
Each weigh-in becomes a lot with a price/kg snapshot locked in at that moment — never recalculated later, even if prices move the next day.
Grade A/B/C weights, the snapshotted price per kg, and the resulting payout — the permanent record for any weight or price dispute.
No separate inventory ledger — this is a live read-only view straight off graded lots, so it can never drift out of sync.
Draft, confirm, invoice. Confirming an order pulls stock oldest-lot-first via FIFO — and flags a line the moment it can't be fully filled.
Every confirmed order becomes a VAT invoice — paid, partially paid, and unpaid balances tracked at a glance.
Subtotal, tax, and every payment against the invoice, down to a ฿0.00 balance due.
Weigher, cashier, manager, admin — enforced with a role check on every view, not Django's built-in permission system.
Tell us your workflow, your volume, and your timeline — Simplico builds and operates platforms like this one for depots, traders, and yards across Thailand and SEA.
Bangkok-based · Thai & English · 48-hour scoped proposal turnaround