- type
- concept
- created
- Tue Apr 07 2026 02:00:00 GMT+0200 (Central European Summer Time)
- updated
- Tue Apr 07 2026 02:00:00 GMT+0200 (Central European Summer Time)
- sources
- raw/articles/PRD
- tags
- container optimization freight fill-suggestions competitive-moat
Container Fill Optimization
Overview
Container fill optimization is the platform's primary competitive moat. It extends container assembly by actively detecting when a buyer's selected items only partially fill a container and suggesting additional compatible surplus to complete the load. The buyer sees a side-by-side comparison of Less-than-Container-Load (LCL) partial shipping costs versus Full Container Load (FCL) costs, with net savings displayed.
Two Flows
- Full container: A mill's lot fills ~25 MT. Straightforward order, no fill needed.
- Partial load: A mill has e.g. 12 MT. The platform finds 13+ MT of compatible surplus from other mills, ranked by spec match + price.
Fill Suggestion Algorithm
The algorithm follows these steps:
Calculate container gap: From the primary items and container type, determine current_weight, gap_mt, utilization_pct, and whether the container is full or needs filling.
If full: Return empty -- no fill needed.
Query candidates:
- Status must be
available - Must NOT be from the same mills as the primary items
- Must match at least one of the buyer's active BuyerSpecs (paper_type, GSM range, grades, max_price)
- Status must be
Check product compatibility for each candidate:
- Same paper group as primary items (containerboard, board, specialty, tissue)
- Grade gap <= 1 (A+B allowed, A+C rejected)
- Food contact: if primary items require it, candidate must too
Score each candidate (0-100 scale):
- Base score: 50
- Paper type exact match with primary: +20
- GSM closeness to primary items: +15 (linear scale, 0 if difference >= 100 GSM)
- Price advantage vs buyer's max price: +15
Rank by score, cap each candidate's max_quantity to the remaining gap, return top 10 suggestions.
Freight Comparison Display
The platform presents a clear cost comparison:
| LCL (Partial) | FCL (Full Container) | |
|---|---|---|
| Weight | 12.00 MT | 26.00 MT |
| Freight rate | $180/MT (LCL per-ton rate) | $4,200 flat (FCL container rate) |
| Freight cost | $2,160 | $4,200 |
| Per MT freight | $180.00 | $161.54 |
Net Savings Calculation
The platform does not blindly recommend filling every container. It calculates net savings:
net_savings = freight_savings - extra_product_cost
If filling the container costs $8,450 in extra paper but saves only $1,680 in freight, net_savings = -$6,770 (not worth it). The platform only recommends fill when net savings > 0 or when freight per MT drops significantly.
FreightRate Lookup Table
Freight comparisons are powered by a maintained rate table:
| Field | Description |
|---|---|
| origin_region | Region code (EU, ASIA, LATAM, NA, MENA, AFRICA, OCEANIA) |
| destination_region | Region code |
| container_type | 20ft, 40ft, or 40ft_hc |
| fcl_rate | Full container flat rate (USD) |
| lcl_rate_per_mt | LCL rate per metric ton (USD) |
| effective_date / expiry_date | Rate validity period |
| is_active | Boolean |
Unique constraint: (origin, destination, container_type) WHERE is_active. This ensures one active rate per route per container type.
Benchmark Freight Rates
| Route | 20ft | 40ft | 40ft HC |
|---|---|---|---|
| Intra-EU | $800 | $1,200 | $1,300 |
| EU to North Africa | $1,500 | $2,200 | $2,400 |
| EU to South America | $2,500 | $3,800 | $4,000 |
| EU to Middle East | $1,800 | $2,800 | $3,000 |
| Asia to South America | $3,000 | $4,500 | $4,800 |
| Asia to EU | $2,000 | $3,200 | $3,500 |
API Endpoint
POST /api/container-proposals/fill-suggestions/
Body: { surplus_item_ids: [uuid], buyer_id: uuid, container_type: "40ft" }
Response includes: container_gap details, ranked suggestions (up to 10), freight_comparison_current (LCL vs FCL at current weight), freight_comparison_if_filled (projected with suggested items), extra_product_cost, and net_savings.
Why This Is the Competitive Moat
No email/Excel broker can replicate this because:
- Brokers do not have real-time visibility across multiple mills' inventories simultaneously
- Manual freight comparison across dozens of potential fill candidates is impractical
- The scoring + compatibility checking + freight calculation pipeline is only feasible computationally
- The platform aggregates supply-side data that no single broker possesses
Sources
- raw/articles/PRD -- sections 8.7, 8.6
Related
- wiki/concepts/container-assembly -- the base bin-packing algorithm
- wiki/concepts/container-types-and-weights -- physical container specs
- wiki/concepts/matching-algorithm -- match scores inform fill suggestions
- wiki/concepts/newsletter-generation -- container proposals shown in newsletters
- wiki/concepts/incoterms-in-paper-trading -- affects freight cost structure