# Product Requirements Document: Pokemon Card Resell Platform

## 1. Overview

The Pokemon Card Resell Platform is a specialized e-commerce marketplace that enables collectors and traders to buy, sell, and trade Pokemon trading cards. The platform facilitates secure transactions between sellers and buyers, provides card authentication and grading information, inventory management for sellers, and a comprehensive catalog of Pokemon cards with detailed specifications. Users can list cards for sale, browse available inventory, make purchases, and track their collections while the platform manages order fulfillment, payment processing, and dispute resolution.

## 2. User Roles

### 2.1 Guest
- Browse card listings and catalog
- Search and filter cards by various criteria
- View card details, images, and pricing
- View seller profiles and ratings
- Create an account or log in

### 2.2 Buyer (Registered User)
- All Guest permissions
- Purchase cards via shopping cart and checkout
- Save cards to wishlist
- Make offers on listed cards
- Track order status and shipping
- Leave reviews and ratings for sellers
- Manage personal profile and shipping addresses
- View purchase history
- Initiate returns and disputes
- Message sellers

### 2.3 Seller (Registered User with Seller Account)
- All Buyer permissions
- List cards for sale with pricing and condition details
- Manage inventory (add, edit, remove listings)
- Upload card images and descriptions
- Set pricing strategies (fixed price, accept offers)
- Process orders and update shipping status
- Respond to buyer messages
- View sales analytics and reports
- Manage seller profile and store settings
- Handle returns and refund requests

### 2.4 Admin
- All system permissions
- Manage user accounts (suspend, ban, verify)
- Moderate listings (approve, reject, remove)
- Resolve disputes between buyers and sellers
- Manage card catalog and database
- Configure platform settings and fees
- View platform-wide analytics
- Manage payment processing and payouts
- Handle customer support tickets
- Manage content (banners, promotions, announcements)

### 2.5 Moderator
- Review and approve new listings
- Flag suspicious activity
- Respond to user reports
- Assist with dispute resolution
- Verify card authenticity claims
- Manage user-generated content

## 3. Core Entities

### 3.1 User
Represents any registered user on the platform with authentication credentials, profile information, and role assignments.

### 3.2 UserProfile
Extended profile information including bio, avatar, location, contact preferences, and verification status.

### 3.3 SellerProfile
Additional information for users who sell cards, including store name, seller rating, total sales, response time, and seller-specific settings.

### 3.4 Card
Master catalog entry for a Pokemon card including card name, Pokemon name, set information, card number, rarity, type, HP, attacks, and official artwork.

### 3.5 CardSet
Represents a Pokemon TCG set/expansion (e.g., Base Set, Jungle, Sword & Shield) with release date, total cards, and set symbol.

### 3.6 Listing
A specific card offered for sale by a seller, including condition, price, quantity available, grading information, and listing status.

### 3.7 ListingImage
Photos of the actual card being sold, showing front, back, and any notable features or defects.

### 3.8 Cart
Shopping cart containing items a buyer intends to purchase, with temporary reservation of listings.

### 3.9 CartItem
Individual listing added to a cart with quantity and price snapshot.

### 3.10 Order
A completed purchase transaction containing buyer information, seller information, items purchased, payment details, and fulfillment status.

### 3.11 OrderItem
Individual card purchase within an order, linking to the listing and capturing price, quantity, and condition at time of sale.

### 3.12 Payment
Payment transaction record including amount, payment method, transaction ID, status, and timestamps.

### 3.13 Shipment
Shipping information for an order including carrier, tracking number, shipping address, and delivery status.

### 3.14 Address
Shipping or billing address associated with a user.

### 3.15 Review
Buyer feedback for a seller or transaction, including rating, comment, and response.

### 3.16 Offer
A buyer's proposed price for a listing that allows offers, with acceptance/rejection status.

### 3.17 Wishlist
Collection of cards a buyer is interested in purchasing.

### 3.18 WishlistItem
Individual card saved to a wishlist with optional price alert threshold.

### 3.19 Message
Communication between buyer and seller regarding a listing or order.

### 3.20 Conversation
Thread of messages between two users.

### 3.21 Dispute
Formal complaint or issue raised about a transaction, requiring resolution.

### 3.22 Category
Organizational grouping for cards (e.g., by Pokemon type, generation, card type).

### 3.23 Condition
Standardized card condition grades (Mint, Near Mint, Lightly Played, Moderately Played, Heavily Played, Damaged).

### 3.24 GradingService
Third-party grading companies (PSA, BGS, CGC) that authenticate and grade cards.

### 3.25 GradedCard
Information about professionally graded cards including grading service, grade, certification number, and grading date.

### 3.26 Transaction
Financial transaction record for platform fees, seller payouts, and refunds.

### 3.27 Notification
System notifications for users about orders, messages, offers, and platform updates.

### 3.28 Report
User-submitted reports of policy violations, fraudulent listings, or problematic behavior.

### 3.29 PlatformSettings
Configurable platform parameters including commission rates, payment processing fees, and feature flags.

### 3.30 Promotion
Marketing campaigns, discount codes, and featured listings.

## 4. Entity Relationships

### 4.1 User Relationships
- User **1:1** UserProfile
- User **1:0..1** SellerProfile (only if user is a seller)
- User **1:many** Listing (as seller)
- User **1:many** Order (as buyer)
- User **1:many** Order (as seller)
- User **1:1** Cart
- User **1:many** Address
- User **1:many** Review (as reviewer)
- User **1:many** Review (as reviewed seller)
- User **1:many** Offer (as buyer)
- User **1:1** Wishlist
- User **1:many** Message (as sender)
- User **1:many** Conversation (as participant)
- User **1:many** Dispute (as initiator)
- User **1:many** Notification
- User **1:many** Report (as reporter)

### 4.2 Card Relationships
- CardSet **1:many** Card
- Card **many:many** Category
- Card **1:many** Listing
- Card **1:many** WishlistItem

### 4.3 Listing Relationships
- Listing **many:1** Card
- Listing **many:1** User (seller)
- Listing **many:1** Condition
- Listing **1:0..1** GradedCard
- Listing **1:many** ListingImage
- Listing **1:many** CartItem
- Listing **1:many** OrderItem
- Listing **1:many** Offer
- Listing **1:many** Message

