Putting It All Together
Legal Checklist: From Idea to Launch
A six-stage practical legal checklist covering everything from co-founder conversations to product launch and revenue growth.
Using This Checklist
This checklist consolidates the practical actions from all previous lessons into a sequential launch guide. Use it as a reference at each stage of your project or company.
> Disclaimer: This checklist is for educational purposes only and does not constitute legal advice. Requirements vary by jurisdiction. Consult a qualified attorney before making legal decisions for your business.
Stage 1: Co-Founder Conversations
Before any documents, have the hard conversations explicitly:
- [ ] NDA between co-founders if sharing pre-formation confidential information
- [ ] Equity split discussion — percentages, rationale, and comfort with the numbers
- [ ] Vesting terms — 4-year with 1-year cliff (or agreed alternative)
- [ ] Role definitions — who is responsible for what
- [ ] Commitment levels — full-time vs. part-time and timeline to full-time
- [ ] Compensation expectations — salary vs. equity trade-off
- [ ] Exit and buyout provisions — what happens if someone leaves
Stage 2: Entity Formation
- [ ] Choose state of formation (Delaware for VC-track; home state for bootstrapped)
- [ ] File Articles of Organization with the state
- [ ] Draft and sign the Operating Agreement
- [ ] Apply for EIN (Employer Identification Number) — free at IRS.gov
- [ ] Open business bank account (requires Articles + Operating Agreement + EIN)
- [ ] Set up separate bookkeeping for the entity
- [ ] Register as foreign LLC in any state where you do business (if different from formation state)
Stage 3: IP Protection
- [ ] Assign all pre-existing IP to the LLC (formal IP Assignment Agreement)
- [ ] Every founder signs IP assignment (even if they "built it before the company")
- [ ] File provisional patent application for patentable core innovations
- [ ] Document trade secrets and implement access controls
- [ ] Register trademarks for name and logo if planning to grow brand
- [ ] Review any existing employer IP assignment clauses each founder signed
- [ ] List pre-existing projects in a prior inventions exhibit
Stage 4: Hiring and Contracting
- [ ] Employment agreements with IP assignment and confidentiality clauses
- [ ] Contractor agreements with clear IP assignment (ownership transfers on delivery and payment)
- [ ] NDAs for employees, contractors, and advisors with access to confidential information
- [ ] Advisor agreements with equity compensation terms, vesting, and IP assignment
- [ ] Non-solicitation agreements (where legally permissible) for key hires
Stage 5: Product Launch
- [ ] Terms of Service that limit liability and set user expectations
- [ ] Privacy Policy — required by GDPR, CCPA, and most app stores
- [ ] Cookie consent mechanism if serving EU/UK users
- [ ] DMCA agent registration if hosting user-generated content
- [ ] Open source license review — understand obligations for any OSS you use
- [ ] Data processing agreements with third-party service providers
- [ ] Standard contract terms for B2B customers
Stage 6: Revenue and Growth
- [ ] Update Operating Agreement for new members, changed equity, or changed roles
- [ ] Advisory agreement template for board and advisory roles
- [ ] Annual corporate formalities — meeting minutes, resolution documents
- [ ] Revenue contracts — Master Service Agreements (MSAs) and Statements of Work (SOWs)
- [ ] Insurance review — general liability, E&O, and cyber liability
- [ ] Review IP portfolio as product evolves — new innovations may warrant new protection
Example
markdown
// Launch checklist tracker with completion scoring
interface ChecklistItem {
stage: number;
stageName: string;
item: string;
priority: 'critical' | 'high' | 'medium';
complete: boolean;
}
const launchChecklist: ChecklistItem[] = [
{ stage: 1, stageName: 'Co-Founder Conversations', item: 'Equity split discussion documented', priority: 'critical', complete: false },
{ stage: 1, stageName: 'Co-Founder Conversations', item: 'Vesting terms agreed in writing', priority: 'critical', complete: false },
{ stage: 2, stageName: 'Entity Formation', item: 'Articles of Organization filed', priority: 'critical', complete: false },
{ stage: 2, stageName: 'Entity Formation', item: 'Operating Agreement signed by all members', priority: 'critical', complete: false },
{ stage: 2, stageName: 'Entity Formation', item: 'EIN obtained from IRS', priority: 'critical', complete: false },
{ stage: 2, stageName: 'Entity Formation', item: 'Business bank account opened', priority: 'high', complete: false },
{ stage: 3, stageName: 'IP Protection', item: 'All founders signed IP assignment to LLC', priority: 'critical', complete: false },
{ stage: 3, stageName: 'IP Protection', item: 'Pre-existing IP formally assigned to LLC', priority: 'critical', complete: false },
{ stage: 4, stageName: 'Hiring & Contracting', item: 'Employee IP assignment clauses in place', priority: 'critical', complete: false },
{ stage: 4, stageName: 'Hiring & Contracting', item: 'Contractor agreements with IP transfer', priority: 'high', complete: false },
{ stage: 5, stageName: 'Product Launch', item: 'Terms of Service published', priority: 'critical', complete: false },
{ stage: 5, stageName: 'Product Launch', item: 'Privacy Policy published', priority: 'critical', complete: false },
{ stage: 6, stageName: 'Revenue & Growth', item: 'MSA template finalized for B2B contracts', priority: 'high', complete: false },
];
function getStageProgress(checklist: ChecklistItem[], stage: number) {
const stageItems = checklist.filter(i => i.stage === stage);
const completed = stageItems.filter(i => i.complete).length;
const criticalIncomplete = stageItems.filter(i => i.priority === 'critical' && !i.complete);
return {
stageName: stageItems[0]?.stageName,
progress: `${completed}/${stageItems.length}`,
criticalBlocking: criticalIncomplete.map(i => i.item),
};
}
for (let stage = 1; stage <= 6; stage++) {
const items = launchChecklist.filter(i => i.stage === stage);
if (items.length > 0) console.log(getStageProgress(launchChecklist, stage));
}Try it yourself — MARKDOWN