Skip to main content
Client · In production

Inventory system for a PANI public contract

Warehousing · public tender (PANI) · Costa Rica · 2025 — present

ROLE: Design · Build

  • Next.js
  • Postgres
  • PDF + QR reports
  • Hash-chained audit log
Goods-receipt form in the warehouse inventory system, capturing warehouse, item, quantity, expiry date and lot number for each intake.

7/7

regulatory compliance matrix covered with system evidence

as of Jun 2026

SOURCE: compliance matrix vs contract terms

The situation

A warehouse operator provides a storage-and-warehousing service to the Patronato Nacional de la Infancia (PANI), Costa Rica’s national child-welfare agency, under a public tender. A public contract means compliance has to be proven, not just delivered: an inventory count on demand every month, dispatch that respects expiry dates first, signed reports, and logs nobody can quietly edit after the fact.

Spreadsheets could show a number, but they couldn’t prove any of it — no dispatch discipline, no audit trail, no way to show an auditor that a report matches what actually happened in the warehouse.

What I built

I designed and built the inventory and warehouse-control system from scratch: intake, dispatch, stock, storage locations and traceability, all around FEFO (first-expired, first-out) picking, so dispatch enforces expiry order instead of relying on staff to remember it.

Cut-off reports close out each period as QR-coded, signed documents an auditor can verify independently. Underneath, every event writes to a hash-chained log — each entry cryptographically linked to the one before it, so an edit after the fact is detectable by construction, not by policy.

What happened

The operator passes its compliance checklist 7/7 with system evidence instead of manual reconstruction.

What used to mean pulling together spreadsheets, dispatch notes and someone’s memory of what happened is now a report the system produces on demand, backed by a log an auditor can trust because it can’t be quietly edited.

Gallery

2 shots · swipe →
Let's discuss scope