- 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 assembly shipping logistics bin-packing
Container Assembly
Overview
Container assembly is the marketplace's killer feature. No individual broker has visibility across multiple mills and multiple buyers to optimize container fills. The platform solves the "small lot problem": surplus lots are typically 5-50 MT, but a 40ft container holds 24-26 MT. Shipping 8 MT alone costs approximately 3x more per ton in freight than a full container. Without assembly, small lots are uneconomical and often recycled by the mill -- a significant loss.
The algorithm proposes containers by combining matched surplus lots from different mills into full containers, prioritizing exact spec matches and filling remaining space with close matches.
Container Specifications
See wiki/concepts/container-types-and-weights for full details.
| Container Type | Max Payload | Paper Capacity | Use Case |
|---|---|---|---|
| 20ft Standard | 21.7 MT | 18-22 MT | Small orders, intra-EU |
| 40ft Standard | 26.68 MT | 24-26 MT | Standard international |
| 40ft High Cube | 26.46 MT | 24-28 MT | Large diameter rolls |
Algorithm: Greedy Bin-Packing with Constraints
The algorithm follows a greedy strategy:
- Sort matched surplus: exact matches first, then by score descending
- Iterate through sorted matches, adding items to the container:
- Skip items that are already sold, reserved, or in another proposal
- Check origin region constraint (all lots must ship from same region or ports within 200km)
- Check product compatibility (see rules below)
- Calculate quantity to load (available quantity or remaining capacity, whichever is smaller)
- Skip very small quantities (< 1 MT) unless the container is still below minimum target
- Stop when target maximum weight is reached
- Validate minimum utilization (must be >= 70%)
- Calculate totals: weight, value, estimated freight per MT
Target weight ranges:
| Container | Target Min | Target Max | Hard Max |
|---|---|---|---|
| 20ft | 15.0 MT | 21.0 MT | 21.7 MT |
| 40ft | 18.0 MT | 26.0 MT | 26.68 MT |
| 40ft HC | 18.0 MT | 26.0 MT | 26.46 MT |
Product Compatibility Rules
Items in the same container must be compatible:
- Food contact: If the buyer requires food contact, all items must be food-contact certified
- Paper group compatibility: Papers are grouped into compatible categories. Items from different groups cannot share a container:
- Packaging: wiki/entities/kraftliner, wiki/entities/testliner, wiki/entities/fluting, white_top_testliner, duplex, triplex, coated_board
- Sack: sack_kraft
- Wrapping: mg_kraft, greaseproof
- Tissue: tissue
- Grade proximity: A-grade and C-grade cannot share a container (grade gap must be <= 1). A+B is fine, B+C is fine, A+C is rejected.
Roll Loading Constraints
Physical loading considerations for paper rolls in containers:
- Eye-to-sky (standing on end): Standard for rolls > 800mm diameter. Max stack height 2390mm (standard) or 2690mm (high cube).
- On side (laying flat): Used for narrow/light rolls. Requires blocking and bracing.
- Weight limit is usually reached before volume limit for paper.
- Dunnage and edge protectors required.
- Moisture barriers (VCI/PE wrap) required for ocean freight.
Standard roll diameters: full reel 1200-1500mm, partial 400-800mm, standard 800-1500mm.
Container Proposal Output
A proposal includes:
- Container type and total weight
- Utilization percentage
- Itemized lots with specs, quantities, prices, subtotals, and match type (exact/close/partial)
- Total value
- Estimated freight per MT
- Origin region and destination
- Expiration (72 hours -- longer than the 48-hour exclusivity window to allow review)
Example from PRD: A 40ft container for Carlos (Valencia, Spain) combining 8 MT Kraftliner 150g from Germany (EUR450/MT, exact match), 9 MT Kraftliner 170g from Poland (EUR430/MT, close), 5 MT Kraftliner 135g from Germany (EUR465/MT, close), and 4 MT Testliner 160g from Czech Republic (EUR395/MT, partial). Total: 26.0 MT, EUR11,375, 97.4% utilization. Freight: ~EUR46/MT vs EUR150/MT for 8 MT alone -- 69% freight savings.
Business Rules
| Rule | Value |
|---|---|
| Minimum utilization | 70% (do not propose near-empty containers) |
| Origin constraint | All lots from same region or ports within 200km |
| Proposal expiration | 72 hours |
| Multiple containers | If matched surplus exceeds one container, propose multiple |
| Buyer actions | Accept full proposal, remove items, or decline entirely |
| Priority | Exact spec matches first, fill remaining with close matches |
Sources
- raw/articles/PRD -- sections 6.6, 8.1-8.8
Related
- wiki/concepts/container-fill-optimization -- filling partial loads to full containers
- wiki/concepts/container-types-and-weights -- physical container specifications
- wiki/concepts/matching-algorithm -- produces the match results used for assembly
- wiki/concepts/newsletter-generation -- container proposals shown in newsletters
- wiki/concepts/geographic-visibility-system -- only visible surplus in proposals