What ships today, and what's next.
Written to be pasted into an RFP. Everything marked SHIPPED is in the product now and demonstrable on a call; ROADMAP items are sequenced, not aspirational.
Customers & onboarding
- SHIPPEDCustomer records own everything — SKUs, stock, orders, fees — with a permanent 2–12 character code
- SHIPPEDLifecycle states (prospect > onboarding > active > inactive > offboarded) that gate what's allowed
- SHIPPEDOffboarding refuses while the customer still holds inventory
- SHIPPEDRate cards with assignment resolution, cloning and archival
- SHIPPEDStatement-of-work PDF generated from the same rate card the fees price against
- SHIPPEDPer-customer shipping SLA in shipping days, plus an install-wide shipping calendar and cutoff
- SHIPPEDPer-customer carrier configuration, including your own custom carriers and hazmat routing
- ROADMAPClient portal with per-customer logins and catalog browsing
- ROADMAPPortal ordering, approvals and re-order
Catalog
- SHIPPEDCustomer-owned SKUs with dimensions, weight, storage class and compliance data
- SHIPPEDBarcodes per pack level (each / inner / case / pallet), GS1-aware
- SHIPPEDCSV import with dry-run validation and per-row error reporting
- SHIPPEDKits and bills of material with explosion at order time
- SHIPPEDPrice breaks, pack selling in base units, min/max order limits
- SHIPPEDLot-code templates per customer, expanded at receiving
- SHIPPEDProvisional SKUs created at the dock so receiving is never blocked
- ROADMAPPrint-on-demand SKU type, template mapping and press queue
Inbound
- SHIPPEDASNs at three levels of certainty, from “something's coming” to a full manifest
- SHIPPEDDock appointment calendar with door assignment
- SHIPPEDOne-scan GS1 receiving: product, lot, expiry, quantity and serial from a single barcode
- SHIPPEDDiscrepancy capture with photographs and paperwork at the dock
- SHIPPEDPallet and carton receiving with license plates and printed placards
- SHIPPEDMass receiving by CSV for bulk inbound
Inventory
- SHIPPEDAppend-only movement ledger — stock on hand is derived, never edited
- SHIPPEDReason-coded adjustments; corrections are new events, not rewrites
- SHIPPEDLots with expiry, packaging version and full traceability
- SHIPPEDStatuses: available, quarantined, damaged, expired, on hold — with release workflows
- SHIPPEDDirected putaway enforcing storage class, hazmat and secure-cage rules
- SHIPPEDGather consolidation, offered at the dock and after the fact
- SHIPPEDWarehouse floor plan, 3D rack views and serpentine walk maps
- SHIPPEDZPL label printing for bins, lots and license plates
- ROADMAPCycle counts with reason-coded reconciliation
- ROADMAPReplenishment and inter-warehouse transfers
Outbound
- SHIPPEDSales orders with structured ship-to/bill-to, carrier, service and custom fields
- SHIPPEDFEFO allocation honoring minimum shelf life; backorders and partials
- SHIPPEDAvailable-to-promise that subtracts open allocations and backorders — and goes negative when oversold
- SHIPPEDRush orders gated by a per-customer same-day window, with the rush fee
- SHIPPEDTriage board: rush, late, due today, due tomorrow, upcoming — built for thousands of open orders
- SHIPPEDScan-verified pick runs with per-stop bin and product verification; shorts with reason codes
- SHIPPEDBatch picking: up to twelve orders in one walk, each with its own lettered picking bin
- SHIPPEDSuggested carts — Amphora proposes the batches that genuinely shorten the walk, and shows the math
- SHIPPEDPhysical staging: picked units move to a staging bin, so shelf counts are true mid-run
- SHIPPEDPack station with carton suggestion from your box catalog, scan-to-pack and scale weights
- SHIPPEDOne packing slip per box, plus 4×6 carton labels
- SHIPPEDProvider-agnostic shipping: manual, simulator, watched-folder (ShipStore), Shippo, EasyPost, ShipStation
- ROADMAPReturns and RMA with destruction workflow and certificate
Billing
Every fee below is captured as a billable event the moment the work happens, priced by the customer's rate card. 15 fee types ship today:
| Fee | Charged |
|---|---|
| Setup fee | once, at onboarding — the only fee (plus custom charges) invoiceable while a customer is Onboarding |
| Monthly portal fee | recurring, monthly |
| Order fee | per order placed |
| Pick fee | per line item in an order |
| Unit fee | per unit — line items × quantity |
| Rush fee | added when an order is placed rush (inside the rush window) |
| Carton fee | per carton packed — packaging materials and the pack itself |
| Receiving fee | per SKU received |
| Mixed-SKU / manual receiving | per commingled inbound separated by hand |
| Bin fee | per occupied bin, monthly |
| Pallet fee | per stored pallet, monthly |
| Inspection fee | per hour of additional inspection work |
| Destruction — bin | per bin destroyed |
| Destruction — pallet | per pallet destroyed |
| Certificate of Destruction | per certificate issued |
- SHIPPEDRated billable-events report with CSV export, filterable by customer and period
- SHIPPEDLive month-to-date cost preview per customer
- ROADMAPInvoice calculation engine, ad-hoc charges and exports
Platform
- SHIPPEDFull REST API with a typed OpenAPI 3.1 contract generated from the same schemas the routes validate with
- SHIPPEDAPI keys with scoped roles; keys cannot mint keys
- SHIPPEDTwo-factor authentication (TOTP) with backup codes and verify-before-enforce enrolment
- SHIPPEDAudit trail across every module, with CSV export
- SHIPPEDWhite-label branding on every screen and document
- SHIPPEDBuilt-in knowledge base with branded PDF export
- SHIPPEDInstallable PWA for phones and scanner guns; camera barcode scanning
- SHIPPEDOne-command database snapshot and restore
- ROADMAPWebhooks, Shopify/Amazon connectors, SAML SSO, Postgres
Scale and performance
Measured, not asserted. The numbers below come from scripts/benchmark.mjs in the product's own repository, which builds a synthetic warehouse and times the queries that actually get hot — deriving stock from the ledger, the orders triage board, available-to-promise, and ledger history. Run it yourself against your own volumes; it ships with the code.
| Operation | 500K events / 100K orders | 2M events / 400K orders |
|---|---|---|
| Stock on hand for one SKU (the floor's constant question) | 0.4 ms | 1.7 ms |
| Available-to-promise for one SKU | under 1 ms | under 1 ms |
| Orders triage board, counts across all queues | 4.6 ms | 27.7 ms |
| Orders board, first page of 50 | 6.8 ms | 64.5 ms |
| Inventory ledger, newest 100 movements | 5.4 ms | 8.3 ms |
| Whole-book stock roll-up for one client (a report, not a scan) | 62 ms | 294 ms |
| Database file on disk | 199 MB | 791 MB |
Read those columns as time, not as a ceiling: two million ledger events is roughly four to five years of a busy mid-size operation, and the per-SKU questions a scanner asks all day stay in single-digit milliseconds throughout. The operation that grows fastest is the whole-book roll-up, which is a report someone runs occasionally rather than something the floor waits on. Measurements taken on an 8-core laptop (Apple M3, 16 GB RAM) with SQLite in WAL mode — a modest server VM is comparable, and Postgres is the planned option for operations that outgrow a single file.
Amphora is one process against one database file. That is an excellent fit for a warehouse — even a large one — and a poor fit for a multi-site operation that needs several sites writing to one database across a WAN. If that is you, the Postgres option (Phase 8) is the conversation, and we would rather have it now than in month three.
Carriers recognized out of the box
UPS (5 services) · FedEx (6 services) · USPS (4 services) · DHL (2 services) — plus any custom carrier you define, including your own trucks and local messengers.
Send this back with the rows that matter to you marked, and we will tell you plainly which are shipped, which are scheduled, and which we would not build for you. A 30-day pilot plan is in the evaluation guide on the same page you downloaded this from.
parth@brandboxai.app