CASE STUDY · CG SIGNS

Building the operating system for a sign shop.

Over five months I designed and built a custom, self-hosted business platform for Custom Graphics & Sign Designs — replacing a subscription shop-management system with software shaped around how the shop actually works, plus the infrastructure, security and facility systems underneath it.

CLIENT
CG Signs
INDUSTRY
Custom sign manufacturing
TIMELINE
May – October 2026
MY ROLE
Product owner, designer and lead developer
SCOPE
Business platform, data migration, infrastructure, security, facility systems
SERVICES
SOFTWAREAIM365FACILITIES
CGSigns OS production board: active jobs in Design, Pre-production, Production, Post-production and Ready columns, with the week's shop capacity across the top. Customer names are blurred.
Production board — every active job, by stage. Customer names blurred.

01 — THE CHALLENGE

Off-the-shelf software that the shop was constantly working around.

CG Signs ran on a subscription shop-management system built for the sign industry at large. It handled the basics — but the data model fought how the shop actually works.

02 — WHAT I BUILT

One record that runs the whole job, from the first email to the final payment.

Next.js · TypeScript · PostgreSQL · Docker · Claude Code

03 — THE RESULT

1,100+

Catalog items priced live, so vendor price increases reach every quote.

The gaps showed up as lost time and lost margin.

  • Pricing drifted silently. Purchase orders and the materials catalog didn’t talk to each other, so vendor price increases never reached the quotes.
  • Estimating lived in people’s heads. Most of the shop’s work is custom manufacturing, priced item by item. The software assumed a simpler model, so real estimates happened in spreadsheets.
  • Email lived somewhere else. Customer requests, proofs and follow-ups sat in Outlook, disconnected from the jobs they belonged to.
  • Files lived somewhere else, too. Production files were on the shop’s file server; the system of record had no idea they existed.
  • Every month cost money. A recurring subscription for software the team was constantly working around.

A shop this size can’t afford a lot of things — but it can’t afford software that makes every job slower, either.

A design document first, not code.

I started with the full data model, every module, the integrations and a phased build plan. Four principles came out of it and held through every decision since.

  1. Built around the shop The quoting model mirrors how the shop manufactures: a quote is a set of products, and each product is a bill of materials — materials, labor, equipment and subcontract lines, each with its own cost and margin. When a quote is accepted, that same bill of materials becomes the production job. Nobody re-enters anything.
  2. Own the stack The platform runs on the shop’s own hardware, on its own network, with its own backups. Files stay on the shop’s file server, where the team already works.
  3. AI designed in, not bolted on The platform ships with its own MCP server, so Claude can look up a customer, build a quote or check an order from a chat window — with the same permissions as the person asking.
  4. Cut recurring costs, not corners Free and self-hosted is the default. When a free option doesn’t do the job well, the shop pays for the one that does.

CGSigns OS runs the whole job.

From the first email to the final payment — one record that carries the quote, the proof, the production job, the purchase orders, the invoice and every file and conversation along the way.

Every operation the team uses daily is also exposed through the platform’s MCP connector. Anything that emails a customer, records a payment or changes a contact never runs on its own — it queues for a person to approve.

Requests inbox: inbound emails sorted by urgency and type, each with a suggested owner and buttons to assign, reply, create a lead or start a quote. Request details are blurred.
Email intake — Claude classifies each request and queues it for the right person. Details blurred.
Panel sign calculator: panel size, material, print vinyl, laminate, a complexity slider and install option, with the product price calculated live.
Panel sign calculator — materials and labor price themselves.
WHO WORKS IN IT
  • Staff Quoting, production, purchasing and money — plus their own Outlook inbox.
  • Customers A portal for quotes, proofs, invoices and balances, opened with an emailed link.
  • Claude Through the MCP connector, with the same permissions as the person asking.
CGSIGNS OS

One record per job

  • Estimating
  • Engineering
  • Proposals
  • Design & proofing
  • Production
  • Purchasing & inventory
  • Time
  • Money
  • Communication
  • Customer portal
  • Facility
CONNECTS TO
  • Microsoft 365 Sign-in, mailboxes and calendars.
  • QuickBooks Online Two-way accounting sync.
  • Square Card and ACH payments.
  • File server Production files, where the team already works.
Staff, customers and Claude all work in the same record. Microsoft 365, QuickBooks, Square and the file server stay where they are — the platform connects to them instead of replacing them.
Mockup calibration: two points on a storefront photo set the real-world scale before a 144 × 36 in sign is placed. Neighboring business names and unit numbers are blurred.
Mockups start with a calibrated site photo. Neighboring signs blurred.
Bill of materials for a printed panel sign: materials, labor and ink lines priced from the catalog, with the sell total.
The quote’s bill of materials becomes the production job.

New software is only useful if the past comes with it.

I’m migrating the full history from the former shop-management software — not just open jobs — so a customer’s record in CGSigns OS looks the way it always has, only better organized. That meant building a migration pipeline rather than running a one-time export.

  1. 01 Extract A resumable, rate-limited extractor pulls every company, contact, quote, order, invoice and payment through the vendor’s API. Notes, tasks and attached files the public API couldn’t reach are collected in batched, read-only passes — about 17,000 files in all.
  2. 02 Transform Mapping rules recover details the source data loses along the way — truncated quantities, HTML descriptions, voided and refunded payments — and refuse to load duplicates.
  3. 03 Load and file Records load with their original numbers, and attachments are filed into each project’s folder on the file server.
  4. 04 Catch up A delta pass compares the live system to what was loaded and sorts every difference — new, changed, conflicting or deleted — so cutover day only moves what changed.

The cutover itself is a single, rehearsed date with readiness gates, a runbook and a rollback plan. No parallel run, no half-in, half-out.

Infrastructure and security.

Self-hosting only works if the foundation is solid, so a large share of the work happened below the application.

  • Isolated services. The platform, development tools, cameras and signage each run separately on the shop’s own hardware, so a problem in one stays in one.
  • A rebuilt rack. Faster switching, battery backup sized to the load and new fiber — with a live cable-tracing tool built for the rebuild.
  • Code stays in-house. Every internal app is built, reviewed and tested on the shop’s own development server, so code never depends on an outside service.
  • Patched automatically. Machines and containers are checked for vulnerabilities and kept patched; anything that needs a person is flagged first thing in the morning.
  • Backed up and watched. Nightly backups with a second copy, and alerts the moment something goes down.
  • Secure by default. Sign-in goes through Microsoft 365, and the payment flow had its own security review before it went live.
  • Managed devices. The shop’s computers are enrolled in device management, encrypted and held to compliance policies.

The building.

The same approach — own it, keep it simple, skip the subscription — carried into the facility itself: office signage, multi-zone audio and a live camera viewer, all on hardware the shop owns. That work has its own write-up.

In final testing, with cutover gated on readiness.

CGSigns OS is in final testing with the team, the migration pipeline is built and rehearsing, and cutover is gated on readiness rather than a date on the calendar. The infrastructure and facility systems are already in daily use.

The next phase moves deeper into the shop: tighter job costing against actual time and materials, more product calculators, and a jurisdiction-by-jurisdiction permitting reference that plugs into quoting.

NEXT PROJECT A sign shop that knows when someone’s at the door START YOURS If your business is running on software it constantly works around — or you want AI working inside your systems instead of beside them — let’s talk. Book a call →