MyDealList · Due diligence
The Asset Purchase Agreement (APA) Technical Audit: Protecting Code, IP, and Data Assets
Production-grade APA technical audit for SaaS acquirers: GitHub commit history verification, OSS license compliance (GPL/MIT/Apache), IP assignment schedules, GDPR/CCPA data migration compliance, and TAPAS scoring before close.
The most expensive gap in micro-acquisition is not a missed churn cohort—it is signing an saas asset purchase agreement without verifying that the code, intellectual property, and customer data listed on Schedule A actually transfer cleanly. Sellers present revenue dashboards while hiding forked GPL dependencies, contractor commits without assignment documents, and GDPR consent records that do not survive a controller change. A disciplined APA technical audit separates acquirers who compound cash flow from buyers who inherit litigation disguised as recurring revenue.
This masterclass is written for acquisition entrepreneurs evaluating SaaS, browser extensions, and API-first tools in the $10k–$500k range. You will learn how to run a complete APA-aligned technical audit: GitHub commit history verification, OSS dependency compliance across GPL/MIT/Apache licenses, software IP assignment clause schedules, and data transfer compliance merger workflows for GDPR and CCPA before you wire escrow release.
Pair this with our IP & copyright due diligence playbook, legal framework for digital asset purchases, pre-acquisition security penetration testing checklist, and micro-SaaS tech stack audit for a complete buy-side operating stack.
Not legal advice. Privacy and IP law vary by jurisdiction. Engage qualified counsel before signing any APA or accepting technical transfer deliverables.
1. The APA Technical Audit Topology: What the Contract Must Prove
An APA technical audit is not a generic code review—it is the engineering verification layer that makes Schedule A, IP exhibits, and data assignment clauses enforceable. Revenue without verified technical transfer is a rental agreement the seller can revoke through repo access revocation, license contamination claims, or privacy regulator action.
1.1 The five-layer APA technical asset model
| Layer | Assets verified | Primary APA instrument | Failure mode if unverified |
|---|---|---|---|
| L1: Source code & repos | GitHub org, branches, CI configs, deployment scripts | Schedule A + Copyright Assignment Exhibit | Seller retains org admin; buyer cannot deploy or enforce |
| L2: OSS license compliance | npm/pip/cargo deps, SBOM, NOTICE files, copyleft linkage | IP reps + License Compliance Exhibit | GPL contamination forces disclosure or rewrite |
| L3: Contributor IP chain | Commit authors, contractor assignments, work-for-hire docs | IP Assignment Schedule + contributor matrix | Third party claims ownership post-close |
| L4: Customer data (GDPR/CCPA) | User DB, consent logs, subprocessors, ESP exports | Data Assignment Exhibit + privacy notice plan | Regulatory fines; unlawful marketing to acquired list |
| L5: Infrastructure credentials | Hosting, DNS, Stripe, analytics, secrets vaults | Schedule A account inventory + closing checklist | Seller retains kill switch on production systems |
Professional acquirers score each layer independently before APA signing. A clean L1 (repo transfer) with a contaminated L2 (AGPL dependency in core API) still fails the technical audit—the product may be commercially unusable without a full rewrite.
2. Why Technical Audit Runs in Parallel With Legal IP Review
Counsel drafts the software IP assignment clause language; engineering proves the underlying facts. If legal accepts seller reps without a GitHub commit history audit and SBOM scan, you have contractual protection against claims you cannot disprove—and indemnity caps on micro-deals rarely cover remediation cost.
| Workstream | Owner | Deliverable | Feeds into APA section |
|---|---|---|---|
| Legal IP review | Counsel + buyer | Assignment exhibits, reps, survival | Sections 3–4, IP schedules |
| Technical audit (this guide) | Technical DD lead | SBOM, contributor matrix, data export test | Schedule A, technical reps |
| Security audit | Security lead / pentest vendor | Vuln report, cloud config review | Security reps, holdback triggers |
| Privacy / DPA review | Counsel + buyer ops | Lawful basis memo, subprocessor list | Data assignment + notification plan |
The APA is only as strong as the evidence behind it. Legal language without a technical audit is optimism; a technical audit without legal assignment exhibits is engineering theater.
3. GitHub Commit History Audit: The Chain-of-Authorship Protocol
Repository transfer is a technical action—not proof of ownership. A GitHub commit history audit maps every contributor to a signed IP assignment or work-for-hire agreement before the copyright assignment exhibit is executed. See our IP playbook for the six-layer IP model; this section focuses on APA-ready execution.
3.1 Pre-audit repository access requirements
- Read access to all repos listed on draft Schedule A
- GitHub org membership with audit log visibility (if org-owned)
- Full clone including all branches and tags—not default branch only
- CI/CD workflow files (.github/workflows, GitLab CI, etc.)
- Submodule and monorepo package boundaries documented by seller
3.2 Commit history audit commands
3.3 Contributor-to-assignment mapping matrix
| Git signal | Required APA evidence | Audit status |
|---|---|---|
| Solo founder email = seller entity | Founder confirmation + entity docs | Pass (document in data room) |
| Contractor email, <5% LOC | Signed IP assignment or WFH clause | Pass if doc matches email |
| Contractor email, >5% LOC | Assignment + scope covers all merged PRs | Critical—block close if missing |
| Unknown email domain | Written identity confirmation + assignment | Fail until resolved |
| Commits reverted pre-production | Evidence not in release branch | Waived with git log proof |
4. OSS Dependency Compliance: GPL, MIT, and Apache in APA Context
Open-source license compliance is a closing condition, not a post-close cleanup task. Permissive licenses (MIT, Apache-2.0, BSD) impose attribution obligations. Copyleft licenses (GPL, AGPL, LGPL) may infect proprietary code linked into the SaaS core. Your APA IP reps must reflect what the SBOM actually shows—not what the seller believes they used.
4.1 License family comparison for acquirers
| License | Commercial SaaS use | Attribution required | Copyleft risk | Typical APA treatment |
|---|---|---|---|---|
| MIT | Allowed | Copyright notice in NOTICE file | None | Standard permissive rep |
| Apache-2.0 | Allowed | NOTICE + patent grant tracking | None | Standard permissive rep |
| BSD-2/3-Clause | Allowed | License text preservation | None | Standard permissive rep |
| LGPL | Conditional | Dynamic linking separation required | Medium—linkage analysis | Disclosed exception + counsel review |
| GPL v2/v3 | High risk if linked to core | Source disclosure if derivative | Critical | Remediation plan or price adjustment |
| AGPL | Critical for network SaaS | Network use triggers copyleft | Critical | Walk or clean-room rewrite |
4.2 Automated OSS compliance scan (APA data room artifact)
4.3 LicenseScore for APA price adjustment
5. SBOM Documentation and Schedule A Technical Inventory
Schedule A must list every repository, branch policy, and deployment artifact the buyer receives. The SBOM proves what third-party code ships with the product. Cross-reference Schedule A repo URLs against SBOM package roots—discrepancies indicate shadow codebases or undeclared microservices.
| Schedule A category | Minimum listing detail | Technical verification |
|---|---|---|
| Primary application repo | Full GitHub URL, default branch, org owner | Clone + contributor audit complete |
| Mobile / extension repos | Separate URLs if not monorepo | Store listing bundle ID matches repo |
| Infrastructure-as-code | Terraform/Pulumi repo paths | State backend ownership verified |
| Internal packages | Private npm/PyPI registry scope names | Registry admin transfer tested |
| SBOM artifact | CycloneDX/SPDX file hash + generation date | Hash matches production deploy lockfile |
6. IP Assignment Schedules: Structuring Exhibits for Code Transfer
The software IP assignment clause in the APA body incorporates exhibits by reference. The IP Assignment Schedule (typically Exhibit B or C) must enumerate every creatable work with enough specificity to enforce against the seller post-close. Vague language like “all software related to the business” fails under scrutiny—name repos, domains, and registration numbers explicitly.
6.1 IP Assignment Schedule minimum fields
- Seller entity legal name and jurisdiction (must match GitHub org billing entity where possible)
- Buyer entity legal name receiving assignment (your acquisition SPV or operating LLC)
- Exhaustive list of Git repository URLs with one-line functional description each
- Copyright registration numbers if any (US Copyright Office or equivalent)
- Trademark registration numbers cross-referenced to brand assets
- Explicit exclusion of seller personal tools, unrelated side projects, and retained trade secrets
- Moral rights waiver where jurisdiction permits (EU contributors may require separate handling)
6.2 Contributor IP Assignment Schedule (Exhibit supplement)
| Column | Content | Source |
|---|---|---|
| Contributor name | Legal name on assignment doc | Signed agreement |
| Git email(s) | All emails in author-emails.txt | git log export |
| Assignment date | Must predate or cover contribution period | Contract PDF |
| Scope | “All works created for [Product Name]” | Assignment clause text |
| Status | Verified / Missing / Waived | Technical audit checklist |
7. Software IP Assignment Clause Templates (Adapt With Counsel)
The following templates are starting points for your APA IP exhibits. Adapt jurisdiction, defined terms, and survival periods with qualified counsel. See the legal framework guide for indemnity caps and escrow structure.
7.1 Copyright assignment (Schedule exhibit body)
7.2 OSS compliance representation (APA Section 4 rep)
7.3 Contributor chain-of-title representation
8. GDPR User Data Migration Compliance in Asset Purchases
When you acquire a SaaS business with EU/UK users, you inherit data transfer compliance merger obligations—not just a PostgreSQL dump. GDPR Article 6 lawful basis, Article 13/14 transparency, and Article 28 processor agreements must survive the controller change triggered by your APA close.
8.1 GDPR controller change checklist
| Requirement | Pre-close verification | Post-close action | APA artifact |
|---|---|---|---|
| Lawful basis (Art. 6) | Consent logs OR contract necessity documented per processing purpose | Map basis to buyer's continued processing | Data Processing Record exhibit |
| Privacy policy accuracy | Policy matches actual subprocessors and retention | Update policy within 30 days; name new controller | Privacy rep + notification template |
| Subprocessor DPAs | Stripe, AWS, Postmark, analytics—all signed | Re-sign or novate DPAs under buyer entity | Subprocessor schedule |
| International transfers | SCCs or adequacy decision documented | Update SCC counterparty if buyer is new US entity | Transfer impact assessment |
| Data subject rights | Export/delete workflows tested in staging | Maintain SLA; update contact email in policy | Operational rep |
8.2 GDPR notification clause template (Exhibit)
9. CCPA and US State Privacy Transfer Requirements
California residents trigger CCPA/CPRA obligations on the buyer as successor controller. Unlike GDPR, CCPA does not always require re-consent for a merger-style asset purchase—but you must honor opt-out signals, update privacy notices, and ensure the seller's data inventory was not collected unlawfully.
| Obligation | CCPA/CPRA reference | APA technical audit action |
|---|---|---|
| Notice at collection | §1798.100(b) | Verify signup flows disclosed categories actually collected |
| Do Not Sell/Share | §1798.120 | Export opt-out flags; confirm analytics not “selling” |
| Service provider contracts | §1798.140(ag) | Audit vendor list vs privacy policy subprocessors |
| Sensitive personal information | §1798.121 | Flag SSN, geo, health data—limit use rep required |
| Colorado/Virginia/Connecticut analogs | State CPA variants | Extend data inventory to multi-state user counts |
10. Data Transfer Testing Protocol Before Escrow Release
Never release escrow until you have executed a full data export/import test in a buyer-controlled staging environment. Pair with the security audit to verify PII is encrypted at rest and access logs are intact.
- Request production-schema export with anonymized sample (seller-run) or read-replica access (preferred)
- Import to buyer staging; verify row counts match seller disclosure
- Test ESP export (Mailchimp, ConvertKit, etc.) including suppression and bounce lists
- Validate consent timestamp fields exist for marketing segments used in campaigns
- Confirm Stripe Customer IDs map to user records for billing continuity
- Document subprocessors requiring novation within 30 days post-close
11. TAPAS: Technical Asset Purchase Audit Score
Quantify technical APA readiness with TAPAS—a weighted composite analogous to the IRS score in our IP playbook. Use TAPAS to negotiate price, escrow holdbacks, or walk-away decisions before signing.
12. TypeScript Audit Checklist Model (Implementation Reference)
Export the checklist types at the top of this module into your diligence tooling, Notion database, or internal acquisition CRM. Each item maps to an APA closing condition with traceable evidence.
13. The 96-Hour APA Technical Audit Sprint
Execute this sprint between LOI and APA signing. Do not wire funds until every critical checklist item passes or is explicitly accepted with price adjustment and escrow holdback.
| Window | Tasks | Owner | Output |
|---|---|---|---|
| H0–H8 | Repo clone; contributor audit; SBOM generation; license scan | Technical DD lead | GitScore + LicenseScore draft |
| H8–H24 | Collect IP assignments; draft Schedule A repo list; OSS NOTICE review | Legal + technical | IPScheduleScore + Exhibit B draft |
| H24–H48 | Data export test; GDPR/CCPA inventory; subprocessor audit | Buyer ops + counsel | DataScore + notification templates |
| H48–H72 | Infra credential inventory; tech stack audit overlap review | Technical DD lead | InfraScore + account transfer list |
| H72–H84 | Compute TAPAS; draft technical reps and holdback terms | Buyer + counsel | TAPAS scorecard + price memo |
| H84–H96 | Final remediation or walk-away; lock Schedule A + exhibits | Buyer | Go / no-go with documented rationale |
14. Escrow Holdbacks Tied to Technical Milestones
Structure escrow release conditions that mirror technical deliverables—not arbitrary calendar dates. Align with the escrow framework for wire mechanics.
| Milestone | Release % | Verification |
|---|---|---|
| Closing + repo org transfer | 60–70% | Buyer is GitHub org owner; signed IP assignment recorded |
| Data migration complete | 15–20% | Production DB on buyer infra; ESP novated |
| GDPR/CCPA notice sent | 5–10% | Email sent; privacy policy updated; screenshot archived |
| Survival period midpoint | Balance | No IP or data claims; OSS scan clean on buyer CI |
15. Tech Stack Overlap: What the APA Audit Does Not Replace
The APA technical audit verifies ownership, compliance, and transferability of assets listed on Schedule A. It does not replace operational quality review. Run the micro-SaaS tech stack audit in parallel to assess scalability, test coverage, and tech debt that affects post-close engineering cost—but keep APA reps focused on legal transfer facts, not subjective code quality opinions.
| Question | APA technical audit | Tech stack audit |
|---|---|---|
| Who owns this code? | Yes — core scope | No |
| Is GPL contaminating the product? | Yes — core scope | Partial overlap |
| Can we lawfully email this user list? | Yes — core scope | No |
| Will this architecture scale to 10× users? | No | Yes — core scope |
| Test coverage and CI health? | No | Yes — core scope |
16. Post-Close Technical Verification: First 14 Days
Closing triggers obligations—you must prove the APA technical transfer actually happened, not just that documents were signed.
- Confirm buyer entity is GitHub org owner with 2FA enforced on all admins
- Rotate all API keys, database passwords, and OAuth client secrets
- Run production OSS scan in buyer CI; compare to diligence SBOM hash
- Send GDPR/CCPA controller change notice within committed window
- Novate or re-sign subprocessor DPAs under buyer legal name
- Archive complete technical diligence data room for 7-year retention
- Schedule 90-day TAPAS re-score after remediation milestones complete
17. APA Technical Audit Data Room Requirements
Seller must provide these artifacts before APA signing:
- Full git mirror export or org-level read access for all Schedule A repos
- CycloneDX or SPDX SBOM matching production deploy lockfile
- Signed IP assignment or work-for-hire agreement for every contributor
- Complete NOTICE file and third-party license directory
- Draft Schedule A with exhaustive repo, domain, and account inventory
- Records of Processing Activities (ROPA) or equivalent data inventory
- Consent logs, ESP export sample, and subprocessor DPA copies
- Privacy policy, terms of service, and cookie consent configuration export
- Prior acquisition APAs if codebase was previously purchased
18. Frequently Asked Questions
Does buying the GitHub org mean I own the code under the APA?
No. Org ownership is a technical transfer step. You need a executed copyright assignment exhibit naming the repos plus contributor assignments for a defensible chain of title. Org transfer without legal assignment is the most common micro-deal failure mode.
What TAPAS score should make me walk away?
TAPAS above 3.5 unless you have engineering capacity for GPL remediation and legal budget for privacy cure. Between 2.6 and 3.5, renegotiate aggressively or structure escrow holdbacks tied to specific remediation milestones documented in the APA.
Can I skip data migration testing on a small list?
No. A 2,000-subscriber list without GDPR consent proof can trigger regulator inquiry and ESP account termination. Run the export test on every acquisition with stored personal data regardless of list size.
How do MIT and Apache licenses differ for APA reps?
Both are permissive and generally APA-safe. Apache-2.0 includes an express patent grant and requires NOTICE file maintenance for attribution—your OSS compliance rep should reference Apache-specific obligations if the SBOM shows significant Apache-licensed dependencies.
Should security pentesting run before or after the APA technical audit?
In parallel, starting after repo access. Security findings inform separate reps and holdbacks—they do not replace IP or data transfer verification. See our penetration testing checklist for the security workstream.
Comments from Pro members
Selected feedback from verified Pro subscribers. Timestamps update while you read.
- Jordan K.…
Switched to Pro mainly for the extra analyses and Reddit/X coverage. This workflow section matches how I screen listings now—saves me hours every week.
Pro
- Priya S.…
The cross-marketplace point is huge. I used to miss duplicates across sites. Premium paid for itself after one decent lead I would have skipped.
Pro
- Marcus T.…
As a Pro user I appreciate the emphasis on red flags before diligence. If you are still on Free, at least read the checklist twice before you wire funds.
Pro
- Elena R.…
I send founders here when they ask how I find sub-$10k deals. The internal link to pricing is honest—you really do need Premium or Pro if you are serious.
Pro
- Chris V.…
MyDealList + a simple spreadsheet is my stack for 2026. Dynamic feed + alerts beats refreshing five marketplaces manually. Worth upgrading from Premium to Pro if you scale volume.
Pro
Leave a Reply
Your email address will not be published.