### 4.4 Order Relationships
- Order **many:1** User (buyer)
- Order **many:1** User (seller)
- Order **1:many** OrderItem
- Order **1:1** Payment
- Order **1:0..1** Shipment
- Order **many:1** Address (shipping address)
- Order **many:1** Address (billing address)
- Order **1:0..1** Review
- Order **1:0..1** Dispute

### 4.5 Cart Relationships
- Cart **1:1** User
- Cart **1:many** CartItem
- CartItem **many:1** Listing

### 4.6 Wishlist Relationships
- Wishlist **1:1** User
- Wishlist **1:many** WishlistItem
- WishlistItem **many:1** Card

### 4.7 Communication Relationships
- Conversation **many:many** User (2 participants)
- Conversation **1:many** Message
- Message **many:1** User (sender)
- Message **many:1** Listing (optional context)
- Message **many:1** Order (optional context)

### 4.8 Grading Relationships
- GradingService **1:many** GradedCard
- GradedCard **1:1** Listing

### 4.9 Other Relationships
- Offer **many:1** User (buyer)
- Offer **many:1** Listing
- Dispute **many:1** Order
- Dispute **many:1** User (initiator)
- Report **many:1** User (reporter)
- Report **many:1** Listing (optional)
- Report **many:1** User (reported user, optional)
- Promotion **many:many** Listing

## 5. Key Workflows

### 5.1 User Registration and Onboarding
1. Guest visits platform and clicks "Sign Up"
2. User provides email, password, and basic information
3. System sends verification email
4. User clicks verification link
5. System activates account
6. User completes profile setup (optional)
7. User can browse and purchase immediately
8. To sell, user clicks "Become a Seller"
9. User provides additional information (store name, payout details)
10. System creates SellerProfile
11. Admin/Moderator reviews seller application (if required)
12. Seller account is activated

### 5.2 Listing Creation Workflow
1. Seller navigates to "Create Listing"
2. Seller searches for card in master catalog or requests new card addition
3. Seller selects card from catalog
4. Seller uploads photos of actual card (minimum 2: front and back)
5. Seller selects condition from standardized options
6. Seller enters quantity available
7. Seller sets price or enables "Accept Offers"
8. Seller adds optional description and notes
9. If graded, seller enters grading service, grade, and certification number
10. Seller reviews listing preview
11. Seller submits listing
12. System validates all required fields
13. Listing enters "Pending Review" status (if moderation enabled)
14. Moderator reviews listing for accuracy and policy compliance
15. Moderator approves or rejects with feedback
16. If approved, listing becomes "Active" and visible to buyers
17. Seller receives notification of listing status

### 5.3 Card Search and Discovery Workflow
1. User lands on homepage or search page
2. User enters search terms (card name, Pokemon name, set)
3. User applies filters (set, rarity, condition, price range, graded/ungraded, seller rating)
4. System returns matching listings sorted by relevance or user preference
5. User views listing cards with thumbnail, price, condition, and seller info
6. User clicks on listing for detailed view
7. System displays full card information, all images, seller details, and shipping info
8. User can add to cart, add to wishlist, or make an offer
9. User can view other listings of the same card for price comparison
10. User can message seller with questions

### 5.4 Purchase Workflow (Buy Now)
1. Buyer finds desired listing
2. Buyer clicks "Add to Cart"
3. System adds CartItem and reserves listing temporarily
4. Buyer continues shopping or proceeds to checkout
5. Buyer clicks "Checkout"
6. System validates cart (availability, price changes)
7. Buyer selects or adds shipping address
8. Buyer reviews order summary (items, shipping, taxes, fees)
9. Buyer enters payment information
10. System processes payment through payment gateway
11. If payment successful, system creates Order
12. System deducts listing quantity or marks as sold
13. System sends order confirmation to buyer
14. System sends new order notification to seller
15. System creates Transaction records for platform fee
16. Buyer can track order status in account

### 5.5 Offer Workflow
1. Buyer views listing with "Accept Offers" enabled
2. Buyer clicks "Make an Offer"
3. Buyer enters proposed price and optional message
4. System validates offer (minimum threshold, not higher than asking price)
5. System creates Offer record and notifies seller
6. Seller reviews offer in dashboard
7. Seller can accept, decline, or counter-offer
8. If accepted, system creates reserved CartItem for buyer
9. Buyer receives notification with time-limited checkout link
10. Buyer completes checkout within time limit (e.g., 24 hours)
11. If buyer doesn't complete checkout, reservation expires
12. If declined, buyer receives notification with optional seller message
13. If counter-offered, buyer receives new offer to accept or decline

### 5.6 Order Fulfillment Workflow
1. Seller receives order notification
2. Seller views order details in dashboard
3. Seller prepares card for shipment (packaging, protection)
4. Seller ships card and obtains tracking number
5. Seller updates order status to "Shipped" and enters tracking info
6. System sends shipment notification to buyer with tracking link
7. Carrier updates tracking status (in transit, out for delivery)
8. System polls tracking API and updates shipment status
9. Card is delivered
10. System marks order as "Delivered" based on tracking
11. System prompts buyer to confirm receipt
12. After confirmation or auto-confirmation period, order marked "Completed"
13. System releases payment to seller (minus platform fees)
14. System prompts buyer to leave review

### 5.7 Review and Rating Workflow
1. After order completion, buyer receives review request
2. Buyer navigates to order history and clicks "Leave Review"
3. Buyer selects star rating (1-5)
4. Buyer writes optional text review
5. Buyer rates specific aspects (communication, shipping speed, card condition)
6. Buyer submits review
7. System validates review (no profanity, appropriate content)
8. Review is published on seller's profile
9. Seller receives notification of new review
10. Seller can respond to review with comment
11. System updates seller's overall rating and statistics
12. Review is displayed on seller profile and associated listing

