How I Keep an Owned System Running After the Build
I share the exact steps I use to keep a custom-built operating system alive—ownership, visibility, automation, and a relentless improvement loop.
I spent the last three years rebuilding a 200‑employee, owner‑operated company from a patchwork of 21 SaaS tools into a single, owned operating system. The transition felt like a massive construction project: foundations were poured, walls went up, and the whole structure was finally handed over to the owners. The hard part didn’t end with the ribbon‑cut. Within weeks the new platform began to show cracks—missing data flows, undocumented scripts, and a creeping reliance on the same third‑party services we had tried to discard. I learned that a build‑once, maintain‑never mindset is a recipe for rapid decay. The only way to keep an owned system alive is to embed maintenance into the daily rhythm of the business.
Design for Self‑Service
When I handed the system over, I made the first rule that every piece of functionality must be operable by the people who use it daily. That meant building UI screens that expose the same parameters a consultant would tweak in a SaaS admin console, and wiring those screens to a version‑controlled code base. I also wrote a short “run‑book” for each major workflow and stored it alongside the code, so the documentation lives where the changes happen. The result is a platform that feels like a set of tools built for the team, not a black box that only the original developers can touch.
Training is not a one‑off event. I schedule a weekly “owner‑operator office hour” where the team runs through a real‑world scenario, asks questions, and then updates the run‑book in real time. Because the documentation is in Git, any edit automatically creates a change history that the whole organization can audit. This habit eliminates the hidden knowledge that usually forces businesses back into vendor support tickets and keeps the system’s DNA visible to everyone who matters.
Make Ownership Visible
Visibility is the antidote to drift. I built a single dashboard that aggregates health metrics, error rates, and usage trends for every module of the system. Each metric is tagged with a responsible owner and a service‑level target. When a threshold is crossed, an automated Slack alert mentions the owner’s Slack handle, so the right person sees the problem the moment it appears. The dashboard lives on an internal subdomain, not a SaaS reporting layer, so we control the layout and can add new widgets without waiting for a third‑party roadmap.
- Run‑books stored in a version‑controlled repository
- Role‑based access matrix published on the internal wiki
- Single source of truth dashboard with owner tags
Automate the Routine, Not the Decision
Automation should replace repetitive clicks, not judgment. I started by cataloguing every manual step that took longer than five minutes and asked whether the decision behind it could be codified. For 16 departments I created 25+ AI agents that handle data entry, invoice matching, and routine status updates. The agents run inside our own Kubernetes cluster, so we own the compute cost and can tune the models without paying per‑call SaaS fees. Each automation is wrapped in a simple approval step that a human can bypass, preserving control while freeing up time for higher‑value work.