sethserver.com Subscribe
A turquoise retro-style robot with segmented arms, large round eyes, and an antenna sits examining a long paper document with a magnifying glass, highlighting a section in coral/pink color. The background is split between purple tones with a darker horizontal line dividing the upper and lower sections.

What Actually Goes in a Consulting Contract

By Seth Black • Updated: September 17, 2026

Startups · 5 min read

Like this kind of writing? Get one email a week with notes on startups, AI, and the occasional strong opinion about Python: subscribe to the newsletter.

I've built software on a handshake promise for a government contract that evaporated when a base got realigned. I've had a client roll up in a Lamborghini every time I saw him and somehow never have money when his invoice came due. I've signed "standard parting paperwork" that tried to claw back a signing bonus I never received and a relocation payment for a city I never moved to. Every one of those situations had a contract problem I didn't see coming.

Not a lawyer. Get a real attorney to review anything before you sign it. But I've signed enough bad contracts to know what matters and what smells wrong. Here's what I actually watch for.

Scope and Change Control

This is the one that bleeds you dry. The scope section needs to say exactly what you're building and what you're not building. What happens when someone asks for something outside that line? That needs to be in there too.

Vague scope is a gift to them and a trap for you. "Build a web application for our internal team" is reasonable until month three when they want a mobile app and an API for their partners. If the contract doesn't define change control - a written process for requesting new work, pricing it, and getting it approved - you'll spend half your time arguing about what's "in scope" instead of shipping anything.

My standard language requires any change request to be submitted in writing and approved before work begins. No approval, no work. It sounds rigid. It saves relationships. Scope fights are how good engagements turn ugly.

Payment Terms and Late Fees

Never start without money in hand. My standard is a substantial deposit before I write a single line of code - somewhere between 25% and 50% depending on the project size. If a client won't pay upfront, that tells you something worth knowing before you're three months deep.

Payment checkpoints should tie to deliverables, not calendar dates. "Net 30 on project completion" means you finish the work, wait a month, chase them, then wait another month. Tying payments to specific deliverables keeps cash flowing and gives both sides clear checkpoints.

Put a late fee in. Something like 1.5% per month on overdue balances. Most clients will never trigger it. The ones who would are exactly the ones you need it for. The oncologist with the Lamborghini taught me that.

IP Assignment and What You Keep

This one has two sides and most contracts only cover one of them.

They want to know they own what you build for them. Fine. Standard. But you need to carve out anything you brought in before the engagement - your libraries, your frameworks, your reusable tooling. If you don't, you may have just handed over code you use with every other client.

The clause I look for: the client owns the custom deliverables, and I retain ownership of any pre-existing tools or general-purpose code I bring in, with a license granted to them to use that code in the deliverable. If a contract tries to assign all IP including prior work with no carveout, push back hard.

Also watch for "work for hire" language in consulting agreements. Work for hire has a specific legal meaning and it's not always what either party intends. Flag it for your attorney.

Liability Caps

Most standard consulting contracts will try to hold you liable for everything forever. Don't accept it.

A liability cap limits your total exposure to something like what they paid you in the last three months. This is normal. It's not you being shady - it's you not betting your house on a software project going sideways for reasons outside your control.

Carve-outs for gross negligence and intentional misconduct are standard and fine. But uncapped liability for lost profits, lost revenue, and business interruption is a deal-breaker. A bug in a reporting tool shouldn't expose you to a client's entire quarterly revenue.

Termination

Both sides need a clean exit. I want a termination-for-convenience clause that lets either party end the engagement with 14 days written notice.

What happens to payment when the contract terminates matters. My standard: I get paid for all work completed through the termination date, plus any non-refundable expenses already incurred. The deposit is non-refundable if they terminate without cause after work has started.

Watch for termination clauses that let them walk away and claw back payments already made. That's not a termination clause - it's a mechanism for getting free work.

Non-Solicit

Most clients want a non-solicit clause that stops you from poaching their employees. That's reasonable. Sign it.

What's not reasonable is a clause that stops you from working with their clients, their vendors, or anyone else you happened to meet during the engagement. Read it carefully.

The non-compete is a different animal. A broad non-compete that keeps you out of your field for two years is the kind of thing someone slips into "standard" paperwork hoping you won't read it. I know this from experience. Read every word.

Red Flags That Mean Walk Away

Some contract problems you can negotiate your way through. These ones, I don't bother:

A client who fights reasonable, standard contract terms before the engagement starts will behave the same way when something goes wrong during it.

Get a template from a real attorney. Pay for it once, update it as you go, and use it as your starting point on every engagement. The clients worth working with won't blink at a professional contract. The ones who push back hard over standard terms are showing you exactly who you'd be dealing with for the next six months.

-Sethers

Share this post
Newsletter

One email, once a week.

Notes on databases, systems, and the occasional strong opinion about Python. No spam, unsubscribe anytime.

Seth Black
Written by

Seth Black

Engineer and founder based in Texas. Writes about databases, AI, and running things in production. Embeds in small teams as lead engineer.

More from Startups

View all →
Startups

Productizing a Service: From Hours to Licenses

Jul 26, 2026
Startups

The MVP That Is Not a Product

Jul 11, 2026
Startups

Vanity Metrics Look Better When AI Generates Them

Jul 11, 2026