Replacing a legacy desktop database with a real-time operations platform — and eliminating the rituals the team had built their entire workflow around.
A regional permit-operations company handles building permits for clients like McDonald's, Starbucks, and major airports. Their competitive edge is speed — but their internal software was built in 2005 and hadn't been redesigned since.
This company's business model is built on getting permits faster than anyone else. When McDonald's needs to open a new location, or when a major airport needs to expand a terminal, the building permit process involves dozens of local municipalities — each with their own requirements, timelines, and quirks. This company has the relationships and proprietary processes to navigate all of that faster than any competitor.
Their internal tooling had not kept pace. The platform their entire team relied on for day-to-day operations was a locally-installed Microsoft Access database, built in 2005 and patched ever since. No cloud connectivity. No real-time data. No mobile access. A UI that had never been redesigned.
The system was built to store data. Not to help the humans working inside it.
Because the software stored data locally, there was no way to share live information remotely. Every Monday morning, every team member came into the office and physically connected their machines to a local network to merge data and pull down the week's files.
Every week, the company owner personally ran a full billing review — a gauntlet of manual steps, each one a product of a system with no validation or built-in trust:
He wasn't doing this because he wanted to. The system gave him no other choice.
The legacy system — a Microsoft Access database, circa 2005. No visual hierarchy. No prioritization model.
Three-panel layout: navigation, task list with priority + status, project detail in context
Total hours and revenue manually reviewed every single week — one PDF.
Configure · Review · Export — one flow, built-in validation
I was the sole designer on this engagement, working directly with three engineers to design and build the replacement platform from the ground up. The stack was Elixir on the backend and React on the frontend — choices that directly informed what was possible on the design side, particularly around real-time data.
Understanding how permit specialists actually worked day-to-day — what information they needed when, and where the existing tool was creating failure.
Restructuring the data model and navigation to match the mental model of the work, not the underlying database schema.
Designing the task and status systems, project views, billing flow, and UI patterns that would scale as the platform grew.
Partnering with engineering on cloud infrastructure decisions — the technical and design choices were deeply intertwined throughout.
The move to cloud fundamentally changed what the interface could do. Real-time data meant the system could show live status, surface updates as they happened, and allow simultaneous multi-user work without data conflicts. Every design decision was made with this in mind.
In the legacy system, project-level tracking and individual task management were muddled together — specialists constantly had to parse which level of the work they were looking at. The redesigned system introduced a clean two-level hierarchy: the permit engagement as a whole, and the individual actions within it.
A constraint worth naming: Every decision was made against a backdrop of long-term users with fifteen years of muscle memory. The goal wasn't to impress them with something new. It was to build something better that felt immediately navigable on day one.
In the old system, status was a field in a form. In the new system, status became the primary organizing principle of the entire interface.
The billing ritual was a symptom of a system with no trust built into it. The goal wasn't to replicate what the client was doing in a cleaner UI — it was to make the manual audit unnecessary by building validation into the workflow itself.
The most significant outcomes were structural — things the business simply could not do before, now possible by default.
Client estimated 15–20% increase in annual revenue to the platform. A direct result of the time and operational capacity the team recovered.
The weekly sync ritual was eliminated. The team moved from scheduled physical data merges to information that was always current for everyone, regardless of location.
The billing review went from hours to minutes. Multi-step manual verification — unlogged entries, spell checks, PDF scrolling, command-line backups — was replaced by a streamlined digital flow with validation built in.
Remote and flexible work became viable for the first time. A structural constraint the team had worked around for years was simply removed.
Onboarding time decreased. The new system's navigation and hierarchy matched how permit specialists actually thought about their work, reducing the learning curve significantly.
The platform established a foundation for future automation. For the first time, operational data was clean, structured, and accessible — opening the door to analytics and process automation that the old system never permitted.
The platform we shipped was the foundation, not the ceiling. The natural next phase would have been operational analytics: permit throughput by municipality, average time-to-approval by client type, bottleneck identification. The team was now generating clean, structured, real-time data for the first time — the logical next step was turning it into operational intelligence.