Most custom software firms will not put a price on their website, and I understand why, because every project is different and a number without its scope can mislead people. The problem is that the first thing a business owner wants to know is roughly what this costs, and "it depends" does not help anyone plan.

So here is a real one. A small manufacturer sent us a written scope asking vendors to bid on replacing their legacy ERP with a custom system they would own, on a 12-month deadline. Below is the quote we sent back, with the prices left in, followed by what changed when it turned into an agreement.

Read this first

This is one small customer ERP project, and the quote was packaged specifically for that customer's request. They wrote the scope and set the dates, and we priced the work to fit it. The client's name, people and system names are removed, and the project plan is written in general terms that fit most small manufacturers, so it doesn't point to any one shop. The fees and terms are as we quoted them. It is an example of how we price, not a price list, and a different scope gets a different quote.

What the customer asked for

The customer is a small shop, with a few dozen people using the system. They wrote down exactly what Phase 1 had to do and sent it to the vendors bidding on it, which made this much easier to price. The short version:

Anything they could live without at launch, like customer portals, tablet screens on the floor and advanced scheduling, went into a Phase 2 list that is not priced here.

The quote at a glance

Two at a timeFour at a time
Projects in progress at onceUp to 2Up to 4
Term12 months12 months
Monthly fee$8,000$15,000
Best whenYou want a steady, focused flow of workYou want more work done in the same time

The fee covers all of our labor and project management. Servers, licenses and third-party tools are not in it, and each one gets itemized and approved by the customer before anything is bought. The customer can switch between packages, up or down, by telling us, and the new fee starts the next billing period.

What it adds up to

If the customer stayed on one package for all 12 months, two at a time comes to $96,000 for the year ($8,000 × 12) and four at a time comes to $180,000 ($15,000 × 12). Both totals are labor only, before servers and licenses. The real total can land anywhere between, or below, because the customer can switch packages or stop at the end of a month.

Why it is a monthly retainer with two packages

We work as the customer's development team for one monthly fee, in their repository and their environments. The two packages build the same system and the customer owns it either way. The only difference is how many projects run at the same time, which mostly changes the pace.

What "a project" means here

A project is one numbered line of the plan below, like "Shipping and finished goods." Each one has a short description and an acceptance test that both sides agree on before it starts, so everyone knows what finished looks like.

The customer keeps one numbered list of projects, and number 1 matters most. The top two (or top four) are in progress, and when one is accepted the next one on the list starts. They can re-rank the list between projects and at a monthly review. A new idea never gets added to a project that is already running. It goes on the list as its own project and starts when a slot opens, which is how the scope stays fixed without saying no to good ideas.

The limit of two or four is on purpose. It keeps every project small enough to finish, and it leaves room to pull someone onto an emergency without stopping everything else. With a list of 8 projects that each take about the same time, two at a time works through it in about 4 rounds and four at a time in about 2. Real projects vary, so that shows the difference in pace, not a date.

The 12-month plan

This is how we estimated the year would go, with the details written in general terms. Several projects are always moving at once, so each month shows what we expected to be finished by then. These months are estimates. The firm deadline for each project is set when it starts.

MonthProject finishedAcceptance test (example)
11. FoundationEveryone signs in with their own account. Every change is logged with who made it, the old value, the new value and when. A backup restores cleanly.
32. Customers, parts and quotingAn estimator builds a quote from a part's routing, labor and material cost, sends it as a PDF, and can pull it back up exactly as it was sent.
53. Orders and work ordersA customer order becomes a work order with the right part revision, routing and documents attached.
54. Scheduling and shop floorOperators clock on and off jobs from the floor and record scrap. The supervisor sees what is running on each machine and can reorder the queue.
66. Outside workJobs sent to an outside vendor, like painting or heat treating, show what went out, what came back and when the rest is due.
75. Inventory and purchasingPurchasing sees what is short across all open jobs. Receiving a partial shipment updates the stock and the purchase order.
77. QualityInspection results and nonconformances are recorded against the job, and a part on hold shows on the work order.
88. ShippingPacking slips print from the order, and a job with an open quality issue cannot ship unless someone records an override.
89. Costing and accountingActual job cost (labor, material and outside work) compares against the quote. Each invoice goes to the accounting system once.
1110. Documents and reportingQuotes, travelers, purchase orders and packing slips print as PDFs. Managers can see on-time delivery, job margins and machine load without exporting to a spreadsheet.
1211. Migration and cutoverCustomers, parts, inventory, open orders and open purchase orders are moved over and checked against the old system. The old system is retired.

Two milestones sit inside that plan. In month 7 the customer starts exporting data from the old system, and in month 8 the first full test migration is accepted and they start running real jobs on the new system alongside the old one. That overlap runs until cutover in month 12.

Why every project has a test

"Build the shipping module" can mean almost anything, and vague lines like that are one way ERP projects drift. "A job with an open quality issue cannot ship unless someone records an override" is something a person on the floor can check. When the test passes, the project is done, and the next one on the list starts.

Emergencies come first

If something stops production, or is about to, or a hard customer or compliance deadline lands, the customer can call it an emergency. We start the same business day, ahead of the list, at no extra fee. The days an emergency takes move the affected projects by the same number of days, we confirm that in writing, and it never counts as a missed deadline.

A deadline on every project

Before each project starts, we agree its deadline together in writing. If we miss it, we have 30 days to fix it at no extra charge. If it is still not accepted after that, the customer can cancel immediately and pays only through that day, with no termination fee. If a delay comes from the customer's side, like late data exports, access or decisions, the deadline moves by the same number of days and we say so in writing.

The customer owns everything

Everything we build belongs to the customer from the moment it is written: the source code, database changes, deployment files, integrations and documentation. It lives in their repository from day one. Open-source and commercial components keep their own licenses, and we document each one. If the engagement ends for any reason, they keep the code, the repository and the documentation.

What is not in the price

What changed when the quote became an agreement

A quote is where the conversation starts. When we drafted the retainer agreement from it, the prices, the packages, the plan and the ownership terms stayed the same, and a few working terms changed:

Would this fit your shop?

This shape works when a manufacturer has decided the old system has to go, knows roughly what the new one must do, and has someone inside who knows the data and can test. If your list is shorter, it would likely finish sooner or fit the smaller package. If you are not sure yet whether to build at all, start with custom ERP or off the shelf, for a small manufacturer. We also wrote about replacing an ERP without shutting down the business and what custom software costs in general, and the service itself is ERP modernization.

If you have a scope written down, even a rough one, send it over and we will tell you how we would package it. Reach out here or call (507) 388-4748.

Using an AI assistant? It can send this inquiry for you. How that works.