I must be crazy? Build my own CRM?

To get to end, we must start from the beginning. As a senior graphic designer and a Project Manager at Gravity DesignWorks, Inc I have used a project management app called ActiveCollab, for years. It was built well and served our purpose early on, but over time things started to drift.

Some features moved behind paywalls. Others that seemed promising never really came to fruition. The biggest issue for us ended up being their QuickBooks Online (QBO) integration.

Once enabled, their QBO sync module removed the ability to use ActiveCollab’s native estimating and invoicing tools and forced everything through QuickBooks instead.

That might work for a small team or a solo operator, but it quickly becomes problematic when multiple employees are quoting jobs, invoicing clients, and managing projects. It also creates a situation where designers and production staff suddenly need access to financial records they probably shouldn’t be touching in the first place.

The only records that synced cleanly were time entries. That’s great if you’re a desk-jockey designer billing hours all day, but our crew designs, prints, fabricates, installs, and manages production work. Time tracking alone doesn’t represent how work actually moves through our shop.

Because of that we avoided the QBO integration for as long as possible. Basically like the plague. Masks not included.

There were other quirks we dealt with for quite a while as well. Estimates weren’t linked to the projects they belonged to. Invoices lived in their own disconnected space. To their credit it looked like some of those features were finally starting to roll out, but by that point we had already started looking elsewhere.

Eventually it became clear we were bending our workflow around the software instead of the other way around.

Luckily ActiveCollab made one very important thing easy. You could request a full export of your data.

With that dump in hand I suddenly had the opportunity to do something I had been thinking about for a while: build a system that actually matched how our shop works.

Using their JSON exports and a lot of AI assistance, I started reverse engineering the structure of the data so it could be rebuilt into our own database. That process eventually allowed us to import all of our legacy information while organizing it in a way that made much more sense.

Some of the older records were messy. Estimates and invoices weren’t always tied to projects correctly. But with a little scripting I was even able to cross reference many of those records and rebuild the project relationships automatically.

While writing this I realized the idea to build our own system probably didn’t actually start with ActiveCollab at all.

A few months earlier I had started building Excel calculators to standardize pricing across the shop. Printing, materials, ink usage, fabrication time, installation time. Every job has variables, and when different people estimate them differently pricing starts to drift.

Those spreadsheets were meant to solve that.

They started small. One calculator turned into several. Then they started referencing each other. Before long they were quietly becoming the first attempt to translate how our shop actually works into something structured.

And if there’s one thing I’ve learned about spreadsheets, it’s that they’re fantastic tools right up until the moment they accidentally become your accounting department.

Once those calculators existed, the next logical step wasn’t better spreadsheets. It was a system that could connect estimates, projects, invoices, and production workflows together.

In many ways the CRM we’re running today is just the natural evolution of those spreadsheets.

In the next post I’ll walk through the calculators themselves. They were supposed to standardize pricing. They accidentally became the blueprint for the system.