Carolina Custom Surfaces · Sales CRM · Version 1

Everyone thinks the building is the hard part.

It isn't. This page is a record of what actually went into making a working CRM for our sales team — measured, not estimated, and counted straight out of the project's own files.

Started
Team launch
Elapsed
Built by
One person

The shape of it

working days out of every one available carried committed work.

01 · Before a single feature existed

Most of this project was writing, not code.

Software gets specified before it gets built. Every screen, rule and edge case is described in writing first, argued over, then handed to the machine that types it. That written layer is invisible in the finished product and it is where the time goes.

Commits that changed written documents
Commits that added a feature
Commits that fixed something

words of written specification
specification documents
formal decision records
words of specification written for every line of code

02 · The thing itself

What is actually running.

All of it sits behind our Microsoft sign-in, connects to Outlook mail and calendar, and takes leads straight off the website.

screens
lines of application code
lines of database code
jobs running on a schedule
saved changes
batches of work reviewed and merged
files in the project
database upgrades, applied in order

Inside the database, read live:

tables
columns
database functions
rules deciding who can see which records

03 · The part nobody sees

Every change is checked 3,605 ways before it ships.

Working software is not software that worked once. Each of these is a small automatic test that re-runs on every single change, so a fix in one place cannot quietly break something in another.

automatic checks, every change
logic tests
tests that drive the real screens
database checks
Code that makes the product work
Code written purely to prove it works

For every four lines that do something, three more exist only to keep them honest.

04 · Rework

A third of the plan had to be rewritten mid-build.

Nothing was specified once and left alone. Plans met reality, reality won, and the change had to be written down before the code could move — which is why so much of the effort above is words.

of 306 planning documents carry a formal amendment
places a decision replaced an earlier decision
total lines written across the build
of those lines later removed

None of that churn ever reached the team. Zero changes had to be rolled back after shipping, and exactly two files were ever deleted from the project. The revising happened in the plans, before the code — which is the whole point of writing them.

And one whole piece was built, then stopped.

It was specified, built, tested, and never shipped — stopped by a change of direction the day after the last of it was written. The work is parked intact rather than thrown away, so it can be picked up if the decision changes.

lines written, then set aside
files
words of specification
lines of tests for it

05 · What outlasts the person who built it

The knowledge base was started before the code was.

words of company knowledge, written alongside the build
pages
links between pages
of 81 pages connect to at least one other

This is the answer to a question nobody has asked yet. The approved plan flagged one risk as unlikely but severe: the person building this becoming unavailable. The mitigation written there was documentation good enough that somebody else could pick it up.

Kept in a company repository, on company accounts, under CCS ownership — same as the CRM itself.

06 · What it cost, and what buying it would

$850 to build. $900 a year to run.

Everything below is for the same six people. The comparison figures are published list prices, checked in August 2026.

The honest trade. Buying costs money and almost no time. Building cost almost no money and 633 hours. The reason to build was never the price — it was that the bought ones don't fit how we sell, which is why the last two we tried didn't stick. The savings are real, and they are the second reason, not the first.