# Ratings & reviews

### TB-013 — Post-walk rating prompt

- **Size:** S
- **Hours:** 5
- **Scope:** MVP

Post-walk rating prompt

Size reason: S — a single scheduled prompt tied to booking completion, no branching.

**Acceptance criteria**

- Rating prompt fires automatically once a booking is marked complete
- Cancelled or no-show bookings never trigger a rating prompt
- Owner is prompted only once per completed booking
- Prompt links directly to the rating form scoped to the correct booking

### TB-014 — Public review display on walker profile

- **Size:** S
- **Hours:** 5
- **Scope:** MVP

Public review display on walker profile

Size reason: S — mostly read-only composition of data already produced by other tickets.

**Acceptance criteria**

- Walker profile page displays reviews with rating and comment text
- Reviews are ordered by recency by default
- Flagged or removed reviews never appear publicly
- Profile shows an empty state when the walker has no reviews yet

### TB-015 — Review moderation and flagging

- **Size:** M
- **Hours:** 11
- **Scope:** Full

Review moderation and flagging

Size reason: M — a flag workflow with a founder-facing queue and status transitions.

**Acceptance criteria**

- Any authenticated user can flag a review with a reason
- Flagged reviews appear in a founder-facing moderation queue
- Admin can resolve a flag by dismissing it or removing the review
- Removed reviews stop appearing on the public profile immediately
- Each status transition is recorded with actor and timestamp

### TB-016 — Weighted rating score across recency and volume

- **Size:** M
- **Hours:** 11
- **Scope:** MVP

Weighted rating score across recency and volume

Size reason: M — a scoring formula that must stay stable as new ratings arrive and old ones age out.

**Acceptance criteria**

- Score formula weights recent reviews more heavily than older ones per the defined algorithm
- Score recalculates correctly when a new review is submitted
- Score recalculates correctly as older reviews age out of the weighting window
- Walkers with zero reviews show a neutral no-score state instead of an error
- Recalculating with identical input produces a stable, repeatable score