# MVP Scope

## Persona

Ram — a contractor running 4 active construction sites at once. He is
usually his own site supervisor, so there's no separation between
"management" and "on the ground" — he needs this fast, on his phone,
between site visits.

## Confirmed pains (validated with contractor design partner)

1. Tracking inventory per site (what's in stock, what's been used)
2. Tracking cash received per site
3. Tracking vendor payments / expenses per site
4. Knowing per-site profit/loss without manual reconciliation

## In scope for MVP

- Contractor (tenant) account, created by super admin
- Multiple projects (sites) per tenant, subject to plan limit
- Inventory items + in/out transactions per site
- Cash receipts per site
- Expenses (vendor payments) per site
- Per-site P&L view (cash in − expenses)
- Free tier (1 project) / paid tier (unlimited) enforced at project creation

## Explicitly out of scope for MVP

- Worker attendance / payroll
- Subcontractor management
- Offline write support (queued entries synced later)
- Native mobile app (PWA only)
- Vendor as a first-class entity with its own ledger
- Multi-currency
- Granular permissions beyond owner/supervisor
- Inventory valuation (cost per unit) feeding into P&L

Adding any of these before the MVP has real usage from more than one
contractor is scope creep against an unvalidated hypothesis.

## Open questions (not yet answered — ask before building around them)

- What connectivity do sites actually have? If sites are frequently
  offline, "PWA with no offline writes" may not survive contact with
  reality, and that changes the architecture significantly. Worth checking
  before assuming it's fine.
- Does Ram enter data himself, or does he want a site supervisor role to
  enter it and he reviews? Affects whether `supervisor` role is used in
  practice or just built and unused.
- Is one contractor's confirmation ("scope confirmed") based on discussing
  the actual feature list, or agreeing to the general problem statement?
  Worth explicitly walking through this doc with him before writing code,
  since "yes that's my problem" and "yes build exactly this" are different
  levels of confirmation.