### 5.8 Dispute Resolution Workflow
1. Buyer receives order and finds issue (wrong card, condition mismatch, damage)
2. Buyer messages seller to resolve informally
3. If unresolved, buyer opens formal dispute from order page
4. Buyer selects dispute reason and provides evidence (photos, description)
5. System creates Dispute record and notifies seller
6. Seller responds with their perspective and evidence
7. System notifies admin/moderator of new dispute
8. Moderator reviews both sides and evidence
9. Moderator requests additional information if needed
10. Moderator makes decision (full refund, partial refund, no refund, return required)
11. System executes decision (processes refund, updates order status)
12. Both parties receive notification of resolution
13. Dispute is closed and recorded in order history
14. If return required, system generates return shipping label
15. Buyer ships card back and provides tracking
16. Seller confirms receipt
17. System processes refund

### 5.9 Wishlist and Price Alert Workflow
1. Buyer browses cards and finds desired card
2. Buyer clicks "Add to Wishlist" on card detail page
3. System creates WishlistItem
4. Buyer optionally sets price alert threshold
5. System monitors new listings for that card
6. When listing matching criteria is created, system sends notification
7. Buyer clicks notification and views listing
8. Buyer can purchase or continue monitoring
9. Buyer can manage wishlist (remove items, update alerts)
10. System provides wishlist analytics (price trends, availability)

### 5.10 Seller Payout Workflow
1. Buyer's order is marked as "Completed"
2. System calculates seller payout (order total - platform fee - payment processing fee)
3. System creates Transaction record for payout
4. Payout enters holding period (e.g., 7 days for dispute window)
5. After holding period, payout becomes available
6. System aggregates available payouts for seller
7. Seller views available balance in dashboard
8. Seller requests payout or waits for automatic payout schedule
9. System initiates transfer to seller's connected bank account or payment method
10. Payment processor handles transfer
11. System updates Transaction status to "Completed"
12. Seller receives payout confirmation notification
13. Seller can view payout history and download statements

## 6. Features & Requirements

### 6.1 User Management Module

#### 6.1.1 Authentication
- FR-UM-001: System shall support email/password registration
- FR-UM-002: System shall support social login (Google, Facebook)
- FR-UM-003: System shall enforce password complexity requirements (min 8 characters, uppercase, lowercase, number)
- FR-UM-004: System shall send email verification upon registration
- FR-UM-005: System shall support password reset via email
- FR-UM-006: System shall implement session management with configurable timeout
- FR-UM-007: System shall support two-factor authentication (optional)
- FR-UM-008: System shall log all authentication attempts

#### 6.1.2 Profile Management
- FR-UM-009: Users shall be able to update profile information (name, bio, avatar, location)
- FR-UM-010: Users shall be able to manage multiple shipping addresses
- FR-UM-011: Users shall be able to set default shipping and billing addresses
- FR-UM-012: Users shall be able to configure notification preferences
- FR-UM-013: Users shall be able to view their account activity history
- FR-UM-014: Users shall be able to delete their account (with data retention policy)
- FR-UM-015: System shall display user verification badges (email verified, phone verified, identity verified)

#### 6.1.3 Seller Account Management
- FR-UM-016: Users shall be able to apply to become sellers
- FR-UM-017: System shall collect seller-specific information (store name, business type, tax ID)
- FR-UM-018: Sellers shall connect payout method (bank account, PayPal)
- FR-UM-019: Sellers shall be able to configure store settings (policies, shipping options)
- FR-UM-020: Sellers shall view their seller rating and performance metrics
- FR-UM-021: System shall display seller badges (top seller, verified seller, fast shipper)

### 6.2 Card Catalog Module

#### 6.2.1 Card Database
- FR-CC-001: System shall maintain comprehensive Pokemon card database
- FR-CC-002: Each card shall include: name, Pokemon name, set, card number, rarity, type, HP, attacks, abilities, weakness, resistance, retreat cost
- FR-CC-003: System shall store official card artwork
- FR-CC-004: System shall support multiple languages/regions for cards
- FR-CC-005: System shall track card market data (average price, price history)
- FR-CC-006: Admins shall be able to add new cards to catalog
- FR-CC-007: Admins shall be able to edit card information
- FR-CC-008: System shall support bulk import of card data from external sources

#### 6.2.2 Set Management
- FR-CC-009: System shall organize cards by sets/expansions
- FR-CC-010: Each set shall include: name, release date, total cards, set symbol, series
- FR-CC-011: System shall display set completion percentage for users
- FR-CC-012: Users shall be able to browse cards by set
- FR-CC-013: System shall support set checklists

#### 6.2.3 Categorization
- FR-CC-014: System shall categorize cards by Pokemon type (Fire, Water, Grass, etc.)
- FR-CC-015: System shall categorize cards by card type (Pokemon, Trainer, Energy)
- FR-CC-016: System shall categorize cards by rarity (Common, Uncommon, Rare, Ultra Rare, etc.)
- FR-CC-017: System shall support custom categories and tags
- FR-CC-018: System shall enable multi-category filtering

### 6.3 Listing Management Module

#### 6.3.1 Listing Creation
- FR-LM-001: Sellers shall search card catalog to create listing
- FR-LM-002: Sellers shall upload minimum 2 images (front and back)
- FR-LM-003: Sellers shall upload maximum 10 images per listing
- FR-LM-004: System shall support image formats: JPG, PNG, WEBP
- FR-LM-005: System shall compress and optimize uploaded images
- FR-LM-006: Sellers shall select condition from standardized list
- FR-LM-007: Sellers shall set quantity available (1-999)
- FR-LM-008: Sellers shall set price in platform currency
- FR-LM-009: Sellers shall optionally enable "Accept Offers"
- FR-LM-010: Sellers shall set minimum offer threshold if offers enabled
- FR-LM-011: Sellers shall add optional description (max 2000 characters)
- FR-LM-012: Sellers shall specify if card is graded
- FR-LM-013: For graded cards, sellers shall enter grading service, grade, and certification number
- FR-LM-014: Sellers shall select shipping options and costs
- FR-LM-015: System shall save listings as drafts
- FR-LM-016: System shall validate all required fields before submission

#### 6.3.2 Listing Management
- FR-LM-017: Sellers shall view all their listings in dashboard
- FR-LM-018: Sellers shall filter listings by status (active, sold, draft, pending)
- FR-LM-019: Sellers shall edit active listings
- FR-LM-020: Sellers shall deactivate/reactivate listings
- FR-LM-021: Sellers shall delete listings (if no pending orders)
- FR-LM-022: Sellers shall duplicate listings for similar cards
- FR-LM-023: System shall automatically deactivate listings when quantity reaches zero
- FR-LM-024: System shall track listing views and favorites
- FR-LM-025: Sellers shall receive notifications for listing activity

