Software Consulting
For systems that have grown expensive, fragile, or impossible to change safely. I find what is actually wrong, fix it, and stay on as the senior technical voice if you need one. Based in Roanoke, Virginia; working across Virginia, the DC metro and remotely.
Is this you
The situations I get called for
If more than one of these is familiar, they are usually the same problem wearing different clothes.
The same things keep breaking, and each fix quietly creates the next one. Nobody can say why, because nobody has looked at the whole system in a long time.
A dozen tools that do not talk to each other, and no one person knows the total bill or which of them you could stop paying for tomorrow.
You need a senior technical opinion in the room for decisions you cannot take back, but you cannot justify a full-time hire to get it.
Your team is competent and still slow, because every change has to be made in four places and nobody trusts the tests.
You need something built that does not exist off the shelf, and the last agency quote read like a rewrite of everything you already have.
You want agents to be able to use your product, and you are not sure whether that is a weekend of work or a year of it.
Engagements
Three shapes, and what each actually involves
Most work starts as an assessment, because guessing at the fix is how the last three fixes went.
Assessment
One to two weeks, fixed fee, fixed scope
I read the code, the infrastructure, the integrations and the bills, and I talk to the people who maintain it. Then I write down what is actually wrong, in order of what it is costing you.
You get a written report containing: the root causes rather than the symptoms, ranked by cost and risk; what breaks next if nothing changes; a sequenced plan with rough effort against each item; and an explicit list of the things I looked at and found to be fine, so you know where not to spend money.
Best when: something is clearly wrong and the diagnosis keeps changing depending on who you ask.
It ends with the report. There is no obligation to hire me for the work it recommends, and the report is written so another engineer could execute it.
Fix
Two to eight weeks, milestone-based
Building the thing: an integration, an internal tool, a replacement for a system that has stopped earning its keep, or the agent-facing surface your product does not have yet.
You get: working software in production, not a prototype; tests you can run yourself; documentation written for whoever maintains it next; and a handover session. Each milestone is something that works, so you can stop after any one of them and still own something useful.
Best when: the problem is understood and the work is the bottleneck.
What it is not: a rewrite. If the honest answer is that your system is fine and the problem is elsewhere, I will tell you that during the assessment rather than after invoicing you for six weeks.
Fractional CTO
Monthly retainer, roughly a day a week
A senior technical voice with enough context to be useful, on a standing basis, without the cost or the commitment of a full-time hire.
In a typical month: architecture decisions written down with their trade-offs; code review on the changes that matter; vendor and tooling evaluation; interview support and technical hiring input; and being reachable when something is on fire.
Best when: you have engineers but no one whose job is the shape of the whole system.
How it ends: monthly, cancel with notice. A fractional CTO who is doing the job well should be making themselves less necessary, not more.
What it costs
Said plainly, before you call
Being unable to find out what something costs without booking a call is a waste of your afternoon and mine.
Assessment: $2,500 to $5,000
A fixed fee agreed before it starts, set by the size of the system rather than by the hour. A single application with one integration sits at the bottom of that range; a decade of accumulated systems sits at the top.
Fix: quoted per milestone
Quoted from the assessment, because quoting a build without having read the code is how projects end up at three times the estimate. You approve each milestone before it starts.
Fractional CTO: monthly retainer
Priced on the time reserved rather than time tracked, so asking me a question does not cost you anything and you are never billed for a Slack message.
The triage call is free
Fifteen minutes, no preparation needed. Often it ends with me telling you that you do not need to hire anyone, which is a perfectly good outcome.
Evidence
What I have actually built
Delivery capability is available from a lot of people. Judgment is the thing an engagement is really buying, so here is some you can inspect.
A published standard
I wrote and published Wired for Agents, four criteria for whether a product can actually be driven by an agent. It is public, objective and checkable, which means you can judge how I think before paying me anything.
Architecture that held up
Slotomancer, a cross-platform game I built solo, shares 100% of its code between desktop and mobile behind a ports-and-adapters boundary. Under 500 lines per platform shell, zero platform dependencies in the core, and roughly 60% faster iteration than maintaining two codebases.
AI systems in production
Duly, a civic platform of mine, runs verified constituent feedback through summarisation, clustering and urgency classification. Privacy-first by design, with the verification step first because an AI pipeline fed unverified input produces confident nonsense at scale.
Seventeen years of the rest
A portfolio of shipped work on the homepage, most of it unglamorous: integrations, migrations, and systems that had to keep running while they were being changed. That is the majority of consulting work, and it is the part that rarely photographs well.
Worth stating plainly: those are my own products rather than client engagements, so treat them as evidence of judgment and range, not as a reference list. Client work is covered by the usual confidentiality, and I would rather show you something real than describe something anonymised.
Where I am most useful
Areas of deep expertise
Agent-readiness
Making a product something an agent can actually use: a documented API, an MCP server, machine credentials that do not assume a human is present, and discovery that works from the bare domain.
Integration and untangling
Systems that were bought separately and never meant to work together. Usually the cheapest large win available, because the alternative on the table is normally a replacement.
Cost and reliability
Finding what you are paying for twice, what is failing silently, and what would fall over under a load you are planning for. Silent failure is the expensive kind; nothing alerts on it.
Architecture that survives change
Decisions that still make sense in three years, and the boundaries that let a small team move without coordinating everything with everyone.
Process
How this actually goes
Triage call
Fifteen minutes. You describe what is going wrong; I ask the questions that narrow it down. Free, and it sometimes ends with a recommendation to do nothing.
Scope and fixed price
If an assessment makes sense, you get the scope and the fee in writing before anything starts. No hourly surprises.
The work
I read the system and talk to the people who run it. You get progress as it happens rather than silence followed by a document.
Findings and a decision
The report, walked through together. Then you decide what happens next, including whether that involves me at all.
AI tools touch most of that work. Which tools, what they are allowed near, how the output gets checked and what happens to your material afterwards is written down in the AI use policy, so you can decide before we start rather than after.
Related
Other ways to work together
Start with fifteen minutes
Describe what is broken. If I am not the right person, I will say so on the call rather than after the invoice.