Phase 1 — Foundation
Cycle 1 · May 12–15, 2026
4 tasks
Reactive Layout System — Mobile, iPad & Desktop
Built the structural foundation the entire app runs on. The same screens now adapt intelligently to the device: phone matches Carlee's Lovable designs exactly, desktop shifts to a multi-column sidebar layout. Every surface — Home, Search, Pathway, Groups, Calendar — responds automatically.
What was delivered
- Mobile (390px): 5-tab bottom nav, single-column cards — identical to Lovable prototype
- iPad (820px): two-column cards where it aids scanning
- Desktop (1280px+): sidebar nav, multi-column, no stretched-mobile look
- MatchED visual identity preserved: beige, navy, terracotta, soft photography
Talking point: "This was the skeleton of the whole app. Until this landed, every screen was just a mobile prototype. Now every surface automatically adapts to whatever device your users are on."
📱 Mobile Home

🖥 Desktop Home
localhost:5173/

Sign In & Create Account Screens
The first thing a new mom sees. Both screens built to match Carlee's Lovable designs on mobile, with deliberate desktop adaptations. Copy is warm throughout — "Sign in to your MatchED account," errors like "That password doesn't match what we have for you."
What was delivered
- Sign In: email + password, "Forgot password?", full-width terracotta CTA
- Create Account: email, password, optional phone, zip, terms link
- All interaction states: focus, validation error, loading spinner, network error
- Warm beige background, rounded corners, generous padding — on-brand
Talking point: "This is the first impression. Every word was chosen carefully — nothing clinical. It should feel like walking into a welcoming community, not filling out a form."
📱 Sign In

📱 Create Account

🖥 Sign In
localhost:5173/auth

🖥 Create Account
localhost:5173/auth

Home Screen Polish — Filter Button & Chat Bubble Removed
Two targeted clean-ups that make Home feel calmer. The Filter button was removed — the recommender handles curation on Home. The floating chat bubble was removed — it wasn't Carlee's intent and made the screen feel Facebook-like. Chat belongs in Groups.
What was delivered
- Filter button removed — cards reflow naturally, no layout shift
- Floating chat bubble removed — cleaner, less social-media-y
- Verified across mobile, iPad, and desktop breakpoints
- No regressions on Match-of-the-Week scroll or Encouragement card
Talking point: "Small change, big difference. Home should feel curated, not like a marketplace. Removing those two elements brings it much closer to what Carlee intended."
📱 Member Home — clean feed

🖥 Member Home — clean feed
localhost:5173/

4-Step Onboarding Wizard
A 60-second onboarding after sign-up that collects everything MatchED needs to personalize the app — without ever feeling like a form. Five steps, each a single decision. "Skip for now" on Children means no parent hits a wall.
What was delivered
- Step 0 — Welcome: Member vs. Vendor card-buttons
- Step 1 — Role: Parent / Both / Leader chip selector
- Step 2 — Profile: name, email, zip, optional avatar upload
- Step 3 — Family: schooling type chips (Homeschool, Co-op, Hybrid, Microschool…)
- Step 4 — Children: per-child card with name + grade, "Skip for now" link
Talking point: "This is where MatchED gets to know each family. The personalization — recommendations, trust signals, the Friends filter — all starts here. We designed it to feel like a conversation, not a sign-up form."
📱 Welcome step

📱 Role step

📱 Family step

🖥 Welcome step
localhost:5173/account-setup

Phase 2 — Vendor Experience
Cycle 2 · May 15–29, 2026
7 tasks
Vendor Signup Flow
The complete end-to-end flow for a curriculum publisher, tutor, or micro-school to join MatchED. From selecting Vendor role through the application form through Company Profile setup post-approval. The Company Profile step was the missing piece — designed and built from scratch.
What was delivered
- Screen 1 — Role selection: Member vs. Vendor toggle
- Screen 2 — Application: Business Name, Email, Phone, Website, Services, Affiliate Agreement
- Screen 2.5 — Submitted modal: "Fill Out Your Vendor Profile" with Let's Go CTA
- Screen 3 — Company Profile (new): logo, tagline, bio, category, location, social links, ESA toggle
Talking point: "Every vendor starts here. We wanted it to feel professional and curated — like applying to something special. The founder approval is real; the UI reflects that honestly."
📱 Role Selection

📱 Company Profile

🖥 Role Selection
localhost:5173/account-setup

🖥 Company Profile
localhost:5173/profile?tab=company

Vendor Dashboard — Sales, Bookings & Calendar
Before building, a structured review with Andrew confirmed exactly what's in scope vs. placeholder. The result: a full dashboard with Sales, Bookings, Calendar, and Availability tabs — each with real mock data that shows what the experience looks and feels like when a vendor has activity.
What was delivered
- Sales tab: transaction list, playlist revenue breakdown, monthly totals
- Bookings tab: upcoming sessions with client, time, price, status, Approve/Decline
- Calendar tab: month view with booked dates highlighted
- Premium Analytics placement — deferred to post-MVP per Andrew review
Talking point: "Rather than building and tearing back features, we confirmed with Andrew what was real vs. placeholder first. That saved a week of rework downstream."
📱 Sales tab