#### 6.3.3 Listing Moderation
- FR-LM-026: New listings shall enter moderation queue if enabled
- FR-LM-027: Moderators shall review listings for policy compliance
- FR-LM-028: Moderators shall approve or reject listings with reason
- FR-LM-029: System shall notify sellers of moderation decisions
- FR-LM-030: Admins shall configure auto-approval rules for trusted sellers
- FR-LM-031: System shall flag listings with suspicious pricing or content
- FR-LM-032: Users shall be able to report inappropriate listings

### 6.4 Search and Discovery Module

#### 6.4.1 Search Functionality
- FR-SD-001: System shall provide global search bar on all pages
- FR-SD-002: System shall support search by card name, Pokemon name, set name
- FR-SD-003: System shall implement autocomplete suggestions
- FR-SD-004: System shall support fuzzy matching for misspellings
- FR-SD-005: System shall display search results with pagination
- FR-SD-006: System shall highlight search terms in results
- FR-SD-007: System shall track popular searches for analytics

#### 6.4.2 Filtering and Sorting
- FR-SD-008: Users shall filter by card set
- FR-SD-009: Users shall filter by rarity
- FR-SD-010: Users shall filter by condition
- FR-SD-011: Users shall filter by price range
- FR-SD-012: Users shall filter by graded/ungraded
- FR-SD-013: Users shall filter by seller rating
- FR-SD-014: Users shall filter by shipping location
- FR-SD-015: Users shall filter by card type and Pokemon type
- FR-SD-016: Users shall sort by price (low to high, high to low)
- FR-SD-017: Users shall sort by newest listings
- FR-SD-018: Users shall sort by ending soon (if auction features added)
- FR-SD-019: Users shall sort by seller rating
- FR-SD-020: System shall remember user's filter preferences

#### 6.4.3 Browse and Navigation
- FR-SD-021: Users shall browse featured listings on homepage
- FR-SD-022: Users shall browse by popular sets
- FR-SD-023: Users shall browse by Pokemon type
- FR-SD-024: Users shall browse by rarity
- FR-SD-025: System shall display "Recently Viewed" cards
- FR-SD-026: System shall provide "Similar Listings" recommendations
- FR-SD-027: System shall display trending cards and sets

### 6.5 Shopping Cart Module

#### 6.5.1 Cart Management
- FR-SC-001: Each user shall have one active cart
- FR-SC-002: Users shall add listings to cart
- FR-SC-003: Users shall update quantity in cart (within available stock)
- FR-SC-004: Users shall remove items from cart
- FR-SC-005: System shall display cart item count in header
- FR-SC-006: System shall calculate cart subtotal, shipping, taxes, and total
- FR-SC-007: System shall reserve cart items for configurable duration (e.g., 15 minutes)
- FR-SC-008: System shall notify user if cart item becomes unavailable
- FR-SC-009: System shall notify user if cart item price changes
- FR-SC-010: System shall persist cart for logged-in users across sessions
- FR-SC-011: System shall merge guest cart with user cart upon login
- FR-SC-012: Users shall save cart items for later

#### 6.5.2 Cart Validation
- FR-SC-013: System shall validate item availability before checkout
- FR-SC-014: System shall validate seller can ship to buyer's location
- FR-SC-015: System shall prevent adding items from multiple sellers (or group by seller)
- FR-SC-016: System shall enforce maximum cart value limits if configured
- FR-SC-017: System shall validate minimum order requirements

### 6.6 Checkout and Payment Module

#### 6.6.1 Checkout Process
- FR-CP-001: Users shall review order summary before payment
- FR-CP-002: Users shall select or add shipping address
- FR-CP-003: Users shall select or add billing address
- FR-CP-004: Users shall select shipping method if multiple options available
- FR-CP-005: System shall calculate shipping cost based on address and method
- FR-CP-006: System shall calculate and display applicable taxes
- FR-CP-007: System shall display platform fees if applicable to buyer
- FR-CP-008: Users shall apply promo codes or discounts
- FR-CP-009: System shall validate promo codes and apply discounts
- FR-CP-010: Users shall review final total before payment
- FR-CP-011: System shall display estimated delivery date

#### 6.6.2 Payment Processing
- FR-CP-012: System shall integrate with payment gateway (Stripe, PayPal, etc.)
- FR-CP-013: System shall support credit/debit card payments
- FR-CP-014: System shall support PayPal payments
- FR-CP-015: System shall support digital wallets (Apple Pay, Google Pay)
- FR-CP-016: System shall securely tokenize payment information
- FR-CP-017: System shall not store raw credit card numbers
- FR-CP-018: System shall process payment authorization
- FR-CP-019: System shall handle payment failures gracefully with error messages
- FR-CP-020: System shall support payment retries
- FR-CP-021: System shall send payment confirmation email
- FR-CP-022: System shall create order upon successful payment
- FR-CP-023: System shall handle refunds and partial refunds
- FR-CP-024: System shall log all payment transactions

#### 6.6.3 Order Creation
- FR-CP-025: System shall generate unique order number
- FR-CP-026: System shall capture order snapshot (items, prices, addresses)
- FR-CP-027: System shall update listing quantities
- FR-CP-028: System shall clear cart after successful order
- FR-CP-029: System shall send order confirmation to buyer
- FR-CP-030: System shall send new order notification to seller
- FR-CP-031: System shall create transaction records for fees

### 6.7 Order Management Module

#### 6.7.1 Order Tracking (Buyer)
- FR-OM-001: Buyers shall view all orders in order history
- FR-OM-002: Buyers shall filter orders by status
- FR-OM-003: Buyers shall view detailed order information
- FR-OM-004: Buyers shall track shipment status
- FR-OM-005: Buyers shall view tracking number and carrier link
- FR-OM-006: Buyers shall receive notifications for order status changes
- FR-OM-007: Buyers shall confirm order receipt
- FR-OM-008: Buyers shall download order invoices
- FR-OM-009: Buyers shall contact seller about order
- FR-OM-010: Buyers shall initiate returns or disputes

