# Open Roster — Product Specification
**Version:** 0.1 MVP  
**Date:** 2026-09-27  
**Owner:** One-person build (web first, app second)  
**Category:** Club / travel fastpitch availability board  
**Not:** NCAA Transfer Portal, NFHS eligibility tool, or official sanctioning body

---

## 1. Problem

Travel fastpitch families switch clubs constantly. There is no national board where:

- a player can say “I am available,” or
- a coach can say “we have a 16U pitching spot.”

Today that happens in Facebook groups, text chains, and tournament parking lots. The NCAA portal is the wrong model to copy legally (private compliance database, trademarked), but the *job to be done* is the same: signal availability and let the other side find you.

## 2. Positioning

**Open Roster** is a public availability board for girls fastpitch club/travel softball (10U–18U).

- Players/parents post availability.
- Coaches/clubs post open roster spots.
- Contact happens through the site, not public phone numbers for minors.

Tagline: **Club softball availability, without the noise.**

Do not use: NCAA, Transfer Portal, official, sanctioned, eligibility guaranteed.

## 3. Users

| Persona | Goal | Constraint |
|---|---|---|
| Parent of 12–18U player | Find a better-fit club (playing time, travel, cost, proximity) | Privacy, time, distrust of random DMs |
| Club coach / director | Fill a hole before the next showcase circuit | Hate unqualified spam |
| Older teen (16–18) | Control their own search with parent visibility | Still a minor in most states |

Out of scope for MVP: rec rec-league only, college recruiting, high-school varsity transfers, boys baseball.

## 4. Scope

### MVP (web)

- Browse player listings
- Browse open roster spots
- Post a listing (player or coach)
- Filter: state, age group, position, listing type
- Listing detail + contact form (stores message locally in prototype; email in production)
- How it works, privacy, terms
- Listings expire in 45 days
- Display name = first name + last initial for players

### Explicitly not in MVP

- Payments / featured listings
- In-app chat
- Video hosting
- Rankings or “star” ratings of players
- High-school eligibility calculator
- Official club verification beyond honor-system + website field
- Push notifications
- Native iOS/Android (Phase 2)

### Phase 2 (app)

- Same data, native or PWA
- Saved searches + alerts
- Photo upload
- Push: “New 16U RHP within 50 miles”

### Phase 3

- Paid featured listings
- Verified club badge (domain email)
- Pickup-weekend mode
- Club reviews (high-moderation)

## 5. Rules and safety

1. Accounts for under-13 players must be parent-owned (COPPA).
2. Ages 13–17: parent/guardian email required to publish.
3. Never publish a minor’s phone number, school name as a required field, or full address.
4. Player listings show first name + last initial only.
5. Contact is parent email or in-product message, not public SMS.
6. No NCAA / USA Softball / NFHS marks.
7. Disclaimer on every listing: Open Roster does not grant high-school or college eligibility.
8. Listings auto-expire at 45 days; can be renewed.
9. Report / take-down link on every listing.
10. Honor-system club name; Phase 2 adds domain verification.

## 6. Information architecture (web)

```
/                   Home
/players            Browse players
/spots              Browse open spots
/post               Choose type → form
/listing/:id        Detail + contact
/how-it-works
/privacy
/terms
/app                App preview / waitlist
```

## 7. Data model

### listing
| Field | Type | Notes |
|---|---|---|
| id | string | uuid |
| type | enum | player \| spot |
| createdAt | datetime | |
| expiresAt | datetime | createdAt + 45d |
| status | enum | live \| expired \| hidden |
| state | string | US state code |
| city | string | optional |
| ageGroup | enum | 10U, 12U, 14U, 16U, 18U |
| positions | string[] | P, C, 1B, 2B, 3B, SS, OF, UT |
| season | enum | fall, winter, summer, year-round |
| notes | text | 500 char |
| videoUrl | url | optional, YouTube/Hudl |
| contactName | string | parent or coach |
| contactEmail | string | not shown publicly in MVP UI; used by contact form |
| travelMiles | int | player only |
| gradYear | int | player only |
| batsThrows | string | player only |
| lastClub | string | player only, optional |
| lookingFor | string | player only |
| clubName | string | spot only |
| practiceNights | string | spot only |
| circuit | string | spot only |
| displayName | string | computed |

## 8. Filters

- Type (players / spots)
- Age group
- Position
- State
- Season
- Keyword (club name, city)

Sort: newest first (MVP). Later: distance.

## 9. Trust and moderation

MVP: report button emails operator; hide listing manually.  
Production: flag queue, keyword filters (phone numbers in notes), rate-limit posts per email.

## 10. Tech (recommended production)

- Web: Next.js or static + serverless functions
- DB: Postgres (Supabase)
- Auth: magic link email (parent or coach)
- Hosting: Vercel
- Email: Resend
- App Phase 2: React Native / Expo sharing API, or PWA first to skip store review

Prototype in this folder is static HTML/CSS/JS + localStorage so it runs with no server.

## 11. Go-to-market (solo)

1. Seed 20–40 fake-but-realistic listings so the board never looks empty.
2. Post in regional travel softball parent groups (value first, not spam).
3. Give 10 local Maryland / Mid-Atlantic coaches free “open spot” posts.
4. One-page explainer for directors: “this is not recruiting poaching software; families already move.”
5. Do not cold-email minors.

## 12. Risks

| Risk | Mitigation |
|---|---|
| Empty marketplace | Seed listings + coach-side inventory first |
| Privacy blowup | Parent contact only, last initial, no phones |
| Trademark complaint | Never say NCAA / Transfer Portal in product UI |
| Club directors angry | Frame as reducing chaos they already live with |
| COPPA | No under-13 self-serve accounts |

## 13. Success metrics (first 90 days)

- 50 live listings
- 20 contact-form sends
- 10 returning coaches
- Zero safety incidents

## 14. App feature list (Phase 2)

See `app.html` wireframes.

P0: browse, filter, post, listing detail, contact, saved listings  
P1: alerts, photo, login  
P2: chat, verification, paid promote

## 15. Legal note

Privacy and terms pages in the prototype are **drafts**, not counsel-approved. Get a lawyer before collecting real emails from minors’ parents.
