# PRD

## Problem

Dog owners struggle to find, vet, and pay trustworthy local walkers, while juggling scheduling and cash payments informally. Walkers lack a professional way to advertise availability, get booked, and get paid reliably. This marketplace connects owners and walkers in one place, handling discovery, booking, in-app payment, and reputation so both sides can transact with confidence.

## Users & roles

- **Dog Owner:** Searches for walkers, books walks, pays in-app, messages walkers, and leaves ratings after a walk.
- **Walker:** Creates a public profile with service area and rate, manages a booking calendar, accepts/declines requests, gets paid via payout account, and builds a rating history.
- **Admin:** Approves new walkers before they go live, moderates flagged content/reviews, resolves disputes, and monitors platform activity via an audit log.

## Goals

- Let owners find and book a vetted local walker in minutes.
- Let walkers manage availability, get booked, and get paid without manual invoicing.
- Process all payments in-app with a clear, auditable money trail.
- Build trust through ratings, reviews, and admin-moderated walker approval.
- Keep booking state (request/accept/decline/expiry) reliable under concurrent owner/walker actions.

## Non-goals

- Building a real-time GPS walk-tracking feature at launch.
- Supporting cash or off-platform payment reconciliation.
- International currencies or non-US tax/payout handling at launch.
- Building a native mobile app at launch (web-first).

## User flows

1. **Registration** — A new user signs up with email/password and selects a role: dog owner or walker. Email verification is required before full access.
2. **Onboarding** — Walkers complete a multi-step onboarding: bio, service area, hourly rate, and profile photo, then enter an admin approval queue before their profile goes live. Owners set up their profile and add a dog if prompted.
3. **Core action: search and book** — Owner searches by postcode/radius, filters by availability, price, and dog size, views a walker's public profile and live availability, and submits a booking request for a time slot.
4. **Booking confirmation** — Walker accepts or declines the request within an expiry window; owner is notified by push/email. Accepted bookings appear on the walker's calendar with automated reminders.
5. **Payment** — Owner pays via saved card or new card at checkout time (or on booking acceptance); funds are held and later released to the walker's connected payout account on a schedule.
6. **Completion and rating** — After the walk, the owner receives a rating prompt, submits a star rating and optional review, which is displayed on the walker's public profile and rolled into their weighted rating score.

## Functional requirements

### Accounts & profiles

- Email/password signup and login with distinct owner and walker roles, including email verification and password reset.
- Walker onboarding flow capturing bio, service area, and hourly rate with partial-save support.
- Profile photo upload with image storage.
- Public, read-only walker profile page composing bio, rate, availability, and reviews.

### Walker listings & search

- Postcode-based search with radius matching and geocoded results (deferred to post-launch).
- Filtering search results by availability, price, and dog size.
- Live availability shown inline on search results, cross-referenced against the booking calendar.
- Paginated, sortable search results consistent with active filters.

### Booking & calendar

- Booking request/accept/decline state machine with expiry handling and protection against race conditions.
- Reschedule and cancellation with policy windows, partial refunds, and no-show handling (deferred to post-launch).
- Walker-facing calendar view with day/week rendering across booking states.
- Automated booking confirmation reminders via scheduled notifications.

### In-app payments & payouts

- Card checkout with saved payment method management via a PCI-compliant processor.
- Walker connected-account onboarding and scheduled payouts with retry handling.
- Refunds and disputed-charge handling reconciled against payout timing (deferred to post-launch).
- Receipts and a reconciled payment history ledger for owners and walkers.

### Messaging

- Real-time in-app chat between owner and walker (deferred to post-launch).
- Push and email notifications for booking events and new messages.
- Unread message counts and read receipts layered on the chat model (deferred to post-launch).

### Ratings & reviews

- Post-walk rating prompt triggered on booking completion.
- Public display of reviews on the walker profile.
- Review moderation and flagging workflow for admins (deferred to post-launch).
- Weighted rating score algorithm accounting for recency and review volume.

### Admin & moderation

- Walker approval queue with document checks before a profile goes live.
- Admin dashboard to suspend accounts and resolve disputes (deferred to post-launch).
- Content and message flag review queue (deferred to post-launch).
- Durable, queryable admin activity audit log.

### Launch readiness

- End-to-end QA pass across booking, payment, and messaging flows.
- Security review of auth, payment webhooks, and admin routes.
- Production deployment with monitoring, error tracking, and a rollback plan.

## Launch scope

- Email/password accounts with owner/walker roles, verification, and reset
- Walker onboarding (bio, service area, hourly rate) and profile photo upload
- Public walker profile page
- Filter by availability, price, and dog size; availability shown on results; pagination and sort
- Booking request/accept/decline state machine with expiry
- Walker booking calendar view and confirmation reminders
- Card checkout with saved payment methods
- Walker payout scheduling and connected-account onboarding
- Receipts and payment history
- Push and email notifications for bookings and messages
- Post-walk rating prompt and public review display
- Weighted rating score across recency and volume
- Walker approval queue before going live
- Admin activity audit log
- End-to-end QA, security review, and production deployment/monitoring

## Later scope

- Postcode search with radius matching (geocoding-based discovery)
- Reschedule and cancellation with policy windows, refunds, and no-show handling
- Refunds and disputed-charge handling
- Real-time in-app chat between owner and walker
- Unread message counts and read receipts
- Review moderation and flagging
- Admin dashboard for suspending accounts and resolving disputes
- Content and message flag review