#### 6.7.2 Order Fulfillment (Seller)
- FR-OM-011: Sellers shall view all orders in seller dashboard
- FR-OM-012: Sellers shall filter orders by status
- FR-OM-013: Sellers shall view order details and buyer information
- FR-OM-014: Sellers shall print packing slips
- FR-OM-015: Sellers shall mark order as shipped
- FR-OM-016: Sellers shall enter tracking information
- FR-OM-017: Sellers shall select shipping carrier from list
- FR-OM-018: System shall validate tracking number format
- FR-OM-019: Sellers shall upload proof of shipment if required
- FR-OM-020: Sellers shall receive notifications for new orders
- FR-OM-021: Sellers shall view order fulfillment metrics (avg. ship time)

#### 6.7.3 Order Status Management
- FR-OM-022: System shall support order statuses: Pending, Processing, Shipped, In Transit, Delivered, Completed, Cancelled, Refunded
- FR-OM-023: System shall automatically update status based on tracking
- FR-OM-024: System shall auto-complete orders after delivery + grace period
- FR-OM-025: System shall allow order cancellation before shipment
- FR-OM-026: System shall handle partial shipments if applicable
- FR-OM-027: System shall track order timeline with timestamps

### 6.8 Offer Management Module

#### 6.8.1 Making Offers
- FR-OF-001: Buyers shall make offers on listings with offers enabled
- FR-OF-002: System shall validate offer amount (above minimum, below asking price)
- FR-OF-003: Buyers shall include optional message with offer
- FR-OF-004: System shall limit number of active offers per buyer per listing
- FR-OF-005: System shall notify seller of new offer
- FR-OF-006: Buyers shall view their active offers
- FR-OF-007: Buyers shall cancel pending offers

#### 6.8.2 Managing Offers (Seller)
- FR-OF-008: Sellers shall view all offers in dashboard
- FR-OF-009: Sellers shall filter offers by status
- FR-OF-010: Sellers shall accept offers
- FR-OF-011: Sellers shall decline offers with optional message
- FR-OF-012: Sellers shall counter-offer with new price
- FR-OF-013: System shall notify buyer of seller's response
- FR-OF-014: Sellers shall set auto-accept threshold for offers
- FR-OF-015: Sellers shall set auto-decline threshold for offers

#### 6.8.3 Offer Lifecycle
- FR-OF-016: Offers shall expire after configurable duration (e.g., 48 hours)
- FR-OF-017: Accepted offers shall create reserved cart for buyer
- FR-OF-018: Buyer shall have limited time to complete checkout (e.g., 24 hours)
- FR-OF-019: System shall release reservation if checkout not completed
- FR-OF-020: System shall track offer history for analytics

### 6.9 Wishlist Module

#### 6.9.1 Wishlist Management
- FR-WL-001: Each user shall have one wishlist
- FR-WL-002: Users shall add cards to wishlist from card detail page
- FR-WL-003: Users shall remove cards from wishlist
- FR-WL-004: Users shall view all wishlist items
- FR-WL-005: Users shall organize wishlist with custom lists/folders
- FR-WL-006: Users shall add notes to wishlist items
- FR-WL-007: System shall display wishlist item count

#### 6.9.2 Price Alerts
- FR-WL-008: Users shall set price alert threshold for wishlist items
- FR-WL-009: System shall monitor new listings for wishlist cards
- FR-WL-010: System shall send notification when listing matches criteria
- FR-WL-011: Users shall configure alert frequency (instant, daily digest)
- FR-WL-012: System shall display price trends for wishlist items
- FR-WL-013: Users shall view availability status for wishlist items

#### 6.9.3 Wishlist Sharing
- FR-WL-014: Users shall make wishlist public or private
- FR-WL-015: Users shall share wishlist via unique URL
- FR-WL-016: Users shall export wishlist to CSV

### 6.10 Messaging Module

#### 6.10.1 Buyer-Seller Communication
- FR-MS-001: Buyers shall message sellers about listings
- FR-MS-002: Buyers shall message sellers about orders
- FR-MS-003: System shall create conversation thread between users
- FR-MS-004: Users shall view all conversations in inbox
- FR-MS-005: Users shall view unread message count
- FR-MS-006: Users shall receive notifications for new messages
- FR-MS-007: System shall display listing or order context in conversation
- FR-MS-008: Users shall attach images to messages
- FR-MS-009: Users shall block users from messaging them
- FR-MS-010: System shall prevent messaging before listing purchase (optional)

#### 6.10.2 Message Management
- FR-MS-011: Users shall mark messages as read/unread
- FR-MS-012: Users shall archive conversations
- FR-MS-013: Users shall search message history
- FR-MS-014: Users shall delete conversations
- FR-MS-015: System shall timestamp all messages
- FR-MS-016: System shall track seller response time
- FR-MS-017: System shall moderate messages for prohibited content

### 6.11 Review and Rating Module

#### 6.11.1 Leaving Reviews
- FR-RR-001: Buyers shall leave reviews after order completion
- FR-RR-002: Buyers shall rate sellers on 5-star scale
- FR-RR-003: Buyers shall rate specific aspects (communication, shipping, accuracy)
- FR-RR-004: Buyers shall write text review (optional, max 1000 characters)
- FR-RR-005: System shall validate review content for prohibited language
- FR-RR-006: Buyers shall upload photos with review
- FR-RR-007: System shall allow one review per order
- FR-RR-008: System shall allow review editing within time window (e.g., 48 hours)

#### 6.11.2 Managing Reviews
- FR-RR-009: Sellers shall view all reviews on their profile
- FR-RR-010: Sellers shall respond to reviews
- FR-RR-011: Sellers shall report inappropriate reviews
- FR-RR-012: System shall display review date and verified purchase badge
- FR-RR-013: System shall calculate seller's overall rating
- FR-RR-014: System shall display rating distribution (5-star, 4-star, etc.)
- FR-RR-015: System shall display total review count
- FR-RR-016: Users shall filter reviews by rating
- FR-RR-017: Users shall sort reviews by date or helpfulness

#### 6.11.3 Review Display
- FR-RR-018: System shall display seller rating on listings
- FR-RR-019: System shall display seller rating on seller profile
- FR-RR-020: System shall display recent reviews on seller profile
- FR-RR-021: System shall highlight top positive and critical reviews
- FR-RR-022: Users shall mark reviews as helpful
- FR-RR-023: System shall display verified purchase badge on reviews

