Why this matters
Contract base44 work sits between freelance (one fixed sprint) and agency (ongoing retainer). The mistake most teams make is treating contract as a synonym for freelance and skipping the SOW work, then discovering at week six that scope, deliverables, and exit conditions were never written down. The SOW is the engagement. Without it, the engagement is a verbal agreement with money attached, which is how disputes happen.
Who this is for
- Hiring managers who need a defined deliverable in a 4-12 week window
- Operators integrating base44 with another system (Stripe, Salesforce, Snowflake) where the work is predictable but not trivial
- Founders who tried freelance and found the work slid past the original sprint scope
- Teams whose procurement requires a written SOW and milestone schedule before issuing a PO
- Companies with security review requirements that need an explicit IP assignment and data-handling clause
What separates contract from freelance
Three things.
Written SOW with acceptance criteria
A freelance sprint runs on a one-page brief and a verbal agreement. A contract runs on a written SOW with deliverables, acceptance criteria, and milestone payments. The SOW is the difference. It takes an extra hour of work upfront and saves weeks of dispute later.
Milestone-based payment
Freelance work is usually 50% deposit, 50% on completion. Contract work breaks payment across milestones — 30/30/30/10 is the canonical pattern. Each milestone has acceptance criteria written into the SOW. Payment triggers on acceptance, not on the engineer's claim of completion.
Termination clause
Freelance engagements end when the work ends. Contract engagements need an explicit termination clause: who can terminate, how much notice, what triggers payment, what happens to the code. Without that clause, early exit is contentious; with it, exit is administrative.
SOW structure that actually works
The SOW is one document, 4-8 pages, with eight sections.
1. Deliverables list
Bullet-pointed, specific, testable. "Build Stripe billing integration" is not a deliverable. "Stripe Checkout flow accepting credit cards, integrated with base44 user table, with webhook handler for subscription events, deployed to production with documented test cards" is a deliverable.
2. Acceptance criteria
For each deliverable, what must be true for the milestone to be accepted? "Code is in production" plus "the integration test suite passes" plus "a written summary is delivered." Specific. Testable. Not "I am happy with it."
3. Milestone schedule
Two to four milestones for a typical 4-12 week engagement. Each milestone has a date, a deliverable, an acceptance criterion, and a payment trigger.
| Milestone | Deliverable | Payment trigger | % of total |
|---|---|---|---|
| Kickoff | SOW signed, calendar reserved | On signature | 30% |
| M1 | First feature shipped, tested | On acceptance | 30% |
| M2 | Second feature shipped, tested | On acceptance | 30% |
| Handoff | Documentation, walkthrough, credentials | On acceptance | 10% |
4. Cost cap (if hourly)
If you are billing hourly — typical for exploratory architecture work — write a cap. "Up to 80 hours at $200/hour, total not to exceed $16,000." Without a cap, hourly contracts balloon.
5. IP assignment
"All code, deliverables, and intellectual property created under this SOW transfer to [Client] upon payment of the corresponding milestone." On payment, not on delivery. Unpaid invoices should never freeze your codebase.
6. NDA reference
The SOW references the NDA (signed separately or attached). Mutual NDA is standard. One-way NDA against the contractor without reciprocal protection is a red flag — see the red flags page.
7. Named engineer
The engineer who will do the work is named on the SOW with their LinkedIn URL. If the contractor cannot commit to a named engineer, you are buying a body shop and you should price accordingly.
8. Termination clause
"Either party may terminate this SOW with 14 days written notice. Upon termination, [Client] pays for all accepted milestones plus pro-rata for any milestone in progress. [Contractor] hands off all code, credentials, and documentation within 7 days of termination."
Payment schedule patterns
Three patterns work, depending on engagement size and risk profile.
- 30/30/30/10. Default. Works for 4-12 week engagements with 2-3 milestones.
- 50/50. Two milestones, deposit and completion. Works for 2-4 week engagements with one deliverable.
- 20/40/40. Smaller deposit, larger milestone payments. Use when the contractor wants more skin in the game and you have negotiating leverage.
Patterns to avoid:
- 100% upfront. No leverage if quality is poor. Only acceptable for sub-$1,500 engagements with a known contractor.
- 100% on completion. Contractor carries all risk, will price accordingly. Most senior engineers will not sign.
- Hourly with no cap. Budget overrun mechanism. Always negotiate a cap.
Trade-offs and pitfalls
The dominant pitfall in contract base44 work is letting scope creep without re-papering the SOW. Each new feature request needs a written change order, a new milestone, and a payment trigger. Without that discipline, you are running a retainer through a contract structure and the budget grows without governance. The fix is administrative: every change request triggers a one-page change order. Yes, that is friction. The friction is the point.
The second pitfall is signing a SOW with no termination clause and no IP assignment timing. When the engagement goes well, none of this matters. When it goes poorly — and roughly 15% of contract engagements go poorly — these clauses are what determines whether you walk away with code or with a lawyer's bill.
The third pitfall is misclassification of contractor as employee. If you control the contractor's hours, location, and tools, the IRS may classify them as a W-2 employee retroactively. Most base44 contract work satisfies 1099 criteria because the contractor sets their own schedule. If yours does not, talk to your accountant before signing.
How Base44Devs fits in
Base44Devs runs contract engagements as productized fixed-price scopes — $3,000 multi-bug rescue, $9,000 standard build, $15,000 premium build, and migration tiers from $6,000. Each engagement runs on a written SOW with milestones, named engineer, IP-on-payment, and 14-day termination. Book a free 15-minute call to scope, or order an audit first.
Related options
- Hire a base44 freelancer — for sub-$3,000 single-sprint work without the SOW overhead
- Hire a base44 agency — when scope is multi-month and needs retainer-shaped delivery
- 32-point vetting checklist — what to verify before signing the SOW