How We Architect Apps for Acquisition Day
When Verb acquired LyveCom, they inherited a codebase designed for due diligence. Here's how we build for exit from Day 1.
Core Concept
Most startups code like they’ll run the company forever. Then acquisition talks start, and due diligence reveals:
- Spaghetti code (impossible to onboard new team)
- No documentation (tribal knowledge)
- Hardcoded secrets (in Git history!)
- No tests (QA is manual)
The buyer walks away.
When we architect ventures, we assume Day 1 is the last day before acquisition due diligence starts.
The Constraint
What acquirers look for in technical due diligence:
1. Code Quality
- Clean architecture: Can their team understand it?
- Test coverage: Can they deploy without breaking it?
- Documentation: Can they onboard without calling you?
2. Scalability
- Infrastructure: Can it handle 10x growth?
- Database design: Proper indexes, no N+1 queries?
- Security: Penetration test results, audit logs?
3. Ownership & Licensing
- Open source dependencies: Any GPL contamination?
- API keys: Are they rotatable?
- Data sovereignty: GDPR compliant?
One red flag = 30% haircut on valuation.
The Solution
We build with “Acquisition Architecture” from Day 1.
The Checklist:
1. Code Organization
/project
├─ README.md # How to run it locally
├─ ARCHITECTURE.md # Why we made key decisions
├─ docs/
│ ├─ setup.md # Onboarding guide
│ ├─ deployment.md # How to deploy
│ └─ api.md # API documentation
├─ tests/
│ ├─ unit/
│ ├─ integration/
│ └─ e2e/
└─ src/
├─ features/ # Feature-first (not layer-first)
└─ shared/
Why this matters: Acquirer’s tech team can understand the codebase in 2 hours.
2. Secrets Management
Never hardcode:
// ❌ BAD
const apiKey = "sk_live_abc123";
// ✅ GOOD
const apiKey = process.env.STRIPE_API_KEY;
We use:
.env.example(checked into Git).env(never checked in)- Supabase Vault (for production secrets)
Why this matters: Acquirer can rotate all keys on Day 1 of ownership.
3. Database Migrations
All schema changes as versioned .sql files:
supabase/migrations/
├─ 20260101_create_users.sql
├─ 20260115_add_payments.sql
└─ 20260201_add_indexes.sql
Why this matters: Acquirer can see exactly how the database evolved. No surprises.
4. Test Coverage
Minimum 70% coverage:
- Unit tests for business logic
- Integration tests for API
- E2E tests for critical flows
Why this matters: Acquirer’s team can deploy without fear.
5. Observability
Production monitoring:
- Sentry (error tracking)
- Grafana (metrics)
- Postgres slow query log
Why this matters: Shows you’re serious about uptime.
The Example: LyveCom → Verb Acquisition
What made the deal close:
- Clean codebase: Verb’s team onboarded in 3 days (vs 3 months typical)
- Full test suite: 82% coverage (gave them confidence)
- Documented APIs: Every endpoint had OpenAPI spec
- Infrastructure as Code: Terraform configs (they deployed to their AWS)
- Security audit: Passed pen test with zero critical issues
Result: $12M acquisition with 90% cash (not stock).
What would have killed the deal:
- Hardcoded AWS keys in Git history (they found this in another target and walked)
- No tests (means 6 months of QA before they trust it)
- Undocumented “magic” code (technical founder leaving is a risk)
The Trade-Off
What you lose:
- “Move fast, break things” freedom
- Ability to hack together prototypes
What you gain:
- Higher valuation (clean code = less risk)
- Faster M&A process (due diligence in 2 weeks, not 3 months)
- Multiple acquisition offers (strategic + financial buyers)
The Founder Truth
Two companies with identical revenue:
Company A:
- $5M ARR
- Spaghetti code
- No tests
- Valuation: $10M (2x revenue)
Company B:
- $5M ARR
- Clean architecture
- 80% test coverage
- Documentation
- Valuation: $25M (5x revenue)
The difference: $15M.
Why? Acquirers pay for transferable assets, not tribal knowledge.
The Playbook
From Day 1:
- Write
README.md(assume you quit tomorrow) - Document every architectural decision (
docs/adr/) - Write tests (not later, now)
- Use environment variables (never hardcode)
- Version database schema (
.sqlmigrations) - Monitor production (Sentry, Grafana)
The cost: 20% slower iteration speed.
The return: 2-3x higher exit valuation.
The First Principle: Code for the engineer who inherits your system, not for yourself. That engineer might work for the company that acquires you for $10M.