7-app suite I led for a Pacific Northwest land surveying firm. Unified 5 departments, saved about $500K a year, cut cycle times 13%.
Client name changed for confidentiality.
A self-taught coder held the whole system together with band-aids, toothpicks, and glue. Impressive, but the team had hit the ceiling.
Building per-department apps means five sources of truth and a leadership team that can't see across them.
Parent-child relationships that let broad processes get specific only where the work needed them to.
Desktop scheduler, mobile field portal, per-role dashboards, customized Zoho and QuickBooks, a unified database underneath.
When I joined this Pacific Northwest land surveying firm in 2017, they had an internal system that I'll call "The Bridge." Surprisingly functional, honestly. Visually... rough. It was built by a technical person who taught themselves to code and held the whole thing together with band-aids, toothpicks, and glue. Impressive. But it was built in silos, one piece at a time, while the business kept running around it. Five departments, each with their own workarounds and frustrations and bottlenecks.
I spent the first weeks shadowing crews, sitting with coordinators, and pulling the COO into the same room as field leads. Same conclusion every time. The system worked. The people around it had learned how to make it work. But it had a ceiling, and everyone had hit it.
The instinct on a 5-department problem is to build 5 things. Make each team a tool that fits how they already work. The trap is that you end up with 5 systems that don't talk to each other and a leadership team that can't see across any of them. Five sources of truth is zero sources of truth.
So the call was the opposite. One database, with parent-child relationships that let broad processes get more specific only where the work demanded it. Same language across departments, same data points, same definition of what a job is and where it's at. Enough flex that crews didn't lose the operational details that made their day work.
"It's powerful to have a tool like this, but it feels like we've hit a ceiling with how it's put together. Too many workarounds, too many fields, too many places to look."
"I'm excited to see how you can unlock the potential of all of our internal knowledge and skills. We have guys here that learned from their Dad and their Dad's Dad."
Stakeholder interviews, Week 1Event storm structure
Actors
Scheduling, field crews, department leads
Events
Job created, crew assigned, field work completed
Commands
Schedule, update scope, send requirements
Policies
Department-specific requirements branch from one job record
The board stays as the desktop proof; mobile gets the same workflow shape in an inspectable format.
What the workflow looks like
The unified shape, before any UI.
Event Storm of the scheduling workflow. Actors, events, commands, policies, mapped across departments so the parent-child cuts could be deliberate instead of accidents of UI.
The rebuild took about four years and ended up as a 7-app suite. A custom desktop scheduler with drag-and-drop and integrated ArcGIS mapping. A mobile field portal for surveyors with GPS, offline capability, and time tracking. Customizable per-role dashboards with the metrics and queues each role lived in. Customized Zoho and QuickBooks for analytics and accounting. A revamped database and reporting layer underneath it all.
Every app pulled from and wrote back to the same source. Different surface, same definitions. A job ID in the scheduler was the same job ID in the field portal was the same job ID on the dashboard was the same revenue line in QuickBooks. That part is boring to describe and load-bearing for everything.
Four surfaces, one database
Where the unification shows up.
Scheduler, map, dashboard, and the mobile field portal. Drag, scroll, or use the arrow keys. Same data underneath each one.
The full mock suite is live at prism-suite.vercel.app. Same login across the desktop scheduler, map, dashboard, and field portal. Worth a few minutes of clicking around if you want to see how the surfaces talk to each other.
One small example of how the parent-child setup paid off. Field crews kept returning to sites because something specific to a department's workflow hadn't made it to the truck. I added a pre-leave checklist to the field portal that pulled site-specific requirements straight from the job record. Mandatory fields where they had to be mandatory, optional where they could be. Same UI for every crew. Different content per job type. Return visits dropped about 10% month over month after launch.
Software ships easier than process change. My design influence ended up extending past the apps. I started running periodic process audits with the five department heads and the COO, surfacing what new services or work each team had started taking on and figuring out how to keep those needs aligned with the shared workflow we'd built.
Same structure, same language, same data points across departments, with room for each team to run efficiently. Without that work, people would have invented new workarounds, dirty data would have piled up in the database, and the analytics would have grown blind spots. The architecture only stayed unified because someone kept showing up to keep it that way.
By the end, the work was saving about $500K a year. Cycle times dropped 13%. Field crew go-backs dropped 10%. Operations finally had a clear picture of what was happening across the business in any given week.
The biggest lesson I took with me. Planning and prioritization are most of the work. With contracted devs at high hourly rates, every poorly scoped sprint burns money fast. That's as true now that I build with AI. The code execution keeps getting faster. Choosing what to build, in what order, and where to stop is still 70 to 80% of the effort.