📱 Bookings tab

📱 Calendar tab

🖥 Sales tab
localhost:5173/profile?tab=transactions

Search Results + Recommender Surface
MatchED's core value proposition lives here. Results are ranked by what a parent's trusted network already uses. The Everyone / Friends / Groups filter chips make that trust layer one tap away — calm and intuitive, not crowded like Amazon.
What was delivered
- Everyone / Friends / Groups trust-layer filter chips at top of results
- Resource cards: title, vendor, rating, price, ESA-eligibility badge
- Playlists section alongside Resources — both recommender-ranked
- Tapping "Reviews" auto-scrolls to reviews section
- No "Welcome back" header — personalized greeting belongs on Home only
Talking point: "This is the screen that makes MatchED different. The trust layer — seeing what people in your network already use — is one tap away. No other platform does this."
📱 Everyone results

📱 Friends filter active

🖥 Everyone results
localhost:5173/search

🖥 Friends filter active
localhost:5173/search

Payment Success & Failed States (Stripe Checkout)
Two return-state screens after Stripe checkout — reassuring on success, helpful on failure. Completely undesigned before this task. These unblocked Daniel's Stripe wiring on the critical launch path.
What was delivered
- Success screen: green check, "Payment Successful," subscription activated message, Return CTA
- Failed screen: clear "Payment didn't go through," Stripe error reason, cart-preserved confirmation, Retry CTA
- Cart cleared on success, preserved on failure
- Consistent with Carlee's brand, responsive across all breakpoints
Talking point: "The moment after payment is when users are most invested. Getting this wrong destroys trust. We made success feel like a celebration and failure feel like a helpful next step."
📱 Payment Success screen

🖥 Payment Success screen
localhost:5173/payment-success

Vendor Library — Catalog Management View
Vendors with growing catalogs need one place to find, manage, and update their content. This is the vendor's own back-office catalog view — visually distinct from the member Library, with affordances to edit, archive, or preview any resource as a member would see it.
What was delivered
- Card/list view: title, thumbnail, price, status (published/archived), views, rating
- Per-resource: View Detail, Edit (opens Resource Builder), Archive, View as Member
- Filter by Published / Archived; Sort by: recently created / sales / rating
- First-day empty state: "Create your first resource" CTA
Talking point: "As vendors publish more resources, managing them becomes a real problem. This gives every vendor a fast way to find, update, and preview everything they've published."
📱 Vendor Library

🖥 Vendor Library
localhost:5173/profile?tab=library

Resource Builder — Vendor-Side Form Fields
The form a vendor fills when publishing a new resource. The two highest-leverage fields — "Searchable By" and the "Purchase vs. Register" toggle — both received clear UI treatment so vendors never have to guess what they're choosing.
What was delivered
- Basic fields: Title, Type, Description, Cover Image, Pricing, ESA eligibility by state, Tags
- Searchable By toggle: My Group / All MatchED — with inline explainer
- External Purchase Link field — bypasses cart, routes externally
- Action toggle: Purchase (cart) vs. Register (booking flow) — with tooltip + save confirmation
- Public Funding Eligible toggle — shows ESA badge in Search when on
Talking point: "The Resource Builder is where the MatchED catalog grows. We need vendors to get it right on first save — a bad listing hurts the whole marketplace. Every field on this form earns its place."
📱 Resource Builder form

🖥 Resource Builder form
localhost:5173/profile?tab=build

Vendor Home / Launchpad — Metric Tiles
What a vendor sees the moment they open MatchED. Not a blank dashboard — a personalized at-a-glance view of how their business is performing. A vendor who immediately sees "500+ Families Trusted" and "$2.4k this month" knows MatchED is worth their attention.
What was delivered
- Personalized greeting with vendor name
- Metric tiles: Latest 5-star review, Families Trusted, Sales This Month, Bookings This Week, Milestone
- Quick Actions: Create Resource, Confirmations (only when pending exist)
- Encouraging first-day empty state — not blank, not intimidating
Talking point: "We designed this to answer one question in under 5 seconds: 'Is MatchED working for my business?' Vendors who can answer yes come back. Vendors who have to dig through tabs to find it don't."
📱 Vendor Launchpad

🖥 Vendor Launchpad
localhost:5173/

