Sawdust
A custom cabinet manufacturer asked us to build an integration. We found the integration already built and sitting unused on their file server. Then we found more than half a million dollars in annual recoverable value.
Executive Summary
<div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; line-height: 1.7; color: inherit;"> <p style="margin-bottom: 24px;">A custom cabinet manufacturer running eight-figure annual revenue asked us to build an integration between their design software and their production ERP. A team of designers ran a manual process between the two systems dozens of times a week. A production scheduler rebuilt a spreadsheet from scratch every morning before dawn, tracking over a million dollars in active production. Three prior vendors had attempted the integration. All left. We spent two months in structured discovery. Then we connected to their network and ran an automated assessment - read-only access to their infrastructure, direct queries against the production ERP. Thirty data objects. More than six thousand fields. Over half a million documents analyzed. One day. The integration they asked us to build was sitting in a folder on their shared drive. Built across three years by three consulting firms. Hundreds of thousands of dollars in total spend. The installer was on the file server. The scheduled task was never registered. Nobody at the company knew it existed.</p> <div style="margin-top: 32px; padding: 24px; border: 1px solid rgba(128,128,128,0.2); border-radius: 8px;"> <h4 style="margin: 0 0 4px 0; font-size: 13px; text-transform: uppercase; letter-spacing: 1px; opacity: 0.7;">Labor Hours by Department*</h4> <p style="margin: 0 0 16px 0; font-size: 11px; opacity: 0.5;">*Values adjusted for confidentiality - 36 months of production history</p> <div style="display: flex; align-items: center; margin: 6px 0; font-size: 13px;"> <span style="width: 90px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Finishing</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 22px;"> <div style="background: #2563EB; height: 100%; width: 100%; border-radius: 3px; opacity: 0.8;"></div> </div> <span style="width: 65px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">79,190</span> </div> <div style="display: flex; align-items: center; margin: 6px 0; font-size: 13px;"> <span style="width: 90px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Assembly</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 22px;"> <div style="background: #2563EB; height: 100%; width: 37%; border-radius: 3px; opacity: 0.8;"></div> </div> <span style="width: 65px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">29,180</span> </div> <div style="display: flex; align-items: center; margin: 6px 0; font-size: 13px;"> <span style="width: 90px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Machining</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 22px;"> <div style="background: #2563EB; height: 100%; width: 24%; border-radius: 3px; opacity: 0.8;"></div> </div> <span style="width: 65px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">19,080</span> </div> <div style="display: flex; align-items: center; margin: 6px 0; font-size: 13px;"> <span style="width: 90px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Sanding</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 22px;"> <div style="background: #2563EB; height: 100%; width: 23%; border-radius: 3px; opacity: 0.8;"></div> </div> <span style="width: 65px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">18,260</span> </div> <div style="display: flex; align-items: center; margin: 6px 0; font-size: 13px;"> <span style="width: 90px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Edge Work</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 22px;"> <div style="background: #2563EB; height: 100%; width: 21%; border-radius: 3px; opacity: 0.8;"></div> </div> <span style="width: 65px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">16,320</span> </div> <div style="display: flex; align-items: center; margin: 6px 0; font-size: 13px;"> <span style="width: 90px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Rough Mill</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 22px;"> <div style="background: #2563EB; height: 100%; width: 19%; border-radius: 3px; opacity: 0.8;"></div> </div> <span style="width: 65px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">15,340</span> </div> <div style="display: flex; align-items: center; margin: 6px 0; font-size: 13px;"> <span style="width: 90px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Shipping</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 22px;"> <div style="background: #2563EB; height: 100%; width: 11%; border-radius: 3px; opacity: 0.8;"></div> </div> <span style="width: 65px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">8,640</span> </div> <div style="display: flex; align-items: center; margin: 6px 0; font-size: 13px;"> <span style="width: 90px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Rework</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 22px;"> <div style="background: #2563EB; height: 100%; width: 7%; border-radius: 3px; opacity: 0.8;"></div> </div> <span style="width: 65px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">5,250</span> </div> <div style="display: flex; align-items: center; margin: 6px 0; font-size: 13px;"> <span style="width: 90px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Panel Work</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 22px;"> <div style="background: #2563EB; height: 100%; width: 4%; border-radius: 3px; opacity: 0.8;"></div> </div> <span style="width: 65px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">3,050</span> </div> <div style="display: flex; align-items: center; margin: 6px 0; font-size: 13px;"> <span style="width: 90px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Inspection</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 22px;"> <div style="background: #2563EB; height: 100%; width: 1%; border-radius: 3px; opacity: 0.8;"></div> </div> <span style="width: 65px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">1,120</span> </div> </div> <div style="margin-top: 24px; padding: 24px; border: 1px solid rgba(128,128,128,0.2); border-radius: 8px;"> <h4 style="margin: 0 0 4px 0; font-size: 13px; text-transform: uppercase; letter-spacing: 1px; opacity: 0.7;">Monthly Production Hours*</h4> <p style="margin: 0 0 16px 0; font-size: 11px; opacity: 0.5;">*Twelve-month labor trend revealing seasonal patterns</p> <div style="display: flex; align-items: center; margin: 5px 0; font-size: 13px;"> <span style="width: 70px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Apr '25</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 20px;"> <div style="background: #2563EB; height: 100%; width: 100%; border-radius: 3px; opacity: 0.75;"></div> </div> <span style="width: 55px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">10,400</span> </div> <div style="display: flex; align-items: center; margin: 5px 0; font-size: 13px;"> <span style="width: 70px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">May</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 20px;"> <div style="background: #2563EB; height: 100%; width: 94%; border-radius: 3px; opacity: 0.75;"></div> </div> <span style="width: 55px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">9,750</span> </div> <div style="display: flex; align-items: center; margin: 5px 0; font-size: 13px;"> <span style="width: 70px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Jun</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 20px;"> <div style="background: #2563EB; height: 100%; width: 93%; border-radius: 3px; opacity: 0.75;"></div> </div> <span style="width: 55px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">9,660</span> </div> <div style="display: flex; align-items: center; margin: 5px 0; font-size: 13px;"> <span style="width: 70px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Jul</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 20px;"> <div style="background: #2563EB; height: 100%; width: 85%; border-radius: 3px; opacity: 0.75;"></div> </div> <span style="width: 55px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">8,850</span> </div> <div style="display: flex; align-items: center; margin: 5px 0; font-size: 13px;"> <span style="width: 70px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Aug</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 20px;"> <div style="background: #2563EB; height: 100%; width: 83%; border-radius: 3px; opacity: 0.75;"></div> </div> <span style="width: 55px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">8,600</span> </div> <div style="display: flex; align-items: center; margin: 5px 0; font-size: 13px;"> <span style="width: 70px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Sep</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 20px;"> <div style="background: #2563EB; height: 100%; width: 73%; border-radius: 3px; opacity: 0.75;"></div> </div> <span style="width: 55px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">7,630</span> </div> <div style="display: flex; align-items: center; margin: 5px 0; font-size: 13px;"> <span style="width: 70px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Oct</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 20px;"> <div style="background: #2563EB; height: 100%; width: 73%; border-radius: 3px; opacity: 0.75;"></div> </div> <span style="width: 55px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">7,630</span> </div> <div style="display: flex; align-items: center; margin: 5px 0; font-size: 13px;"> <span style="width: 70px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Nov</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 20px;"> <div style="background: #2563EB; height: 100%; width: 57%; border-radius: 3px; opacity: 0.75;"></div> </div> <span style="width: 55px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">5,960</span> </div> <div style="display: flex; align-items: center; margin: 5px 0; font-size: 13px;"> <span style="width: 70px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Dec</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 20px;"> <div style="background: #2563EB; height: 100%; width: 51%; border-radius: 3px; opacity: 0.75;"></div> </div> <span style="width: 55px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">5,350</span> </div> <div style="display: flex; align-items: center; margin: 5px 0; font-size: 13px;"> <span style="width: 70px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Jan '26</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 20px;"> <div style="background: #2563EB; height: 100%; width: 52%; border-radius: 3px; opacity: 0.75;"></div> </div> <span style="width: 55px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">5,400</span> </div> <div style="display: flex; align-items: center; margin: 5px 0; font-size: 13px;"> <span style="width: 70px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Feb</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 20px;"> <div style="background: #2563EB; height: 100%; width: 62%; border-radius: 3px; opacity: 0.75;"></div> </div> <span style="width: 55px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">6,440</span> </div> <div style="display: flex; align-items: center; margin: 5px 0; font-size: 13px;"> <span style="width: 70px; flex-shrink: 0; text-align: right; padding-right: 12px; opacity: 0.8;">Mar</span> <div style="flex: 1; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden; height: 20px;"> <div style="background: #2563EB; height: 100%; width: 69%; border-radius: 3px; opacity: 0.75;"></div> </div> <span style="width: 55px; flex-shrink: 0; text-align: right; padding-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7;">7,170</span> </div> </div></div>
Metrics
Architecture
Read-only assessment pipeline: data flows from production systems through ingestion into a provenance database, then to verification and a real-time operations dashboard
Read-only assessment pipeline: data flows from production systems through ing...
The Problem
The company described their situation as a technology problem - two systems that could not talk to each other. After interviews across design, production, project management, and systems engineering, we found a different pattern. Every department had been promised automation. Every department had built workarounds when it did not arrive. The workarounds became the real operating system.
Abandoned Integration
Three consulting firms had been hired across three years to build the design-to-ERP integration. They configured a commercial integration tool, wrote automation scripts, and built mapping templates across manufacturing operations. The installer was on the shared drive. The scheduled task was never registered. Nobody at the company knew it existed. Hundreds of thousands of dollars in total spend.
Single-Person Dependency
The production scheduler rebuilt a spreadsheet with hundreds of rows and dozens of columns from scratch every morning before dawn. Hours of manual work. If the scheduler and one backup were both out, production planning stopped entirely. Over a million dollars in active work-in-progress depended on a process that lived in one person’s head and one spreadsheet.
Invisible Cost Erosion
The ERP applied a flat rate across all production departments - more than ten percent below the actual shop floor rate. Every job priced through the ERP looked more profitable than it was. The company’s own cost comparison spreadsheets showed a nearly three-times variance between design software and ERP on the same job.
The company had been told for three years that this was a technology problem. It was an information problem. The technology existed. The documentation existed. The integration existed. What did not exist was anyone who could see the full picture.
What We Built
We built a read-only operational intelligence platform that connected to the company’s infrastructure without modifying any production systems. Everything runs on read-only access - API queries against the ERP, mounted network shares on the file server. Zero risk to production operations.
Automated Assessment
- Secure access to client infrastructure with read-only mounts on the file server
- Direct queries against the production ERP - thirty data objects, more than six thousand fields
- Over half a million documents ingested with full source provenance
- Every document traces to its origin: API endpoint, file path, or interview note
Scheduling Automator
- Replicated the scheduler’s multi-hour daily process in ten seconds
- Dozens of columns matching the existing format across multiple sheets
- Better than ninety-five percent cell-level accuracy against the manual output
- A few hundred discrepancies identified - all explainable from data timing
Verification Engine
- More than a dozen factual claims cross-checked against the database with source chains
- Three claims corrected upward - more jobs, more cabinets, more cost than originally stated
- Multi-component annual improvement calculation with verifiable inputs
- More than half a million dollars in annual recoverable value identified
Operations Dashboard
- Real-time production visibility from live ERP data
- Dozens of historical snapshots for trend analysis
- Authenticated API with interactive documentation
- Deployed and running with automatic restart on failure
Every number traces to a source. Every claim is verifiable. The assessment produced a case study with source chains - not estimates, but verified data points from the company’s own systems.
Execution
Discovery
6 weeksStructured interviews across four departments - design, production scheduling, project management, and systems engineering. Screen recordings of daily workflows. Meeting transcripts analyzed for patterns across roles.
The same broken promise appeared in every department. The same sentence, word for word, from two different people who had never compared notes: ‘We were promised that and it never came to fruition.’
Infrastructure Assessment
1 weekAutomated read-only audit of the company’s infrastructure. Secure access, network share mounts, direct ERP API queries. Hundreds of directories indexed. Dozens of documents cataloged. More than six thousand fields mapped across thirty data objects.
The vendor’s own user guide explained the field drops that every prior integrator had failed to diagnose. Page seventeen. Documented behavior. Known fix. The answer was in a PDF on their own file server.
Build
2 weeksScheduling automator replicating the daily production process. Ingestion pipeline with full source provenance across twenty collections. Claim verification engine. API with more than a dozen endpoints and interactive documentation.
Replicating the scheduler’s multi-hour daily process took ten seconds. Hundreds of thousands of labor transactions spanning three years were ingested in a single run after solving a timeout issue in the ERP’s pagination.
Verification
1 weekCross-checked every factual claim from deliverables against verified database sources. Corrected three claims upward. Delivered case study with full source chains to investment partners.
Three claims we corrected upward. The company was underestimating its own production volume by more than seven percent. The verified numbers were higher across jobs completed, units produced, and total production cost.
Visualizations
Interested in this kind of work?
Start a conversation →