### 6.12 Dispute Resolution Module

#### 6.12.1 Opening Disputes
- FR-DR-001: Buyers shall open disputes from order page
- FR-DR-002: Buyers shall select dispute reason (wrong item, damaged, not as described, not received)
- FR-DR-003: Buyers shall provide detailed description
- FR-DR-004: Buyers shall upload evidence photos
- FR-DR-005: System shall notify seller of dispute
- FR-DR-006: System shall notify admin/moderator of dispute
- FR-DR-007: System shall enforce dispute window (e.g., 30 days after delivery)

#### 6.12.2 Dispute Process
- FR-DR-008: Sellers shall respond to disputes with their perspective
- FR-DR-009: Sellers shall upload counter-evidence
- FR-DR-010: System shall facilitate communication between parties
- FR-DR-011: Moderators shall review all evidence
- FR-DR-012: Moderators shall request additional information
- FR-DR-013: Moderators shall make resolution decision
- FR-DR-014: System shall support resolution types: full refund, partial refund, return required, no action
- FR-DR-015: System shall execute resolution (process refund, generate return label)

#### 6.12.3 Dispute Tracking
- FR-DR-016: Users shall view dispute status
- FR-DR-017: Users shall view dispute timeline
- FR-DR-018: System shall notify parties of status changes
- FR-DR-019: System shall close disputes after resolution
- FR-DR-020: System shall track dispute metrics per seller
- FR-DR-021: System shall flag sellers with high dispute rates

### 6.13 Grading and Authentication Module

#### 6.13.1 Graded Card Listings
- FR-GA-001: System shall support major grading services (PSA, BGS, CGC, etc.)
- FR-GA-002: Sellers shall specify grading service for graded cards
- FR-GA-003: Sellers shall enter grade (numeric or letter scale)
- FR-GA-004: Sellers shall enter certification number
- FR-GA-005: Sellers shall upload photos of graded slab
- FR-GA-006: System shall validate certification number format
- FR-GA-007: System shall display grading information prominently on listing

#### 6.13.2 Grading Service Integration
- FR-GA-008: System shall integrate with grading service APIs for verification (if available)
- FR-GA-009: System shall display grading service logo and badge
- FR-GA-010: System shall link to grading service certificate lookup
- FR-GA-011: System shall track population reports for graded cards

#### 6.13.3 Authentication Features
- FR-GA-012: Sellers shall mark cards as authenticated
- FR-GA-013: Platform shall offer optional authentication service
- FR-GA-014: System shall display authentication status on listings
- FR-GA-015: System shall track authentication history

### 6.14 Analytics and Reporting Module

#### 6.14.1 Seller Analytics
- FR-AR-001: Sellers shall view sales dashboard
- FR-AR-002: Sellers shall view total sales, revenue, and profit
- FR-AR-003: Sellers shall view sales trends over time
- FR-AR-004: Sellers shall view top-selling cards
- FR-AR-005: Sellers shall view listing performance metrics
- FR-AR-006: Sellers shall view traffic and conversion rates
- FR-AR-007: Sellers shall view average order value
- FR-AR-008: Sellers shall export sales reports
- FR-AR-009: Sellers shall view payout history

#### 6.14.2 Buyer Analytics
- FR-AR-010: Buyers shall view purchase history
- FR-AR-011: Buyers shall view spending summary
- FR-AR-012: Buyers shall view collection value estimates
- FR-AR-013: Buyers shall export purchase history

#### 6.14.3 Platform Analytics (Admin)
- FR-AR-014: Admins shall view platform-wide metrics
- FR-AR-015: Admins shall view GMV (Gross Merchandise Value)
- FR-AR-016: Admins shall view user growth metrics
- FR-AR-017: Admins shall view listing activity
- FR-AR-018: Admins shall view transaction volume
- FR-AR-019: Admins shall view revenue from fees
- FR-AR-020: Admins shall view popular cards and sets
- FR-AR-021: Admins shall view geographic distribution
- FR-AR-022: Admins shall generate custom reports

### 6.15 Notification Module

#### 6.15.1 Notification Types
- FR-NT-001: System shall send order confirmation notifications
- FR-NT-002: System shall send shipment notifications
- FR-NT-003: System shall send delivery notifications
- FR-NT-004: System shall send new message notifications
- FR-NT-005: System shall send offer notifications
- FR-NT-006: System shall send price alert notifications
- FR-NT-007: System shall send review request notifications
- FR-NT-008: System shall send dispute notifications
- FR-NT-009: System shall send payout notifications
- FR-NT-010: System shall send promotional notifications

#### 6.15.2 Notification Channels
- FR-NT-011: System shall send email notifications
- FR-NT-012: System shall send in-app notifications
- FR-NT-013: System shall support push notifications (mobile)
- FR-NT-014: System shall support SMS notifications (optional)

#### 6.15.3 Notification Preferences
- FR-NT-015: Users shall configure notification preferences by type
- FR-NT-016: Users shall choose notification channels per type
- FR-NT-017: Users shall opt-out of marketing notifications
- FR-NT-018: Users shall set quiet hours for notifications
- FR-NT-019: System shall respect notification preferences
- FR-NT-020: Users shall view notification history

### 6.16 Admin and Moderation Module

#### 6.16.1 User Management (Admin)
- FR-AM-001: Admins shall view all users
- FR-AM-002: Admins shall search and filter users
- FR-AM-003: Admins shall view user details and activity
- FR-AM-004: Admins shall suspend user accounts
- FR-AM-005: Admins shall ban user accounts
- FR-AM-006: Admins shall verify user identity
- FR-AM-007: Admins shall reset user passwords
- FR-AM-008: Admins shall impersonate users for support (with logging)

#### 6.16.2 Listing Moderation
- FR-AM-009: Moderators shall view moderation queue
- FR-AM-010: Moderators shall approve listings
- FR-AM-011: Moderators shall reject listings with reason
- FR-AM-012: Moderators shall edit listing information
- FR-AM-013: Moderators shall remove listings
- FR-AM-014: Moderators shall flag listings for review
- FR-AM-015: System shall track moderator actions

