Crib Master
Tool crib software built from a real crib attendant's paperwork.
- Status
- In development; working demo
- Started
- 2026-08

Written by Hollis from the project's own notes.
What it is
On a turnaround, a contractor's tools live in sea cans, rolling tool chests and cabinets that move from site to site. The crib attendant signs them out, counts them back in, and finds out at the end of the job what has walked away. Today that usually happens on a spreadsheet and paper.
Crib Master covers four problems, and all four came from someone who works in the trade:
- Tools walking off site. Who has what, right now, and since when.
- Calibration and certification expiry. Torque wrenches, gauges, gas detectors and slings. Out-of-calibration kit in service is an audit finding, so signing one out requires an explicit acknowledgement that the server enforces.
- Cost recovery per job. Charging crib time to a job, so the crib stops being a pure cost centre.
- Turnaround mobilisation. Standing up a crib at a new site fast and seeing across every site at once.
How it works
It is built desktop-first, on purpose: "No tool crib attendant is going to be checking tools in on a phone screen." The attendant works a computer at the crib window, so the screens are dense tables, type-to-search and fast to use from the keyboard. No dropdown may ever contain the inventory. Two hundred tools means search-as-you-type, never a list to scroll.
The core of the product is the count. For each item, what should be present is what's expected, minus what's signed out, minus what's away for repair or recertification. Those numbers are captured when a count starts, so the history can't quietly fix itself afterwards. Each tenant is walled off by row-level security in the database, and each customer's data sits in its own database, separate from the company's own contracts.
The schema was read off a working crib's own paperwork before any fields were invented, and every idea is logged in the repository with who said it and when. "A crib attendant designed this" is a far stronger sentence than "we thought this would be good."
Built with
- Application: Python and Flask under gunicorn, behind nginx with HTTPS. Dense, keyboard-fast screens for a workstation, and still usable on a phone.
- Database: PostgreSQL with forced row-level security on every tenant table, keyed to the signed-in account and set in exactly one place in the code. Multi-tenant from day one, with no single customer baked into the schema.
- Photo import: photograph a page of a paper inventory binder and Claude transcribes it into a draft. It is told to transcribe, not interpret. Anything it cannot read comes back empty and flagged, never guessed, and nothing reaches the database until a person confirms it on screen.
- Counts: expected, signed-out and unavailable quantities are snapshotted when a count starts. Each stage's findings are measured against the latest completed count, so a signed finding is never re-attributed later.
- Calibration: the sign-out desk shows each unit's calibration state, and the server requires an explicit acknowledgement before out-of-calibration kit goes out.
- Offline demo: a self-contained snapshot of the app can be shown with no network.
- Spreadsheet bridge: a companion Excel workbook for the attendant to use alongside the app, with 17 sheets and 17,601 checkboxes. A validator checks every build of it before release.
- Testing: a tenant-wall check run as the restricted application role, and an accuracy harness for the photo importer.
Where it stands
The demo runs on a realistic seeded crib. The next features, in order of what matters most to an attendant: signing out a whole rolling chest and reconciling it when it comes back, recording return-from-site notes once instead of re-keying them, retiring containers, grouping a sea can with its rolling chests, and a view that ranks every container by when it was last counted. After that comes an importer that brings the companion workbook straight into the app.
Pictures