Phase 3 — Member Experience
Cycle 3 · May 27 – June 2, 2026
4 tasks
Per-Resource Visibility Selector
The privacy control that makes MatchED's trust layer real. Without this, the Friends / Groups filter in Search has nothing to filter on. An inline three-option selector appears at the moment of saving — sensible default (Groups + Friends), shown on every resource card so parents always know their setting.
What was delivered
- Inline selector at save/create moment: Private / Groups + Friends / All MatchED
- Default: Groups + Friends (the trust-layer sweet spot)
- Visibility icon shown on every resource card — tap to change inline
- Public→private shows a confirmation step
- Backend Search index respects per-resource visibility
Talking point: "This is the mechanism that makes the trust layer work. The Friends / Groups filter in Search is only meaningful if parents have set visibility on what they've saved. This gives them that control — simply, inline."
📱 Save to Library sheet

📱 Search — resource cards

🖥 Save to Library sheet
localhost:5173/search

🖥 Search — resource cards
localhost:5173/search

Public Profile / Portfolio View
When a parent taps another member's name anywhere in the app, she sees enough to decide whether to trust or connect — not a social media page, a homeschool community snapshot. Privacy is respected strictly: only info the parent has opted to share is ever shown.
What was delivered
- Header: photo, name, city (not full address), member-since date
- Family info (opt-in only): schooling type, number of children, grade ranges
- Shared signals: shared groups (clickable), mutual friends count
- Public playlists: only those set to All MatchED visibility
- Send Friend Request CTA with pending/accepted status
Talking point: "The trust layer only works if people are knowable to each other. This gives every parent a clean, privacy-respecting way to introduce herself — on her own terms."
📱 Public profile view

📱 Own profile

🖥 Public profile view
localhost:5173/user/mock-other-user

🖥 Own profile
localhost:5173/profile

Friends Discover Tab
MatchED's network effect depends on parents having friends. Without a way to find people, new parents are stuck — they can't use the Friends filter in Search because they have no friends yet. Discover surfaces ranked suggestions based on signals the parent already trusts: shared groups, mutual friends, similar family.
What was delivered
- Discover tab added inside Friends (alongside My Friends, Pending, Add by name)
- Suggestion cards: photo, name, city, shared signal ("in your Wild Hearts Co-op")
- Ranking: same group, mutual friends, schooling type, grade levels
- Send Request per card; Pass/Skip so dismissed suggestions don't reappear
- Empty state: join a group or invite by email CTA
Talking point: "Discover closes the cold-start problem. A new parent who joins a group immediately gets suggestions from people in that group. The network starts working from day one."
📱 My Friends tab

📱 Discover tab

🖥 My Friends tab
localhost:5173/friends

🖥 Discover tab
localhost:5173/friends

Member-Facing Booking Detail Surface
The last piece in the booking loop. Vendors can now host sessions and classes — parents who book need somewhere to go to see what they signed up for, when, and how to prepare. My Bookings list plus a per-booking detail page that answers every question before the session starts.
What was delivered
- My Bookings list: Upcoming (nearest first) + Past bookings (collapsed)
- Per-booking detail: vendor, session, date/time, capacity, price paid, location/link, prep notes
- Add to Calendar CTA (iCal / Google Calendar)
- Cancel Booking CTA (subject to vendor policy)
- No-bookings empty state with Search CTA
Talking point: "The booking experience was complete on the vendor side but invisible to members. A parent who booked a tutoring session had nowhere to go to find when it was. This closes that loop entirely."
📱 Vendor: Bookings tab

📱 Vendor: Calendar tab

🖥 Vendor: Bookings tab
localhost:5173/profile?tab=transactions&dashTab=bookings

🖥 Vendor: Calendar tab
localhost:5173/profile?tab=transactions&dashTab=calendar

Full Delivery Summary
| # | Task | Phase | Completed | Type |
|---|---|---|---|---|
| 1 | Reactive Layout System (mobile / iPad / desktop) | Foundation | May 12 | Frontend |
| 2 | Sign In & Create Account Screens | Foundation | May 13 | Frontend |
| 3 | Home Screen Polish (filter + chat bubble removed) | Foundation | May 14 | Frontend |
| 4 | 4-Step Onboarding Wizard (5 screens) | Foundation | May 15 | Frontend |
| 5 | Vendor Signup Flow (incl. Company Profile) | Vendor | May 18 | Frontend |
| 6 | Vendor Dashboard — Sales, Bookings, Calendar | Vendor | May 18 | Frontend |
| 7 | Search Results + Recommender + Trust Layer Chips | Vendor | May 20 | Frontend |
| 8 | Payment Success & Failed States (Stripe) | Vendor | May 20 | Frontend |
| 9 | Vendor Library — Catalog Management View | Vendor | May 21 | FrontendBackend |
| 10 | Resource Builder — Vendor Form Fields | Vendor | May 26 | FrontendBackend |
| 11 | Vendor Home / Launchpad Metric Tiles | Vendor | May 29 | FrontendBackend |
| 12 | Per-Resource Visibility Selector | Member | June 1 | FrontendBackend |
| 13 | Public Profile / Portfolio View | Member | June 1 | Frontend |
| 14 | Friends Discover Tab | Member | June 2 | Frontend |
| 15 | Member-Facing Booking Detail Surface | Member | June 2 | Frontend |