#### 6.16.3 Content Management
- FR-AM-016: Admins shall manage homepage content
- FR-AM-017: Admins shall create and manage promotions
- FR-AM-018: Admins shall manage featured listings
- FR-AM-019: Admins shall create announcements and banners
- FR-AM-020: Admins shall manage static pages (About, FAQ, Terms)
- FR-AM-021: Admins shall manage email templates

#### 6.16.4 Platform Configuration
- FR-AM-022: Admins shall configure platform fees and commission rates
- FR-AM-023: Admins shall configure payment processing settings
- FR-AM-024: Admins shall configure shipping options and rates
- FR-AM-025: Admins shall configure tax settings
- FR-AM-026: Admins shall configure listing moderation rules
- FR-AM-027: Admins shall configure user verification requirements
- FR-AM-028: Admins shall configure dispute resolution policies
- FR-AM-029: Admins shall manage feature flags

#### 6.16.5 Report Management
- FR-AM-030: Moderators shall view user reports
- FR-AM-031: Moderators shall investigate reports
- FR-AM-032: Moderators shall take action on reports
- FR-AM-033: Moderators shall communicate with reporters
- FR-AM-034: System shall track report resolution time

### 6.17 Promotion and Marketing Module

#### 6.17.1 Discount Codes
- FR-PM-001: Admins shall create promo codes
- FR-PM-002: Admins shall configure discount type (percentage, fixed amount)
- FR-PM-003: Admins shall set minimum purchase requirements
- FR-PM-004: Admins shall set usage limits (total uses, per user)
- FR-PM-005: Admins shall set expiration dates
- FR-PM-006: Admins shall restrict codes to specific users or groups
- FR-PM-007: System shall validate and apply promo codes at checkout
- FR-PM-008: System shall track promo code usage

#### 6.17.2 Featured Listings
- FR-PM-009: Sellers shall promote listings for visibility
- FR-PM-010: System shall display featured listings prominently
- FR-PM-011: Admins shall set featured listing pricing
- FR-PM-012: System shall track featured listing performance

#### 6.17.3 Email Marketing
- FR-PM-013: Admins shall create email campaigns
- FR-PM-014: Admins shall segment users for targeted campaigns
- FR-PM-015: System shall send promotional emails
- FR-PM-016: System shall track email open and click rates
- FR-PM-017: Users shall unsubscribe from marketing emails

## 7. Business Rules

### 7.1 User and Account Rules
- BR-001: Users must be at least 13 years old to register
- BR-002: Email addresses must be unique across all users
- BR-003: Users must verify email before making purchases
- BR-004: Sellers must complete seller profile before creating listings
- BR-005: Sellers must connect valid payout method before receiving payments
- BR-006: Users can have only one active account
- BR-007: Suspended users cannot create listings or make purchases
- BR-008: Banned users cannot access the platform

### 7.2 Listing Rules
- BR-009: Listings must reference a card from the master catalog
- BR-010: Listings must have at least 2 photos (front and back)
- BR-011: Listing price must be greater than $0.01
- BR-012: Listing quantity must be between 1 and 999
- BR-013: Sellers cannot list cards they don't physically possess
- BR-014: Graded card listings must include certification number
- BR-015: Listings must specify condition from approved list
- BR-016: Sellers cannot modify price after buyer adds to cart (reservation period)
- BR-017: Listings automatically deactivate when quantity reaches zero
- BR-018: Sellers cannot delete listings with pending or completed orders

### 7.3 Pricing and Fees
- BR-019: Platform charges X% commission on each sale (configurable)
- BR-020: Payment processing fee is Y% + $Z per transaction (configurable)
- BR-021: Sellers receive payout minus platform fees
- BR-022: Minimum listing price is $0.50
- BR-023: Maximum listing price is $100,000
- BR-024: Prices are displayed in USD (or configured currency)
- BR-025: Taxes are calculated based on buyer's shipping address
- BR-026: Shipping costs are set by seller or calculated by system

### 7.4 Order and Transaction Rules
- BR-027: Orders cannot be cancelled after shipment
- BR-028: Buyers have 30 days after delivery to open disputes
- BR-029: Sellers must ship orders within 3 business days (configurable)
- BR-030: Orders auto-complete 7 days after delivery confirmation
- BR-031: Seller payouts are held for 7 days after order completion
- BR-032: Refunds are processed to original payment method
- BR-033: Partial refunds require admin approval
- BR-034: Buyers cannot purchase their own listings
- BR-035: Cart reservations expire after 15 minutes of inactivity
- BR-036: Maximum cart value is $50,000 per transaction

### 7.5 Offer Rules
- BR-037: Offers must be at least 50% of asking price (configurable)
- BR-038: Offers cannot exceed asking price
- BR-039: Buyers can have maximum 1 active offer per listing
- BR-040: Offers expire after 48 hours if not responded to
- BR-041: Accepted offers reserve item for 24 hours
- BR-042: Sellers cannot accept multiple offers for same item
- BR-043: Counter-offers reset the offer expiration timer

### 7.6 Review and Rating Rules
- BR-044: Only verified buyers can leave reviews
- BR-045: Reviews can only be left after order completion
- BR-046: One review per order
- BR-047: Reviews cannot be deleted, only edited within 48 hours
- BR-048: Seller rating is average of all reviews
- BR-049: Minimum 5 reviews required for rating to display
- BR-050: Reviews with prohibited content are automatically hidden

### 7.7 Dispute Rules
- BR-051: Disputes must be opened within 30 days of delivery
- BR-052: Buyers must attempt to resolve with seller before opening dispute
- BR-053: Disputes freeze seller payout for affected order
- BR-054: Moderators must resolve disputes within 7 business days
- BR-055: Sellers with >10% dispute rate receive warning
- BR-056: Sellers with >25% dispute rate are suspended

### 7.8 Shipping Rules
- BR-057: Sellers must provide tracking for orders over $50
- BR-058: Sellers must ship to address provided at checkout
- BR-059: Sellers cannot mark as shipped without tracking number
- BR-060: International shipping requires customs declaration
- BR-061: Sellers specify which countries they ship to

