Person

What We Built, What It Cost, What Broke

TA Trevor Ashland

Five jobs from the last three years, with the real numbers. I put the prices in because small operations get quoted wildly different figures for the same work and almost nobody will tell them what normal looks like. Two of these went badly and those write ups are here too. If you are weighing a quote right now, take these as a yardstick and send me yours.

01 Jobs and prices

Every build we have shipped since 2023, what the client got and what they paid. Prices are the total fixed fee, not including the $350 a month support that some of them take and some do not.

Junction City creamery, order and route system

Nine employees, forty wholesale accounts, delivery routes on three days. $28,400 fixed, delivered in eleven weeks.

The creamery was running standing orders in a paper binder and a route sheet the driver rewrote by hand every morning. We built order entry with standing order templates, a route builder that groups by delivery day and drops the stops in driving order, and an invoice run that ties to their existing books. Biggest win was not the software. It was sitting in the truck for two full delivery days first. That is where we learned the driver needs the stop list on paper because the phone mount vibrates loose on the gravel section out to Monroe, and that two accounts want their invoice left in a specific cooler. $28,400 fixed, eleven weeks, code in their repository. They took the support contract. In two years we have had four after hours calls, all of them a printer.

Two logging contractors, payroll with prevailing wage

Crews of 14 and 22, multiple job codes, state prevailing wage on public land contracts. $19,800 each, shared design, second one cost us almost nothing to deliver.

Both outfits were paying a service that could not handle a faller who works two job codes in one day at two different rates, so a bookkeeper was correcting every run by hand. We built time entry by job code, automatic rate lookup against the current state wage determination, and the certified payroll report in the format the agency actually accepts. That last part took three attempts and one very patient phone call to Salem. We charged the second contractor the same $19,800 even though the build was mostly done, and I still think that was the wrong call. We should have charged them less and said so. It is the main reason we now publish a repeat build rate.

The full contract we use, including the code ownership clause and the handover terms, plus the current rate card. Take it, change the names, use it against us if you like.

🔗Our contract template and rate cardmillracesoftware.coop
02 Two that went badly

Post mortems on the jobs we did not do well. We publish these because a shop that has never lost a job is a shop that is lying or new.

Grange hall booking calendar, overbuilt and abandoned

We built a $9,600 booking system for volunteers who needed a shared calendar and a deposit form. Six months later they were back on paper.

This was our failure, not theirs. The volunteer who asked for it was enthusiastic and technical and described a system with member tiers, recurring holds and a deposit ledger. We built what he described. Then he moved to Bend, and the three women who actually run the hall found themselves with software none of them had asked for. It had five screens where they needed one. They went back to the wall calendar within six months and they were right to. What we changed: we now require at least two of the people who will use a system daily to be in the discovery week, and we will not start a build if the only advocate is the person who will not be operating it. We refunded $4,000 and we still owe them a simpler calendar.

Clinic scheduler, underestimated by nine weeks

Quoted twelve weeks for a rural clinic scheduling tool. Took twenty one. We ate the overrun, which cost the co-op about $22,000 in unbilled time.

I did not understand how much of a clinic schedule is exception handling. Provider licensure by site, interpreter availability, one room that can only be used for two procedure types, a rule about not booking a certain provider after 3pm on Fridays that nobody could explain and everybody enforced. Our fixed price contract means the overrun is ours to carry, and we carried it. That was the right outcome for the client and a hard year for us. What we changed: healthcare scheduling now gets a two week discovery instead of one, and the fixed price is quoted after we have written out every scheduling rule and had the front desk staff tell us which ones we got wrong.
03 How the shop runs

We get asked about the cooperative structure more than the software, usually by people thinking about forming one. Here is the honest version.

Equal pay, one vote, and what that costs

All five of us draw $42 an hour regardless of role. Contracts go to a vote. It is slower than a boss and better than a boss, and I will not pretend the tradeoff is free.

Everyone draws the same. Our most senior developer could make substantially more in Portland and knows it. She stays because she chooses the work and nobody can sell the shop out from under her. Contracts go to a vote at the Monday meeting. We have turned down four jobs on votes I lost, including one worth $70,000 for a company that wanted keystroke monitoring in a warehouse tool. Losing that vote annoyed me for a week and was obviously the right decision. The cost is speed. Anything structural takes two weeks to decide because it needs a meeting and a sleep on it. If you want to move fast on your own judgment, do not form a co-op, hire people and be a decent boss instead.

Our filed Oregon bylaws and the patronage allocation policy, both in plain text. Two other shops have already forked these.

🔗Bylaws and patronage policymillracesoftware.coop