Back to Articles
System DesignProduct StrategyScalability

Scaling Systems: Lessons from Building a Two-Sided Marketplace

2024-10-20

Scaling Systems

Most MVPs fail not because they lack features, but because they lack architecture foresight.

The Collaborative Ecosystem Challenge

I was tasked with building a platform that would:

  • Connect university students with real-world business projects
  • Enable two-sided interactions (students ← → businesses)
  • Scale to thousands of users across multiple institutions
  • Provide verifiable credentials (experience badges)

The temptation: Build a quick prototype and iterate.

The reality: If the foundation cracks at 100 users, you can't support 1,000.

Why I Started with the ERD

Before a single React component, I designed the Entity-Relationship Diagram.

Universities ← Students → Enrollments → Projects → Businesses
                              ↓
                     Experience Badges
                        (Immutable)

The Key Design Decisions

  1. Immutable Badges: Once awarded, experience credentials are blockchain-like—permanent and verifiable.
  2. Normalized Relations: Students don't "own" projects; they enroll in them. This allows:
    • Multiple students per project
    • Project history tracking
    • Business ROI analytics
  3. Strategic Indexing: Optimized queries for the #1 use case: "Show me all students with Project Management experience in FinTech."

The Decision That Prevented a Rewrite

Scenario: A business wants to post a project visible to 3 partner universities but restrict enrollment to CS majors.

Bad Schema (what I almost built):

projects (id, title, description, university_id, allowed_majors)

Problem: Can't support multi-university access without duplicating records.

Good Schema (what I actually built):

projects (id, title, description, business_id)
project_university_access (project_id, university_id, allowed_majors

[])

This many-to-many junction table saved us from a painful migration at scale.

Scale Isn't About Day 1

People misunderstand "premature optimization." There's a difference between:

  • Over-engineering: Kubernetes for a landing page
  • Foresight: Relational models that don't require schema rewrites

Collaborative Ecosystem's database design was foresight, not over-engineering.

The ROI

When we onboarded our 3rd university partner:

  • Frontend changes: 2 days (adding a new institution to the UI)
  • Backend changes: INSERT INTO universities... (30 seconds)

If I'd built a monolithic single-tenancy model, this would've been a 3-week refactor.

The Product Mindset in System Design

As a Product Strategist, my job isn't just "make it work." It's:

  1. Anticipate growth patterns: Will we have 10 businesses or 1,000?
  2. Design for failure gracefully: What happens when a business deletes a project with active students?
  3. Enable analytics: Can we answer "What's our student retention rate by project type?"

All of these require data modeling, not just feature development.

The Framework

When designing scalable systems, I ask:

| Question | Bad Answer | Good Answer | |----------|------------|-------------| | How many users in Year 1? | "A few hundred" | "100-500, scaling to 5K by Year 2" | | What's the core interaction? | "Students find projects" | "Businesses post, universities filter, students enroll with verification" | | What can't change later? | "Probably nothing?" | "Badge immutability, project-student relationships" |

The Lesson

Scale isn't about handling 10,000 users on Day 1.
It's about not needing to re-architect on Day 90 when you hit 500.

Collaborative Ecosystem was designed for growth. When a 4th university asked to join, my answer wasn't "Let me check if the database can handle it."

It was: "Sure, what's your .edu domain?"


Key Takeaway: The best MVPs aren't the fastest to build. They're the fastest to scale.