### 7.9 Grading and Authentication Rules
- BR-062: Graded cards must include clear photos of slab
- BR-063: Certification numbers must be verifiable
- BR-064: Misrepresentation of grading results in listing removal
- BR-065: Only approved grading services are recognized
- BR-066: Raw (ungraded) cards cannot claim specific grade

### 7.10 Data and Privacy Rules
- BR-067: User data is retained for 7 years after account deletion (legal requirement)
- BR-068: Payment information is never stored on platform servers
- BR-069: Users can export their data at any time
- BR-070: Users can request account deletion (with order history retention)
- BR-071: Personal information is not shared with third parties without consent

### 7.11 Content and Conduct Rules
- BR-072: Listings must not contain prohibited content (profanity, hate speech)
- BR-073: Users cannot manipulate ratings or reviews
- BR-074: Users cannot engage in price manipulation or collusion
- BR-075: Counterfeit cards are strictly prohibited
- BR-076: Users must comply with platform Terms of Service
- BR-077: Repeated policy violations result in account suspension

## 8. Non-Functional Requirements

### 8.1 Performance Requirements
- NFR-001: Homepage shall load within 2 seconds on standard broadband
- NFR-002: Search results shall return within 1 second for 95% of queries
- NFR-003: System shall support 10,000 concurrent users
- NFR-004: API response time shall be <500ms for 95th percentile
- NFR-005: Image uploads shall process within 5 seconds
- NFR-006: Database queries shall execute within 100ms for 90% of requests
- NFR-007: Payment processing shall complete within 10 seconds
- NFR-008: System shall handle 1,000 transactions per hour during peak times

### 8.2 Scalability Requirements
- NFR-009: System shall scale horizontally to handle traffic spikes
- NFR-010: Database shall support up to 10 million listings
- NFR-011: System shall support up to 1 million registered users
- NFR-012: File storage shall scale to accommodate 100TB of images
- NFR-013: System shall handle 10x traffic during promotional events

### 8.3 Availability and Reliability
- NFR-014: System shall maintain 99.9% uptime
- NFR-015: Planned maintenance windows shall not exceed 4 hours
- NFR-016: System shall have automated failover for critical services
- NFR-017: Data shall be backed up daily with 30-day retention
- NFR-018: System shall recover from failures within 15 minutes (RTO)
- NFR-019: Maximum data loss in case of failure is 5 minutes (RPO)

### 8.4 Security Requirements
- NFR-020: All data transmission shall use TLS 1.3 or higher
- NFR-021: Passwords shall be hashed using bcrypt with minimum 12 rounds
- NFR-022: System shall implement rate limiting to prevent abuse
- NFR-023: System shall log all authentication attempts
- NFR-024: System shall implement CSRF protection
- NFR-025: System shall sanitize all user inputs to prevent XSS
- NFR-026: System shall use parameterized queries to prevent SQL injection
- NFR-027: System shall implement role-based access control (RBAC)
- NFR-028: Payment processing shall be PCI DSS compliant
- NFR-029: System shall implement session timeout after 30 minutes of inactivity
- NFR-030: System shall support two-factor authentication
- NFR-031: System shall encrypt sensitive data at rest
- NFR-032: System shall conduct regular security audits
- NFR-033: System shall have intrusion detection and prevention

### 8.5 Usability Requirements
- NFR-034: Interface shall be responsive and mobile-friendly
- NFR-035: System shall support modern browsers (Chrome, Firefox, Safari, Edge)
- NFR-036: System shall be accessible (WCAG 2.1 Level AA compliance)
- NFR-037: Error messages shall be clear and actionable
- NFR-038: System shall provide inline validation for forms
- NFR-039: System shall support keyboard navigation
- NFR-040: System shall provide helpful tooltips and guidance

### 8.6 Compatibility Requirements
- NFR-041: System shall support iOS 14+ and Android 10+
- NFR-042: System shall support screen sizes from 320px to 4K
- NFR-043: System shall work on browsers released within last 2 years
- NFR-044: API shall follow RESTful conventions
- NFR-045: System shall provide webhook support for integrations

### 8.7 Maintainability Requirements
- NFR-046: Code shall follow established style guides
- NFR-047: System shall have comprehensive API documentation
- NFR-048: System shall have automated test coverage >80%
- NFR-049: System shall use version control (Git)
- NFR-050: System shall have CI/CD pipeline for deployments
- NFR-051: System shall have centralized logging and monitoring
- NFR-052: System shall have error tracking and alerting

### 8.8 Compliance Requirements
- NFR-053: System shall comply with GDPR for EU users
- NFR-054: System shall comply with CCPA for California users
- NFR-055: System shall comply with PCI DSS for payment processing
- NFR-056: System shall provide Terms of Service and Privacy Policy
- NFR-057: System shall implement cookie consent management
- NFR-058: System shall support data export and deletion requests

### 8.9 Localization Requirements
- NFR-059: System shall support multiple currencies (USD, EUR, GBP, JPY)
- NFR-060: System shall support internationalization (i18n) framework
- NFR-061: System shall display dates and times in user's timezone
- NFR-062: System shall support multiple languages (initially English, expandable)

### 8.10 Monitoring and Analytics
- NFR-063: System shall track user behavior and analytics
- NFR-064: System shall monitor application performance (APM)
- NFR-065: System shall track business metrics (GMV, conversion rates)
- NFR-066: System shall provide real-time dashboards for admins
- NFR-067: System shall alert on critical errors and anomalies
- NFR-068: System shall log all transactions for audit trail

### 8.11 Disaster Recovery
- NFR-069: System shall have documented disaster recovery plan
- NFR-070: System shall maintain off-site backups
- NFR-071: System shall conduct quarterly disaster recovery drills
- NFR-072: System shall have rollback capability for deployments

### 8.12 Third-Party Integrations
- NFR-073: System shall integrate with payment gateway (Stripe/PayPal)
- NFR-074: System shall integrate with shipping carriers for tracking
- NFR-075: System shall integrate with email service provider
- NFR-076: System shall integrate with cloud storage (AWS S3, etc.)
- NFR-077: System shall integrate with CDN for image delivery
- NFR-078: System shall integrate with analytics platform (Google Analytics)

---

**Document Version:** 1.0  
**Last Updated:** 2024  
**Author:** Senior Product Manager  
**Status:** Ready for Development