Internal tools
The software that decides whether a week takes four hours or forty.
Usually document-heavy. Usually replacing a spreadsheet and a lot of re-keying. Built so a human stays in the loop where the judgment call lives.
In practiceDeerman Sales
Purchase orders arrive as PDFs, get parsed into line items, matched against manufacturer price files, and go back out as vendor confirmations.
Case studies
Long-form writeups of how the work actually went.
Selected work
Field notes
- A clarification is not a change requestFilling in what the signed scope already meant is not the same as adding a new outcome. We name the category the same day — clarification, trade, or change — before anyone starts building.
- A Slack thread is not a decision recordDiscovery chat settles a choice in the moment. Months later the thread is unsearchable, the people have rotated, and nobody can say what was rejected. Write the decision where the work lives.
- A reparse is not a reversalFixing the extraction in your review UI does not unwind what already posted downstream. After a wrong auto-post, the path is void, then post again — with the original and the offset both kept.
- An hour threshold is not a change boundaryA request that fits under four hours can still move a seam. We classify mid-project changes by what they touch — not by how short they sound in Slack.
- A decision log is not a museumDiscovery ends with named decisions. Weeks later the code has moved and the log still says Accepted. Hygiene is status, revisit triggers, and supersession — not a prettier archive.
- A vendor redesign is not a bad scanWhen a supplier moves the total and keeps every field name, the pipeline looks like OCR got worse. It did not — the layout changed, and you need a drift signal before the review queue fills.
- An assumption is not a signed decisionA bullet that says "client provides clean product data" is not agreement. We log assumptions as falsifiable statements with an owner and a trigger for when they break.
- A confidence score is not a gateA 0.85 from the model is not a decision. On PO and invoice pipelines, the gate has to be a named check — reconcile, sum, catalog — or a person, not a float.