← Back to Portfolio
Prototypes

Building an internal CRM around real operational needs. Very fast.

Ops grew around real operational needs. We built multiple workflows inside one platform, using shared foundations to move from demand to working product fast. 2024–2026


Role
Senior Product Designer at Phi Health. Design, prototyping and building in code, with the founders and the ops team.
Goals
An independent system that replaces external tools, scales with the company and stays on brand.

~7 daysPer concept, thought through end to end
4+ toolsDesigned and tested on the job
Zero bought-inOne system instead of external tools
On brandBuilt to scale with the company

Review in progress

Kirk Ouimet, CEO of Phi Health, is writing his review. It lands here when it is ready.


One product, many tools, so Ops’s navigation had to hold them all and scale incredibly fast.

Early Ops had no order: tools landed wherever they fit, and some parts of the app were reachable only by a link. I proposed a pattern that splits focus into a few categories, one workspace per domain with its own sidebar, the way ElevenLabs does it, and compressed everything we had into those four. New tools now have a place before they exist.

One switcher, four workspaces: Operations, Social Media, Content Library, Development. Each has its own sidebar, so a new tool joins a category instead of a pile.

Google Drive was slowing our design process down, so I built our own gallery in under three weeks.

Thousands of photos and clips lived in Drive, and Drive has folders: no real search, nothing you can do with an asset without opening it. I modelled ours on Mobbin, a grid you search and an asset you open in place. A pattern that works for thousands of designers was proof enough. Mocked and coded in Claude Code, running on our dev environment.

The Content Library running on the dev environment, inside the old Ops layout

Running on the dev environment, still inside the old Ops layout. The basic flow, browse and find, already did what Drive could not.

A builder for social media concepts, taken from idea to mid-fi UI in under a week.

The brief was to let a non-technical teammate generate social media concepts from references like Oura or IM8. I started with a Figma-like tool full of controls, promising for designers and overwhelming for everyone else. Each pass took tools away. The final draft is one canvas and one prompt, with the settings behind a right panel for whoever needs them.

Ops Content Generation: the Universe builder canvas with the Ahra GenAI engine on GPT-Image 2 and reference nodes for Oura, Calm nature and a Stack render

One prompt and a light canvas. The reference nodes do the work, and the extra settings wait in the right panel until someone asks for them.

A support inbox built in two days, used daily since, now with Ahra reading every thread first.

At the start we needed anything that let us look and work like a team with support. Two panels, shipped in two days, used daily since: replying, list and thread, a simplified mobile view, the feel of a writing tool. Today the panel adds AhraOs, on Claude Opus 5.5, which reads the thread, brings back what we know about the customer and keeps our answers consistent.

Ops Support today: the ticket list, a thread about a delayed Night Stack shipment, and the AhraOs panel with findings and actions

Today. The thread in the middle, AhraOs on the right with findings about the order and four actions: write the delivery update, contact the carrier, create a replacement, offer a refund.

One table, one detail page, one set of filters. Every tool in Ops is built from these foundations.

Early Ops had the data and nothing else: a plain list, a plain detail, no hierarchy, nowhere to click. I built the foundations once, in code. A table with search, filters, tags and pagination, a detail page with cards and a timeline, a pinned first column for wide data. Orders got them first, and every later tool starts from the same parts, as a working screen, not an empty one.

Ops order detail: fulfillment, items, payment and a timeline on the left, customer and shipping cards on the right

The detail page. Fulfillment, items, payment and a timeline on the left, customer and shipping cards on the right, actions in the header where ops looks first.

Every social channel on one dashboard, answering two questions fast. Are we growing, are we selling.

Each platform reports differently, and the team did not need four dashboards. The problem was finding the simplest path to one universal view. I kept the numbers that answer the two questions, followers, reach, engagement, web visits, one chart, one week, and let the channel switcher and filters do the rest. Scan first, dig only when a number looks wrong.

Close up of the Platforms view: channel switcher, Performance and Audience tabs, the week filter and the followers chart

The scan path. Channel, Performance or Audience, time range, then the numbers. Everything else is a filter, out of the way until it is needed.

Logs rebuilt in a few passes, so a spike reads at a glance and the issue behind it is one click away.

The first Logs page had the numbers and nothing to do with them. A few passes later: a preview in the table, so an issue opens in place. Warnings and errors on their own scales, one steady total above them. And the weak filter row replaced with the pattern every other Ops table uses.

Ops Logs overview: events, distinct issues, new and unresolved counts, logs over time and by type, top sources

Four numbers, two charts, two source lists. Warnings and errors on their own scale, the total of events steady above them, so a spike in one does not hide the other.


Takeaway

Ops was the first product where I prototyped fast and shipped straight to dev. It gets a better solution out sooner, but it removes none of the thinking around it. The other lesson: for an internal tool, ship the key features and keep moving. In daily use pace matters more than perfection, and polishing details nobody asked for costs more than it returns.

What came out of it in the end is a set of patterns that are safe and still scale. The foundations scale, and so does most of what sits on them.