Chapter 01 of 06 · Product Engineer arc
01 コニック
Khonic
Routes, racks, and a ledger that can't lie!!
↓ Warehouse management & ERP. Sprout Digital Labs · lead engineer.
- Role
- Lead engineer · leads 3 on accounting
- Reach
- Warehouse staff & drivers, every day
- Period
- Dec 2023 – now
Internal product: no public link
活躍What I did
-
Built delivery route planning as a capacitated vehicle routing problem with pickups and deliveries (CVRP + VRPPD): one route per vehicle mixes delivery drop-offs and return pickups, and is checked against the vehicle's weight and volume limits before it's created.
-
Wrote a hybrid route solver that picks its method by problem size — exact dynamic programming for small routes, a genetic algorithm for medium ones, nearest-neighbor + 2-opt for large ones — with K-means clustering to group delivery stops by location.
-
Built batch picking end to end, replacing single-order picking with a batch-picking model across the warehouse app and backend.
-
Solved the picker routing problem as a closed-tour TSP (exact Held-Karp for up to 12 stops, nearest-neighbor + 2-opt beyond), so staff walk one efficient loop instead of an arbitrary order; the same approach drives putaway and returns.
-
Built the demand–supply allocation engine: matches sales-order demand against pallet and lot stock FEFO-first (earliest expiry leaves first), then packs orders into pick batches by SKU overlap under a volume cap.
-
Built the warehouse floor-plan and graph system: rack/slot/zone schema, Dijkstra shortest paths, and reverse lookup from SKU to rack location.
-
Overhauled stock reconciliation over four milestones: every stock movement, including each pick, now writes a traceable ledger row; a database trigger flags any change that bypasses the app; and a variance view compares system, physical, and ledger stock.
-
Made the stock ledger append-only with a database trigger, chosen over revoking privileges because the app connects as the table owner, so a revoke would have silently done nothing.
-
Built the inbound flow, from pallet intake through SKU assignment to rack placement.
-
Led the Finance & Accounting module with three engineers: Chart of Accounts (315 accounts, 17 account types) and cash & bank transactions reconciled against account balances; now rolling out through staged user validation.
-
Built the journal-entry engine (Draft → Review → Posted → Reversed) with row locking, so two simultaneous "post" actions can't both succeed, plus a database balance check as a backstop.
-
Restructured the backend from a layered layout into a feature-first one, organized around the four apps it serves.
成果 Impact!!
教訓 What I learned
