Acme Prism

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.

RoleSole Designer & Product Owner
ToolsSketch, Zeplin
Year2017–2021
Impact$500K saved annually, 13% faster cycles
Context

5 departments, each with workarounds

A self-taught coder held the whole system together with band-aids, toothpicks, and glue. Impressive, but the team had hit the ceiling.

The Hard Part

Five tools or one with room to flex

Building per-department apps means five sources of truth and a leadership team that can't see across them.

Breakthrough

One database. Branches where the work demanded it.

Parent-child relationships that let broad processes get specific only where the work needed them to.

What Shipped

7 apps over 4 years, $500K saved annually

Desktop scheduler, mobile field portal, per-role dashboards, customized Zoho and QuickBooks, a unified database underneath.

The Bridge

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 Insight

One database. Branches where the work demanded 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 1

Event 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.

The Build

Seven apps. One database. Four years.

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.

Desktop scheduler, Gantt timeline + field/tech notes
Map view, status-colored pins with filter panel
Per-role dashboard, today's jobs, pipeline, project queue
Mobile field portal, day list + return-visit modal

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.

Beyond Software

The cross-department work doesn't show up in the metrics. It's what made the software stick.

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.

Impact

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.