Skip to content

Latest commit

 

History

History
2314 lines (1928 loc) · 103 KB

File metadata and controls

2314 lines (1928 loc) · 103 KB

Product Requirements Document (PRD)

Project: TacoTracker 3000

Enterprise Taco Truck Tracking and Ordering System

Document Version: 1.0 Date: January 22, 2026 Author: Product Management Team Status: Approved for Development


1. Executive Summary

1.1 Product Overview

TacoTracker 3000 is a mobile-first application that transforms how Globex Corporation's 2,500 employees discover, order from, and interact with food trucks across three campus buildings. By providing real-time GPS tracking, mobile pre-ordering, and intelligent queue management, TacoTracker 3000 eliminates the chaos of the current "wander and hope" approach to food truck dining.

1.2 Vision Statement

"Every Globex employee should be able to enjoy their favorite food truck meal without wasted time, missed opportunities, or disappointed taste buds."

1.3 Key Value Propositions

Value Proposition User Benefit Business Metric
Real-Time Visibility Never miss your favorite truck 98% visit success rate
Time Savings More time for actual work 15 min saved per visit
Pre-Order Convenience Skip the line, grab and go 65% reduction in wait time
Dietary Confidence Know exactly what you can eat Zero allergy-related incidents
Vendor Insights Better demand forecasting 25% increase in vendor revenue

1.4 Success Metrics Summary

Metric Target Timeline
App Adoption 70% of employees 60 days post-launch
Daily Active Users 500+ Lunch hours (11 AM - 2 PM)
Slack Message Reduction 50% decrease 90 days post-launch
Visit Success Rate 98% Ongoing
User Satisfaction 4.2+ stars Quarterly survey

2. Product Vision and Strategy

2.1 Vision Statement

TacoTracker 3000 will become the indispensable lunch companion for every Globex employee, fundamentally changing the relationship between our workforce and the food truck ecosystem. Within two years, we envision expanding this platform to partner companies and becoming the de facto standard for corporate food truck management.

2.2 Mission

Deliver a seamless, delightful mobile experience that connects hungry Globex employees with food trucks through real-time tracking, effortless ordering, and intelligent recommendations—saving time, reducing frustration, and maximizing taco satisfaction.

2.3 Strategic Alignment

Strategic Initiative TacoTracker Contribution
Employee Experience Excellence Measurable improvement in lunch satisfaction scores
Digital Transformation Showcase of innovative technology adoption
Operational Efficiency Quantifiable productivity recovery
Sustainability Goals Reduced unnecessary campus walking
Talent Retention Unique perk that differentiates Globex as employer

2.4 Market Positioning

TacoTracker 3000 operates in an underserved niche: enterprise food truck management. While consumer apps like StreetFoodFinder exist, none offer:

  • Corporate SSO integration
  • Pre-ordering with queue management
  • Real-time GPS tracking for private campuses
  • Integration with corporate payment systems
  • Analytics for facilities management

2.5 Product Principles

Principle 1: Speed to Taco

Every design decision prioritizes getting users to their tacos as quickly as possible. Maximum 3 taps to complete a repeat order.

Principle 2: Trust Through Transparency

Users always know exactly what they're ordering, what it costs, and when it will be ready. No hidden fees, no surprise wait times.

Principle 3: Inclusive by Default

The app works well for everyone regardless of dietary restrictions, technical proficiency, or physical ability.

Principle 4: Vendor Partnership

Food truck operators are partners, not just suppliers. Their success is our success.

Principle 5: Data-Informed, Not Data-Obsessed

We track what matters for improvement, but we don't surveil our users.

2.6 Differentiation

Competitor/Alternative Their Approach TacoTracker Advantage
Slack Channel Crowdsourced sightings Real-time GPS accuracy
StreetFoodFinder General food truck discovery Enterprise-specific features
Walking Around Physical search Digital convenience
DoorDash/UberEats Delivery model Direct vendor relationship, no fees
Corporate Cafeteria Fixed location Variety, excitement, culture

2.7 Long-term Roadmap

2026 Q2: MVP Launch
    └── Core tracking, menus, notifications, pre-ordering

2026 Q3: Enhancement Release
    └── Group ordering, ratings, loyalty program foundation

2026 Q4: Analytics Expansion
    └── Vendor analytics dashboard, demand forecasting

2027 Q1: Social Features
    └── Reviews, recommendations, "taco buddies"

2027 Q2+: Platform Expansion
    └── Partner company rollout, white-label considerations

3. User Personas and Research

3.1 Primary Personas

Persona 1: "Taco Titan" Terrence

┌────────────────────────────────────────────────────────────────┐
│  TACO TITAN TERRENCE                                           │
│  Software Engineer, Building A                                 │
├────────────────────────────────────────────────────────────────┤
│                                                                │
│  Demographics:                                                 │
│  • Age: 28                                                     │
│  • Tenure: 3 years at Globex                                   │
│  • Tech Savviness: Expert                                      │
│  • Lunch Behavior: Food truck 4x/week                          │
│                                                                │
│  Goals:                                                        │
│  • Never miss Taco Tornado Tuesday                             │
│  • Minimize time away from coding                              │
│  • Discover new food trucks and menu items                     │
│  • Be the "food truck guy" who knows everything                │
│                                                                │
│  Frustrations:                                                 │
│  • Walking to lot only to find no truck                        │
│  • Long lines during peak hours (12:00-12:30)                  │
│  • Not knowing the menu before arriving                        │
│  • Missing limited specials because they sell out              │
│                                                                │
│  Behaviors:                                                    │
│  • Checks Slack constantly for truck sightings                 │
│  • Has created personal spreadsheet of truck patterns          │
│  • Will try any new food truck at least once                   │
│  • Influences colleagues' food choices                         │
│                                                                │
│  Quote: "If I could pre-order and skip the line, I'd           │
│  literally be 20% more productive."                            │
│                                                                │
│  App Usage: Daily, power user                                  │
│  Primary Features: Notifications, pre-ordering, favorites      │
└────────────────────────────────────────────────────────────────┘

Jobs-to-be-Done (Terrence):

  • Functional: Get lunch from food truck in under 10 minutes
  • Emotional: Feel like a "food truck insider"
  • Social: Be the person colleagues ask about food trucks

Persona 2: "Cautious" Carol

┌────────────────────────────────────────────────────────────────┐
│  CAUTIOUS CAROL                                                │
│  Finance Manager, Building C                                   │
├────────────────────────────────────────────────────────────────┤
│                                                                │
│  Demographics:                                                 │
│  • Age: 45                                                     │
│  • Tenure: 12 years at Globex                                  │
│  • Tech Savviness: Moderate                                    │
│  • Lunch Behavior: Food truck 1x/week                          │
│                                                                │
│  Goals:                                                        │
│  • Safely identify allergen-free options                       │
│  • Not waste precious lunch break on fruitless searches        │
│  • Simple, straightforward experience                          │
│  • Know wait time before committing                            │
│                                                                │
│  Frustrations:                                                 │
│  • Severe nut allergy creates constant anxiety                 │
│  • Building C is far from main lot—often misses trucks         │
│  • "Another app to learn"                                      │
│  • Unclear ingredient information at trucks                    │
│                                                                │
│  Behaviors:                                                    │
│  • Always brings backup lunch "just in case"                   │
│  • Asks detailed questions about food preparation              │
│  • Prefers to go at off-peak times (1:30 PM)                   │
│  • Will become loyal once she trusts a vendor                  │
│                                                                │
│  Quote: "I just need to know if it's safe for me to eat        │
│  there. That's it."                                            │
│                                                                │
│  App Usage: 1-2x per week                                      │
│  Primary Features: Dietary filtering, allergen info, menus     │
└────────────────────────────────────────────────────────────────┘

Jobs-to-be-Done (Carol):

  • Functional: Find food truck options that are safe for her allergies
  • Emotional: Feel confident and relaxed about food choices
  • Social: Participate in office food truck culture without fear

Persona 3: "New Kid" Nancy

┌────────────────────────────────────────────────────────────────┐
│  NEW KID NANCY                                                 │
│  Marketing Associate, Building B                               │
├────────────────────────────────────────────────────────────────┤
│                                                                │
│  Demographics:                                                 │
│  • Age: 24                                                     │
│  • Tenure: 2 months at Globex                                  │
│  • Tech Savviness: High                                        │
│  • Lunch Behavior: Curious but uninformed                      │
│                                                                │
│  Goals:                                                        │
│  • Learn about food truck culture at Globex                    │
│  • Meet colleagues and build relationships                     │
│  • Find vegetarian options                                     │
│  • Discover "the good stuff"                                   │
│                                                                │
│  Frustrations:                                                 │
│  • Doesn't know which trucks visit or when                     │
│  • Feels out of the loop on Slack channel                      │
│  • Hasn't found her "go-to" truck yet                          │
│  • Intimidated by the "regulars" who seem to know everything   │
│                                                                │
│  Behaviors:                                                    │
│  • Asks colleagues for recommendations                         │
│  • Takes photos of food for social media                       │
│  • Willing to try new things                                   │
│  • Looks for social eating opportunities                       │
│                                                                │
│  Quote: "Everyone talks about Taco Tuesday but I've never      │
│  actually found the truck."                                    │
│                                                                │
│  App Usage: Growing, exploratory                               │
│  Primary Features: Discovery, schedule view, recommendations   │
└────────────────────────────────────────────────────────────────┘

Jobs-to-be-Done (Nancy):

  • Functional: Discover and navigate the food truck ecosystem
  • Emotional: Feel like part of the Globex culture
  • Social: Use food trucks as opportunity to connect with colleagues

Persona 4: "Vendor" Victor (Secondary)

┌────────────────────────────────────────────────────────────────┐
│  VENDOR VICTOR                                                 │
│  Owner, "Taco Tornado" Food Truck                              │
├────────────────────────────────────────────────────────────────┤
│                                                                │
│  Demographics:                                                 │
│  • Age: 52                                                     │
│  • Business: 8 years operating                                 │
│  • Tech Savviness: Low-Moderate                                │
│  • Globex Visits: Tuesdays & Thursdays                         │
│                                                                │
│  Goals:                                                        │
│  • Increase revenue per Globex stop                            │
│  • Reduce food waste from over-preparation                     │
│  • Minimize time spent on admin work                           │
│  • Build loyal customer base                                   │
│                                                                │
│  Frustrations:                                                 │
│  • Unpredictable demand leads to waste ($200/week)             │
│  • Long lines frustrate customers and slow service             │
│  • Hard to communicate specials or sold-out items              │
│  • Managing orders during rush is chaotic                      │
│                                                                │
│  Behaviors:                                                    │
│  • Arrives 30 min early to prep based on gut feeling           │
│  • Has "regulars" who he knows by name                         │
│  • Willing to try technology if it's easy                      │
│  • Values customer relationships over efficiency               │
│                                                                │
│  Quote: "If I knew how many people were coming, I could prep   │
│  the right amount and serve everyone faster."                  │
│                                                                │
│  Portal Usage: Before and during service                       │
│  Primary Features: Pre-order queue, demand visibility, menu    │
└────────────────────────────────────────────────────────────────┘

3.2 Anti-Personas

Anti-Persona Description Why Not Designing For
Remote Worker Rachel Works from home 100% No campus presence
Cafeteria Carl Uses cafeteria exclusively Different dining preference
External Visitor Non-employee visitors Security/SSO constraints
Meal Prepper Mike Brings lunch every day No food truck interest

3.3 Research Insights

Key findings from user research (Q4 2025):

  1. Discovery Problem is Primary: 72% of respondents said "knowing where trucks are" is their #1 need
  2. Time Sensitivity: Average acceptable time away from desk for lunch is 22 minutes
  3. Pre-Order Demand: 81% would use pre-ordering if available
  4. Dietary Concerns: 34% have dietary restrictions that affect food choices
  5. Payment Friction: 23% have avoided trucks due to cash-only policies
  6. Building Inequality: Building C employees are 40% less likely to visit trucks

3.4 User Segmentation

Segment Size Frequency Primary Need Priority
Power Users 15% (375) 3+ times/week Speed & convenience High
Regular Users 45% (1,125) 1-2 times/week Reliability & variety High
Occasional Users 30% (750) 1-3 times/month Discovery & simplicity Medium
Non-Users 10% (250) Never N/A Low

4. User Journeys and Scenarios

4.1 Journey Map: Terrence's Perfect Taco Tuesday

┌─────────────────────────────────────────────────────────────────────────────────┐
│                    TERRENCE'S PERFECT TACO TUESDAY                              │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  STAGE       │ TRIGGER      │ DISCOVER    │ ORDER       │ PICKUP    │ POST     │
│  ────────────│──────────────│─────────────│─────────────│───────────│──────────│
│              │              │             │             │           │          │
│  ACTIONS     │ Receives     │ Opens app,  │ Browses     │ Walks to  │ Returns  │
│              │ push notif   │ sees map    │ menu, adds  │ Lot B,    │ to desk, │
│              │ at 11:45     │ with truck  │ items to    │ shows QR  │ enjoys   │
│              │              │ en route    │ cart, pays  │ code      │ tacos    │
│              │              │             │             │           │          │
│  THOUGHTS    │ "Taco        │ "Perfect,   │ "Ooh, the   │ "No line  │ "That    │
│              │ Tornado is   │ heading to  │ carnitas    │ for pre-  │ was so   │
│              │ coming!"     │ Lot B"      │ special!"   │ orders!"  │ easy"    │
│              │              │             │             │           │          │
│  EMOTIONS    │ 😊 Excited   │ 😌 Informed │ 😋 Hungry   │ 😎 Smug   │ 🌮 Happy │
│              │              │             │             │           │          │
│  TOUCHPOINT  │ Push notif   │ Map screen  │ Menu, cart, │ QR code,  │ Rating   │
│              │              │             │ payment     │ pickup    │ prompt   │
│              │              │             │             │           │          │
│  PAIN POINTS │ None         │ None        │ "Is the     │ None      │ None     │
│              │              │             │ special     │           │          │
│              │              │             │ still       │           │          │
│              │              │             │ available?" │           │          │
│              │              │             │             │           │          │
│  OPPORTUNITY │ Personalized │ Show ETA &  │ Real-time   │ Clear     │ Easy     │
│              │ notif timing │ wait time   │ availability│ signage   │ reorder  │
│              │              │             │             │           │          │
└─────────────────────────────────────────────────────────────────────────────────┘

Total Time: 8 minutes (vs. 23 minutes current state)

4.2 Journey Map: Carol's Safe Lunch Search

┌─────────────────────────────────────────────────────────────────────────────────┐
│                    CAROL'S SAFE LUNCH SEARCH                                    │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                 │
│  STAGE       │ CONSIDER     │ RESEARCH    │ VALIDATE    │ DECIDE    │ ORDER    │
│  ────────────│──────────────│─────────────│─────────────│───────────│──────────│
│              │              │             │             │           │          │
│  ACTIONS     │ Thinks about │ Opens app,  │ Checks      │ Confirms  │ Places   │
│              │ trying food  │ applies nut │ ingredient  │ "safe for │ order    │
│              │ truck        │ free filter │ list        │ me" badge │ with     │
│              │              │             │             │           │ notes    │
│              │              │             │             │           │          │
│  THOUGHTS    │ "Is it worth │ "Good, they │ "Let me     │ "Okay,    │ "Adding  │
│              │ the risk     │ have        │ verify no   │ this      │ allergy  │
│              │ today?"      │ options"    │ cross-      │ looks     │ note"    │
│              │              │             │ contact"    │ safe"     │          │
│              │              │             │             │           │          │
│  EMOTIONS    │ 😰 Anxious   │ 😐 Cautious │ 🧐 Scrutiny │ 😊 Relief │ 😌 Conf. │
│              │              │             │             │           │          │
│  PAIN POINTS │ "Will I find │ "How do I   │ "Is this    │ "Can I    │ "Will    │
│              │ safe food?"  │ know it's   │ info        │ trust     │ they     │
│              │              │ accurate?"  │ current?"   │ this?"    │ see my   │
│              │              │             │             │           │ note?"   │
│              │              │             │             │           │          │
│  OPPORTUNITY │ Proactive    │ Clear       │ Vendor      │ Trust     │ Allergy  │
│              │ "safe for    │ filter with │ verified    │ signals   │ alert    │
│              │ you" notif   │ explanation │ badges      │           │ on order │
│              │              │             │             │           │          │
└─────────────────────────────────────────────────────────────────────────────────┘

4.3 Key Use Cases

UC-1: Find Active Trucks (Discovery)

Actors: Employee Precondition: User has app installed and is authenticated Trigger: User opens app or receives notification Main Flow:

  1. App shows map centered on user's current building
  2. Map displays pins for all active trucks with cuisine type icons
  3. User can tap pin to see truck card (name, wait time, distance)
  4. User can tap card to see full truck details and menu
  5. User can switch between Map View and List View

Alternate Flows:

  • A1: No trucks active → Show "No trucks right now" with schedule
  • A2: User location unknown → Show all three lots with option to select

UC-2: Pre-Order and Pay

Actors: Employee, Vendor Precondition: User viewing truck with active menu Trigger: User taps "Order Now" Main Flow:

  1. App displays full menu with prices and dietary tags
  2. User selects items and customizations
  3. User reviews cart with total and estimated pickup time
  4. User confirms order (Apple Pay/Google Pay/saved card)
  5. App confirms order with order number and ETA
  6. Vendor receives order on tablet with prep countdown
  7. Vendor marks order complete
  8. User receives push notification "Order Ready!"
  9. User shows QR code at pickup window
  10. Vendor scans QR, releases order

Alternate Flows:

  • A1: Item unavailable → Show warning, suggest alternatives
  • A2: Payment fails → Show error, offer retry
  • A3: User cancels → Refund within 24 hours
  • A4: Vendor too busy → Pre-orders temporarily closed

UC-3: Set Dietary Preferences

Actors: Employee Precondition: User is authenticated Trigger: User accesses Profile settings Main Flow:

  1. User navigates to Profile → Dietary Preferences
  2. User selects from predefined options (vegetarian, vegan, gluten-free, nut-free, dairy-free, halal, kosher)
  3. User can add custom restrictions in free text
  4. App saves preferences and applies to all menu views
  5. Items matching preferences show "Safe for you" badge
  6. Items conflicting show warning badge

Post-condition: All menu views filter/flag based on preferences


4.4 Edge Cases and Error States

Scenario System Behavior User Message
GPS signal lost (truck) Show "Location Unknown" status "Taco Tornado's location is temporarily unavailable. Last seen: Lot B, 5 min ago"
Payment processor down Disable pre-ordering, allow cash "Mobile payment temporarily unavailable. Walk-up orders still accepted!"
Truck leaves early Send notification, auto-cancel orders "Taco Tornado has left early. Your order has been canceled and refunded."
Order not picked up (30 min) Notify user, alert vendor "Your order is waiting! Pick up soon or it may be given away."
Menu not updated Show "Menu may be outdated" warning "This menu was last updated 3 days ago. Contact truck to verify."
Offline mode Show cached data with timestamp "You're offline. Showing last known information from 10:30 AM."
Server error Graceful degradation "Something went wrong. Please try again in a moment."
Sold out item in cart Notify before checkout "The Carnitas Taco just sold out. Would you like to substitute?"

4.5 Current vs. Future State

                    CURRENT STATE                    FUTURE STATE
                    ─────────────                    ────────────

    Awareness    │ Check Slack channel          │ Push notification 15 min
                 │ (unreliable)                 │ before arrival
                 │                              │
    Discovery    │ Walk to all 3 parking        │ Open app, see real-time
                 │ lots (15+ minutes)           │ map (5 seconds)
                 │                              │
    Menu Info    │ Ask at truck window          │ Browse full menu with
                 │ (no dietary info)            │ allergen filtering
                 │                              │
    Wait Time    │ Unknown until arrival        │ Real-time estimate
                 │ (often 15-25 min)            │ before committing
                 │                              │
    Ordering     │ Verbal, in-person            │ Pre-order from desk,
                 │ (wait in line)               │ skip line at pickup
                 │                              │
    Payment      │ Cash or card at truck        │ Apple Pay, Google Pay,
                 │ (some cash-only)             │ saved payment methods
                 │                              │
    Total Time   │ 23+ minutes                  │ 8 minutes

5. Feature Specifications

5.1 Feature Overview

Feature ID Feature Name Priority Release Complexity
F-001 Real-Time Truck Tracking Must Have MVP Medium
F-002 Push Notifications Must Have MVP Medium
F-003 Digital Menu Display Must Have MVP Low
F-004 Wait Time Estimation Must Have MVP High
F-005 Employee Authentication (SSO) Must Have MVP Low
F-006 Mobile Pre-Ordering Should Have v1.0 High
F-007 In-App Payment Should Have v1.0 High
F-008 Dietary Filtering Should Have v1.0 Low
F-009 Favorite Trucks Should Have v1.0 Low
F-010 Order History Should Have v1.0 Low
F-011 Group Ordering Could Have v1.1 High
F-012 Ratings and Reviews Could Have v1.1 Medium
F-013 Schedule View Could Have v1.1 Low
F-014 Crowd Density Could Have v2.0 High
F-015 Loyalty Program Won't Have Future High

5.2 Detailed Feature Specifications

F-001: Real-Time Truck Tracking

Feature ID: F-001 Feature Name: Real-Time Truck Tracking Priority: Must Have (P1) Release: MVP Owner: Product Team

Description: Display current location of all active food trucks on an interactive campus map, updated every 30 seconds.

User Problem: Employees waste 15+ minutes walking to parking lots searching for trucks that may or may not be present.

Acceptance Criteria:

Feature: Real-Time Truck Tracking

  Scenario: View active trucks on map
    Given I am an authenticated user
    When I open the app
    Then I see a map centered on my building
    And I see pins for all active trucks within campus
    And each pin shows the truck's cuisine type icon

  Scenario: View truck details from map
    Given I am viewing the map with active trucks
    When I tap on a truck pin
    Then I see a bottom sheet with:
      | Field | Value |
      | Truck name | Text |
      | Cuisine type | Text + icon |
      | Distance from me | "X min walk" |
      | Current wait time | "~X min" |
      | Operating hours | "Until X:XX PM" |
    And I see a "View Menu" button
    And I see a "Get Directions" button

  Scenario: Real-time location updates
    Given I am viewing a truck on the map
    When the truck's GPS position changes
    Then the pin location updates within 30 seconds
    And no manual refresh is required

  Scenario: Truck arrives on campus
    Given a truck was off-campus
    When the truck GPS enters campus boundary
    Then a new pin appears on the map within 60 seconds

  Scenario: Truck departs campus
    Given a truck is shown on the map
    When the truck GPS exits campus boundary
    Then the pin is removed from the map within 60 seconds
    And users with active orders are notified

  Scenario: Location unknown
    Given a truck's GPS has not updated for 10+ minutes
    When I view that truck
    Then I see a "Location Unknown" status
    And I see "Last seen: [Location], [X] min ago"

UI/UX Requirements:

  • Map uses standard pinch-zoom and pan gestures
  • Pins cluster when zoomed out, expand when zoomed in
  • User's current building is highlighted
  • Active truck pins pulse subtly to indicate real-time data
  • Different pin colors for different cuisine types

Technical Requirements:

  • GPS polling every 30 seconds from vendor devices
  • WebSocket connection for real-time map updates
  • Fallback to 60-second polling if WebSocket fails
  • Location accuracy within 10 meters

Analytics Events:

Event Trigger Properties
map_viewed User opens map building, trucks_visible
truck_pin_tapped User taps pin truck_id, distance
directions_requested User taps "Get Directions" truck_id, from_building

Accessibility:

  • Truck pins have accessible labels with truck name and status
  • Map supports VoiceOver/TalkBack with landmark descriptions
  • List View alternative for non-visual navigation

Edge Cases:

  • No active trucks: Show message with next scheduled truck
  • Multiple trucks same location: Stack pins with count badge
  • User location unavailable: Default to Building A, allow manual selection

Out of Scope:

  • Indoor mapping within buildings
  • Walking route visualization (use native maps for directions)
  • Historical location data

F-002: Push Notifications

Feature ID: F-002 Feature Name: Push Notifications Priority: Must Have (P1) Release: MVP Owner: Product Team

Description: Proactively notify users about food truck arrivals, order status changes, and time-sensitive updates.

User Problem: Users miss favorite trucks because they don't know when trucks arrive.

Acceptance Criteria:

Feature: Push Notifications

  Scenario: Arrival notification for favorited truck
    Given I have favorited "Taco Tornado"
    And my notification preferences allow arrival alerts
    When Taco Tornado's GPS enters the 5-mile campus approach radius
    Then I receive a push notification within 60 seconds
    And the notification says "Taco Tornado arriving at Lot B in ~15 min!"
    And the notification includes current pre-order count and estimated wait

  Scenario: On-campus arrival notification
    Given I have favorited "Taco Tornado"
    When Taco Tornado arrives at their parking lot
    Then I receive a push notification
    And the notification says "Taco Tornado is here! Now serving at Lot B"

  Scenario: Order ready notification
    Given I have placed a pre-order
    When the vendor marks my order as ready
    Then I receive a push notification within 10 seconds
    And the notification says "Your order from Taco Tornado is ready!"
    And tapping the notification opens the order with QR code

  Scenario: Configure notification preferences
    Given I am in Settings > Notifications
    Then I can toggle:
      | Setting | Default |
      | Arrival alerts for favorites | On |
      | Order status updates | On |
      | Daily schedule digest | Off |
      | Promotional messages | Off |
    And I can set "Do Not Disturb" hours

  Scenario: Respect system notification settings
    Given I have disabled notifications for TacoTracker in device settings
    When a notification trigger occurs
    Then no notification is sent
    And the in-app notification center shows the alert

Notification Types:

Type Trigger Title Body Deep Link
Truck Approaching GPS within 5 miles "[Truck] arriving soon!" "~15 min to [Lot]. Pre-order now!" Truck detail
Truck Arrived GPS at lot "[Truck] is here!" "Now serving at [Lot]" Truck detail
Order Confirmed Order placed "Order confirmed" "Ready at ~[time] from [Truck]" Order detail
Order Ready Vendor marks ready "Your order is ready!" "Pick up at [Truck] - [Lot]" Order QR code
Order Reminder 15 min after ready "Don't forget your order!" "Your [Truck] order is waiting" Order detail
Truck Departing GPS leaving + open orders "[Truck] is leaving!" "Pick up your order now" Order detail

Technical Requirements:

  • Firebase Cloud Messaging (FCM) for cross-platform delivery
  • Notification delivery latency < 60 seconds from trigger
  • Support for notification grouping/stacking
  • Background location access NOT required (server-side triggers)

Analytics Events:

Event Trigger Properties
notification_sent Server sends notification type, truck_id, user_segment
notification_received Device receives type, latency_ms
notification_opened User taps notification type, time_to_open
notification_dismissed User dismisses type

F-006: Mobile Pre-Ordering

Feature ID: F-006 Feature Name: Mobile Pre-Ordering Priority: Should Have (P2) Release: v1.0 Owner: Product Team

Description: Allow users to place orders in advance for pickup, skipping the walk-up line.

User Problem: Wait times of 15-25 minutes discourage food truck visits and waste productive time.

Acceptance Criteria:

Feature: Mobile Pre-Ordering

  Scenario: Place a new pre-order
    Given I am viewing "Taco Tornado" menu
    And the truck is accepting pre-orders
    When I tap "Add to Cart" on "Carnitas Taco"
    Then the item is added to my cart
    And the cart icon shows item count
    And I can add customizations (extra salsa, no onions)

  Scenario: View and modify cart
    Given I have items in my cart
    When I tap the cart icon
    Then I see all items with:
      | Field | Display |
      | Item name | Text |
      | Customizations | Text |
      | Quantity | Stepper |
      | Item price | Currency |
      | Subtotal | Currency |
      | Tax | Currency |
      | Total | Currency |
    And I can remove items
    And I can modify quantities

  Scenario: Complete checkout
    Given I have items in my cart
    And I tap "Checkout"
    When I review the order summary
    Then I see estimated pickup time
    And I see my saved payment method
    And I can tap "Place Order" to confirm

  Scenario: Order time restrictions
    Given a truck is 30+ minutes from arrival
    When I try to place an order
    Then I see "Pre-orders open when truck is within 30 minutes"
    And the "Order" button is disabled

  Scenario: Queue capacity reached
    Given a truck has 10+ orders in queue
    When I try to place an order
    Then I see "Pre-order queue is full. Walk-up orders available."
    And I can tap "Notify me when queue opens"

  Scenario: Cancel an order
    Given I have an active order
    And the order has not been started by vendor
    When I tap "Cancel Order"
    Then I see confirmation dialog
    And upon confirming, order is canceled
    And I receive refund within 24 hours
    And vendor is notified of cancellation

  Scenario: Modify an order (within window)
    Given I have an active order
    And less than 2 minutes have passed since order
    When I tap "Modify Order"
    Then I can add/remove items
    And I see updated total
    And I confirm modification

Order States:

┌──────────────┐      ┌──────────────┐      ┌──────────────┐
│   PLACED     │─────▶│   RECEIVED   │─────▶│  PREPARING   │
│              │      │  by vendor   │      │              │
└──────────────┘      └──────────────┘      └──────────────┘
                                                   │
                                                   ▼
┌──────────────┐      ┌──────────────┐      ┌──────────────┐
│  COMPLETED   │◀─────│   PICKED UP  │◀─────│    READY     │
│              │      │              │      │  for pickup  │
└──────────────┘      └──────────────┘      └──────────────┘

Alternative flows:
PLACED ──▶ CANCELED (by user, within window)
PLACED ──▶ CANCELED (by vendor, truck departing)
READY ──▶ ABANDONED (not picked up in 30 min)

UI/UX Requirements:

Cart Screen Wireframe (ASCII):

┌─────────────────────────────────────┐
│ ← Cart                    Clear All │
├─────────────────────────────────────┤
│                                     │
│  Taco Tornado                       │
│  Est. pickup: 12:15 PM              │
│                                     │
│  ┌─────────────────────────────────┐│
│  │ Carnitas Taco          $4.50   ││
│  │ + Extra salsa (+$0.50)         ││
│  │ - No onions                    ││
│  │           [−] 2 [+]    $10.00  ││
│  └─────────────────────────────────┘│
│                                     │
│  ┌─────────────────────────────────┐│
│  │ Horchata               $3.00   ││
│  │           [−] 1 [+]     $3.00  ││
│  └─────────────────────────────────┘│
│                                     │
│  ──────────────────────────────────│
│  Subtotal                  $13.00  │
│  Tax (8.25%)                $1.07  │
│  ──────────────────────────────────│
│  Total                     $14.07  │
│                                     │
│  ┌─────────────────────────────────┐│
│  │        Checkout - $14.07       ││
│  └─────────────────────────────────┘│
│                                     │
└─────────────────────────────────────┘

Technical Requirements:

  • Orders stored with idempotency key to prevent duplicates
  • Real-time sync between user app and vendor portal
  • Order timeout: 30 minutes after ready status
  • Maximum items per order: 10 (configurable)

Business Rules:

Rule Description
BR-ORDER-001 Orders cannot be placed more than 60 min before truck arrival
BR-ORDER-002 Orders cannot be modified after vendor receipt (2 min)
BR-ORDER-003 Users limited to one active order per truck
BR-ORDER-004 Pre-orders close when queue reaches 10 orders
BR-ORDER-005 Canceled orders refunded within 24 hours

Analytics Events:

Event Trigger Properties
cart_item_added Add to cart item_id, truck_id, price
cart_viewed Open cart item_count, total
checkout_started Tap checkout item_count, total
order_placed Complete order order_id, total, item_count
order_canceled Cancel order order_id, reason, time_since_order

F-007: In-App Payment

Feature ID: F-007 Feature Name: In-App Payment Priority: Should Have (P2) Release: v1.0 Owner: Product Team

Description: Securely process payments within the app using saved payment methods.

User Problem: Cash-only trucks create friction; finding ATM wastes time.

Acceptance Criteria:

Feature: In-App Payment

  Scenario: Add payment method
    Given I am in Settings > Payment Methods
    When I tap "Add Payment Method"
    Then I can add:
      | Method | Flow |
      | Credit/Debit Card | Stripe card entry |
      | Apple Pay | System sheet |
      | Google Pay | System sheet |
    And the method is tokenized (card numbers not stored)

  Scenario: Pay with saved card
    Given I have a saved payment method
    And I am at checkout
    When I tap "Pay $14.07"
    Then I see payment confirmation screen
    And I can authenticate with Face ID/Touch ID
    And upon success, I see order confirmation

  Scenario: Pay with Apple Pay
    Given Apple Pay is available on my device
    And I am at checkout
    When I tap the Apple Pay button
    Then the Apple Pay sheet appears
    And upon authentication, payment processes
    And I see order confirmation

  Scenario: Payment fails
    Given I am at checkout
    When my payment is declined
    Then I see "Payment failed. Please try another method."
    And my order is NOT placed
    And I can select a different payment method

  Scenario: Refund processing
    Given I have a completed order
    And a refund is issued
    Then I receive push notification about refund
    And the refund appears in order history
    And the refund posts to original method within 5-7 days

Technical Requirements:

  • PCI-DSS compliant (Level 4)
  • Stripe for payment processing
  • Card tokenization (no raw card numbers stored)
  • 3D Secure support for high-risk transactions
  • Retry logic for transient failures

Security Requirements:

  • Biometric authentication for payments > $25
  • Session timeout requires re-authentication for payment
  • Fraud detection via Stripe Radar

F-008: Dietary Filtering

Feature ID: F-008 Feature Name: Dietary Filtering Priority: Should Have (P2) Release: v1.0 Owner: Product Team

Description: Filter menus and receive alerts based on dietary restrictions and allergens.

User Problem: Users with allergies waste time checking each item, feel unsafe.

Acceptance Criteria:

Feature: Dietary Filtering

  Scenario: Set dietary preferences
    Given I am in Profile > Dietary Preferences
    When I select my restrictions
    Then I can choose from:
      | Option | Type |
      | Vegetarian | Diet |
      | Vegan | Diet |
      | Gluten-Free | Allergen |
      | Nut-Free | Allergen |
      | Dairy-Free | Allergen |
      | Halal | Diet |
      | Kosher | Diet |
      | Shellfish-Free | Allergen |
    And I can add custom restrictions via text field

  Scenario: View filtered menu
    Given I have set "Nut-Free" preference
    When I view a truck's menu
    Then items containing nuts show ⚠️ warning badge
    And items safe for me show ✓ "Safe for you" badge
    And I can toggle "Show only safe items" filter

  Scenario: Allergen warning at checkout
    Given I have set "Nut-Free" preference
    And I have a nut-containing item in cart
    When I proceed to checkout
    Then I see warning: "Your cart contains items with nuts"
    And I must acknowledge before completing order

  Scenario: View ingredient details
    Given I am viewing a menu item
    When I tap "View Ingredients"
    Then I see full ingredient list
    And allergens are highlighted in bold
    And I see "May contain" cross-contamination warnings

Dietary Badges:

┌─────────────────────────────────────────────┐
│  Menu Item Card with Dietary Info           │
├─────────────────────────────────────────────┤
│                                             │
│  Carnitas Street Taco              $4.50    │
│  Slow-roasted pork with cilantro...         │
│                                             │
│  🌿 Dairy-Free  ⚠️ Contains Gluten          │
│                                             │
│  ✓ Safe for you (based on your preferences) │
│                                             │
└─────────────────────────────────────────────┘

5.3 Feature Dependencies

                    ┌──────────────────┐
                    │ F-005: SSO Auth  │
                    │    (Required)    │
                    └────────┬─────────┘
                             │
           ┌─────────────────┼─────────────────┐
           │                 │                 │
           ▼                 ▼                 ▼
    ┌──────────────┐  ┌──────────────┐  ┌──────────────┐
    │ F-001: GPS   │  │ F-003: Menus │  │ F-009: Favs  │
    │  Tracking    │  │              │  │              │
    └──────┬───────┘  └──────┬───────┘  └──────┬───────┘
           │                 │                 │
           │      ┌──────────┴──────────┐      │
           │      │                     │      │
           ▼      ▼                     ▼      │
    ┌──────────────┐              ┌──────────────┐
    │ F-004: Wait  │              │ F-008: Diet  │
    │    Times     │              │   Filter     │
    └──────────────┘              └──────────────┘
           │
           │      ┌───────────────────────┐
           │      │                       │
           ▼      ▼                       │
    ┌──────────────┐              ┌───────┴──────┐
    │ F-002: Push  │◀─────────────│ F-006: Pre-  │
    │ Notifications│              │   Ordering   │
    └──────────────┘              └───────┬──────┘
                                          │
                                          ▼
                                  ┌──────────────┐
                                  │ F-007: Pay   │
                                  │              │
                                  └──────────────┘

5.4 Feature Prioritization Matrix

Feature User Value Business Value Effort Risk Priority Score
F-001 GPS Tracking 10 9 5 3 9.0 Must Have
F-002 Notifications 9 8 4 2 8.5 Must Have
F-003 Menus 8 7 2 1 8.5 Must Have
F-004 Wait Times 8 7 6 4 7.0 Must Have
F-005 SSO 7 10 2 1 8.5 Must Have
F-006 Pre-Ordering 10 10 8 5 8.0 Should Have
F-007 Payment 9 10 7 6 7.5 Should Have
F-008 Diet Filter 8 6 3 2 7.5 Should Have
F-009 Favorites 7 5 2 1 6.5 Should Have
F-010 Order History 6 5 2 1 6.0 Should Have
F-011 Group Orders 6 6 8 5 5.0 Could Have
F-012 Reviews 5 6 5 3 5.0 Could Have
F-013 Schedule 6 4 3 1 5.5 Could Have
F-014 Crowd Density 5 5 9 6 4.0 Could Have

Priority Score = (User Value + Business Value) / 2 - (Effort + Risk) / 10


6. User Stories and Epics

6.1 Epic Overview

Epic ID Epic Name Description Stories
E-001 Truck Discovery Find and learn about food trucks 8
E-002 Menu Browsing View menus with filtering 6
E-003 Pre-Ordering Place and manage orders 10
E-004 Payment Pay for orders securely 5
E-005 Notifications Receive timely alerts 6
E-006 User Profile Manage preferences 5
E-007 Vendor Portal Truck operator features 8

6.2 User Stories by Epic

Epic E-001: Truck Discovery

US-001: View Map of Active Trucks

As a hungry employee,
I want to see all active food trucks on a map,
So that I can quickly find where to eat.

Acceptance Criteria:
- Map loads within 2 seconds
- Shows all trucks currently on campus
- Each truck has identifiable pin
- My current building is highlighted

Story Points: 5
Sprint: 1

US-002: View Truck Details

As an employee considering a food truck,
I want to see details about a truck before walking there,
So that I can make an informed decision.

Acceptance Criteria:
- Shows truck name, cuisine type, distance
- Shows current wait time
- Shows operating hours for today
- Shows "View Menu" and "Get Directions" actions

Story Points: 3
Sprint: 1

US-003: Switch Between Map and List View

As a user who prefers lists,
I want to see trucks in a list format,
So that I can easily compare options.

Acceptance Criteria:
- Toggle between Map and List views
- List shows same info as map pins
- List sortable by distance, wait time, name
- Selection preserved when switching views

Story Points: 3
Sprint: 1

US-004: Search for Specific Truck

As a user looking for a specific truck,
I want to search by name or cuisine type,
So that I can find it quickly.

Acceptance Criteria:
- Search bar at top of discovery screen
- Search by truck name (partial match)
- Search by cuisine type
- Results highlight matching text

Story Points: 3
Sprint: 2

US-005: Filter Trucks by Cuisine

As a user with a craving,
I want to filter trucks by cuisine type,
So that I only see relevant options.

Acceptance Criteria:
- Filter chips: All, Mexican, Asian, American, etc.
- Multiple filters can be selected
- Filter state persists within session
- Shows count of results per filter

Story Points: 2
Sprint: 2

Epic E-003: Pre-Ordering

US-020: Add Item to Cart

As a user who wants to pre-order,
I want to add menu items to a cart,
So that I can build my order.

Acceptance Criteria:
- Tap "Add" button on menu item
- Item added to cart with animation
- Cart icon updates with count
- Can add same item multiple times

Story Points: 3
Sprint: 3

US-021: Customize Order Item

As a user with specific preferences,
I want to customize my order items,
So that I get my food exactly how I want it.

Acceptance Criteria:
- Shows available customizations per item
- Can add extras (priced)
- Can remove ingredients (free)
- Can add special instructions text

Story Points: 5
Sprint: 3

US-022: Review and Edit Cart

As a user ready to order,
I want to review my cart before checkout,
So that I can verify my order is correct.

Acceptance Criteria:
- Shows all items with customizations
- Shows individual and total prices
- Can adjust quantities
- Can remove items
- Can clear entire cart

Story Points: 5
Sprint: 3

US-023: Complete Checkout

As a user confirming my order,
I want to complete checkout smoothly,
So that my order is placed without friction.

Acceptance Criteria:
- Shows order summary
- Shows estimated pickup time
- Shows selected payment method
- Single tap to confirm (with biometrics)
- Shows confirmation with order number

Story Points: 5
Sprint: 4

US-024: View Order Status

As a user who placed an order,
I want to track my order status,
So that I know when to pick it up.

Acceptance Criteria:
- Shows current status (Placed → Received → Preparing → Ready)
- Shows estimated time remaining
- Updates in real-time
- Shows QR code when ready

Story Points: 3
Sprint: 4

US-025: Cancel Order

As a user who changed my mind,
I want to cancel my order,
So that I'm not charged for food I won't eat.

Acceptance Criteria:
- Cancel button visible before vendor confirms
- Shows confirmation dialog
- Explains refund timing
- Vendor notified of cancellation

Story Points: 3
Sprint: 4

6.3 Story Mapping

         ┌────────────────────────────────────────────────────────────────────┐
         │                        USER JOURNEY                                │
         │  Discover    │   Explore    │   Order    │   Pickup    │   Return   │
         └────────────────────────────────────────────────────────────────────┘
              │              │              │             │             │
MVP          ─┼──────────────┼──────────────┼─────────────┼─────────────┼─
              │              │              │             │             │
          [US-001]       [US-010]           │         [US-024]      [US-030]
          View Map       View Menu          │         Track Order   View History
              │              │              │             │             │
          [US-002]       [US-011]           │         [US-031]          │
          Truck Details  Filter Menu        │         Show QR Code      │
              │              │              │             │             │
v1.0     ────┼──────────────┼──────────────┼─────────────┼─────────────┼─
              │              │              │             │             │
          [US-003]       [US-012]       [US-020]      [US-032]      [US-035]
          List View      Diet Prefs     Add to Cart   Pickup Conf   Reorder
              │              │              │             │             │
          [US-004]           │         [US-021]          │         [US-036]
          Search             │         Customize         │         Favorites
              │              │              │             │             │
          [US-005]           │         [US-022]          │             │
          Filter             │         Edit Cart         │             │
              │              │              │             │             │
v1.1     ────┼──────────────┼──────────────┼─────────────┼─────────────┼─
              │              │              │             │             │
          [US-006]       [US-013]       [US-026]      [US-033]      [US-037]
          Schedule       Reviews        Group Order   Rate Order    Share
              │              │              │             │             │

6.4 Definition of Done

A user story is complete when:

  • Code complete and peer reviewed
  • Unit tests written (80%+ coverage)
  • Integration tests passing
  • UI matches design specifications
  • Accessibility requirements met (WCAG 2.1 AA)
  • Analytics events implemented
  • Error states handled gracefully
  • Performance benchmarks met
  • Documentation updated
  • Product Owner acceptance

7. Information Architecture

7.1 App Structure

TacoTracker 3000
│
├── 🏠 Home (Map/List)
│   ├── Map View
│   │   └── Truck Pin → Truck Card → Truck Detail
│   ├── List View
│   │   └── Truck Row → Truck Detail
│   └── Search/Filter
│
├── 🌮 Truck Detail
│   ├── Overview Tab
│   │   ├── Location & Distance
│   │   ├── Wait Time
│   │   └── Operating Hours
│   ├── Menu Tab
│   │   ├── Categories
│   │   ├── Items with Dietary Tags
│   │   └── Item Detail Sheet
│   └── Info Tab
│       ├── About
│       ├── Schedule
│       └── Contact
│
├── 🛒 Cart
│   ├── Items List
│   ├── Order Summary
│   └── Checkout
│       ├── Payment Method
│       └── Confirmation
│
├── 📋 Orders
│   ├── Active Orders
│   │   └── Order Detail with QR
│   └── Order History
│       └── Past Order Detail
│
└── 👤 Profile
    ├── Account Info
    ├── Payment Methods
    ├── Dietary Preferences
    ├── Notification Settings
    ├── Favorite Trucks
    └── Help & Support

7.2 Navigation Model

┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│                        [Status Bar]                             │
│                                                                 │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│                                                                 │
│                                                                 │
│                      [Content Area]                             │
│                                                                 │
│                                                                 │
│                                                                 │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│    🏠          🛒           📋           👤                    │
│   Home        Cart       Orders       Profile                   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘
          Bottom Tab Navigation (Primary)

Navigation Patterns:

  • Tab Bar: Primary navigation between main sections
  • Push Navigation: Drill into details (Truck → Menu → Item)
  • Modal Sheets: Quick actions (Cart preview, filters)
  • Bottom Sheets: Contextual info (Truck card from map pin)

7.3 Content Hierarchy

Priority Content Location
P1 (Always Visible) Active truck map Home tab
P1 (Always Visible) Cart badge count Tab bar
P2 (One Tap) Truck menu Truck detail
P2 (One Tap) Active order status Orders tab
P3 (Two Taps) Payment methods Profile → Payments
P3 (Two Taps) Order history Orders → History

8. Wireframes and Interaction Design

8.1 Key Screen Wireframes

Home Screen (Map View)

┌─────────────────────────────────────────┐
│ 🔍 Search trucks...              🔔    │
├─────────────────────────────────────────┤
│ [All] [Mexican] [Asian] [American] →    │
├─────────────────────────────────────────┤
│                                         │
│        ┌───────────────────┐            │
│        │                   │            │
│        │     Building A    │            │
│        │       ┌───┐       │            │
│        │       │ 🌮│ Lot A │            │
│        │       └───┘       │            │
│        │                   │            │
│        │  Building B       │            │
│        │       ┌───┐       │            │
│        │       │ 🍜│ Lot B │            │
│        │       └───┘       │            │
│        │          Building C            │
│        │                   │            │
│        └───────────────────┘            │
│                                         │
│        [📍 My Location]                 │
│                                         │
├─────────────────────────────────────────┤
│ ┌─────────────────────────────────────┐ │
│ │ 🌮 Taco Tornado                     │ │
│ │    Lot A • 3 min walk • ~8 min wait │ │
│ │    [View Menu]                      │ │
│ └─────────────────────────────────────┘ │
├─────────────────────────────────────────┤
│   🏠        🛒         📋        👤     │
│  Home     Cart(2)   Orders   Profile    │
└─────────────────────────────────────────┘

Truck Detail Screen

┌─────────────────────────────────────────┐
│ ←                              ♡ ⋮     │
├─────────────────────────────────────────┤
│                                         │
│    ┌───────────────────────────────┐    │
│    │                               │    │
│    │    [Truck Hero Image]        │    │
│    │                               │    │
│    └───────────────────────────────┘    │
│                                         │
│    🌮 Taco Tornado                      │
│    Mexican • $$ • ⭐ 4.8 (234)          │
│                                         │
│    📍 Lot A • 3 min walk                │
│    ⏱️ ~8 min wait • 12 in queue         │
│    🕐 Open until 2:00 PM                │
│                                         │
│    [Overview] [Menu] [Info]             │
├─────────────────────────────────────────┤
│    TODAY'S SPECIALS                     │
│    ┌─────────────────────────────────┐  │
│    │ 🌮 Carnitas Tuesday    $4.50   │  │
│    │    Slow-roasted pork...        │  │
│    │    🌿 DF  ⚠️ G         [Add]   │  │
│    └─────────────────────────────────┘  │
│                                         │
│    TACOS                                │
│    ┌─────────────────────────────────┐  │
│    │ 🌮 Carne Asada        $4.50    │  │
│    │    Grilled steak...            │  │
│    │    🌿 GF  🌿 DF        [Add]   │  │
│    └─────────────────────────────────┘  │
│                                         │
├─────────────────────────────────────────┤
│   🏠        🛒         📋        👤     │
│  Home     Cart(2)   Orders   Profile    │
└─────────────────────────────────────────┘

Legend:
🌿 = Safe for dietary preference
⚠️ = Contains allergen
GF = Gluten Free
DF = Dairy Free
G = Contains Gluten

Cart Screen

┌─────────────────────────────────────────┐
│ ← Cart                       Clear All │
├─────────────────────────────────────────┤
│                                         │
│  TACO TORNADO                           │
│  Est. pickup: 12:15 PM (~8 min)         │
│                                         │
│  ┌─────────────────────────────────────┐│
│  │ Carnitas Taco              $4.50    ││
│  │ + Extra salsa (+$0.50)              ││
│  │ - No onions                         ││
│  │                   [−] 2 [+]  $10.00 ││
│  └─────────────────────────────────────┘│
│                                         │
│  ┌─────────────────────────────────────┐│
│  │ Horchata                   $3.00    ││
│  │                   [−] 1 [+]   $3.00 ││
│  └─────────────────────────────────────┘│
│                                         │
│  + Add more items                       │
│                                         │
├─────────────────────────────────────────┤
│  Special Instructions                   │
│  ┌─────────────────────────────────────┐│
│  │ e.g., "Extra napkins please"       ││
│  └─────────────────────────────────────┘│
│                                         │
├─────────────────────────────────────────┤
│  Subtotal                      $13.00  │
│  Tax (8.25%)                    $1.07  │
│  ────────────────────────────────────  │
│  Total                         $14.07  │
│                                         │
│  💳 •••• 4242              Change >    │
│                                         │
│  ┌─────────────────────────────────────┐│
│  │         Checkout - $14.07          ││
│  │            🔒 Secure               ││
│  └─────────────────────────────────────┘│
│                                         │
└─────────────────────────────────────────┘

Order Confirmation Screen

┌─────────────────────────────────────────┐
│                                         │
│                  ✓                      │
│            Order Placed!                │
│                                         │
│         Order #TT-2026-0422            │
│                                         │
├─────────────────────────────────────────┤
│                                         │
│    ┌───────────────────────────────┐    │
│    │                               │    │
│    │      [QR Code for Pickup]     │    │
│    │                               │    │
│    └───────────────────────────────┘    │
│                                         │
│    Show this code at pickup             │
│                                         │
├─────────────────────────────────────────┤
│                                         │
│    PICKUP FROM                          │
│    🌮 Taco Tornado                      │
│    📍 Lot A                             │
│                                         │
│    ESTIMATED READY                      │
│    🕐 12:15 PM (in ~8 minutes)          │
│                                         │
│    ORDER SUMMARY                        │
│    2x Carnitas Taco             $10.00  │
│    1x Horchata                   $3.00  │
│    Tax                           $1.07  │
│    ────────────────────────────────     │
│    Total                        $14.07  │
│                                         │
├─────────────────────────────────────────┤
│                                         │
│    [Track Order Status]                 │
│                                         │
│    [Back to Home]                       │
│                                         │
└─────────────────────────────────────────┘

8.2 Interaction Patterns

Pattern Gesture Feedback Use Case
Tap Pin Single tap Bottom sheet slides up View truck summary
Add to Cart Tap button Button animates, cart badge increments Add menu item
Pull to Refresh Pull down Spinner, data refresh Update truck locations
Swipe to Delete Swipe left Red delete button revealed Remove cart item
Long Press Press and hold Haptic feedback, context menu Quick actions on item
Pinch Zoom Two-finger pinch Map zoom in/out Navigate map

8.3 State Diagrams

Cart States

                    ┌─────────────┐
                    │    EMPTY    │
                    └──────┬──────┘
                           │ Add item
                           ▼
                    ┌─────────────┐
              ┌────▶│  HAS_ITEMS  │◀────┐
              │     └──────┬──────┘     │
              │            │            │
        Add item     Remove last   Add item
              │            │            │
              │            ▼            │
              │     ┌─────────────┐     │
              └─────│    EMPTY    │─────┘
                    └─────────────┘
                           │
                           │ (Cannot checkout)
                           ▼
                    ┌─────────────┐
                    │  CHECKOUT   │
                    └──────┬──────┘
                           │
              ┌────────────┼────────────┐
              │            │            │
           Cancel      Payment      Payment
              │         Success       Fail
              ▼            ▼            │
       ┌─────────────┐ ┌─────────────┐ │
       │  HAS_ITEMS  │ │  CONFIRMED  │ │
       └─────────────┘ └─────────────┘ │
                                       │
                    ┌──────────────────┘
                    ▼
             ┌─────────────┐
             │  CHECKOUT   │ (retry)
             └─────────────┘

8.4 Micro-interactions

Interaction Animation Duration Easing
Add to cart Button scales down then up, badge bounces 300ms ease-out
Order placed Checkmark draws in, confetti particles 600ms spring
Pull to refresh Taco icon spins Loop while loading linear
Notification received Slide in from top, subtle bounce 400ms spring
Error state Shake horizontally 300ms ease-in-out
Success state Green flash overlay 200ms ease-out

9. Functional Requirements

9.1 Core Functionality

ID Requirement Priority Validation
FR-001 System shall display all active food trucks on an interactive map P1 Map loads with all trucks in < 2s
FR-002 System shall update truck locations every 30 seconds P1 Location timestamp within 30s
FR-003 System shall calculate and display estimated wait times P1 Estimate within 3 min of actual 80% of time
FR-004 System shall send push notifications for truck arrivals P1 Notification within 60s of trigger
FR-005 System shall authenticate users via Okta SSO P1 SSO flow completes in < 5s
FR-006 System shall display menu items with prices and dietary info P1 Menu loads in < 2s
FR-007 System shall allow users to place pre-orders P2 Order confirmed in < 10s
FR-008 System shall process payments via Stripe P2 Payment completes in < 5s
FR-009 System shall filter menu items by dietary preferences P2 Filter applies in < 500ms
FR-010 System shall display order status in real-time P2 Status updates within 10s

9.2 Business Rules

Rule ID Rule Enforcement
BR-001 Pre-orders limited to 60 min before truck arrival System blocks early orders
BR-002 Orders cannot be modified after vendor receipt (2 min) UI disables edit after timeout
BR-003 Maximum 10 items per order System prevents adding beyond limit
BR-004 Pre-orders close at 10 orders in queue System switches to walk-up only
BR-005 Refunds processed within 24 hours Automated refund workflow
BR-006 Wait time recalculates every 60 seconds Background job
BR-007 GPS staleness threshold is 10 minutes Auto-mark as "Location Unknown"
BR-008 Users limited to one active order per truck System prevents duplicate orders
BR-009 Vendors must update menu by 9 AM Portal reminder, stale warning
BR-010 Order pickup timeout is 30 minutes Notification, then abandon

9.3 Data Requirements

Data Captured

Entity Key Fields Source Sensitivity
User ID, name, email, building Okta SSO PII
User Preferences Dietary restrictions, favorites User input Personal
Order Items, total, status, timestamp App transactions Financial
Payment Token, last 4 digits, method Stripe PCI-DSS
Truck Location Lat/long, timestamp GPS device Business
Menu Item Name, price, allergens, availability Vendor portal Public

9.4 Notification Requirements

Trigger Channel Content Timing
Favorite truck approaching Push "[Truck] arriving in ~15 min!" When within 5 miles
Truck arrived Push "[Truck] is here at [Lot]!" On GPS arrival
Order confirmed Push + In-app "Order #[X] confirmed" Immediate
Order ready Push + In-app "Your order is ready!" On vendor mark
Order reminder Push "Don't forget your order!" 15 min after ready
Truck departing Push "[Truck] is leaving!" On GPS departure with open orders

10. Non-Functional Requirements

10.1 Performance

Metric Requirement Measurement
App launch to interactive < 3 seconds 95th percentile
Map load with all trucks < 2 seconds 95th percentile
Menu load < 2 seconds 95th percentile
Order submission < 5 seconds 99th percentile
Push notification delivery < 60 seconds 95th percentile
GPS update processing < 5 seconds 99th percentile
Search results < 500 ms 95th percentile

10.2 Scalability

Dimension Current Target Growth Timeline
Concurrent users N/A 800 Launch
Daily orders N/A 500 90 days
GPS updates/sec N/A 50 Launch
Peak load multiplier N/A 5x average Lunch rush

10.3 Reliability

Metric Requirement
Uptime (business hours) 99.5%
Planned maintenance Outside 8 AM - 6 PM
Recovery Time Objective < 1 hour
Recovery Point Objective < 5 minutes
Backup frequency Every 6 hours

10.4 Security

Requirement Implementation
Authentication Okta SSO (SAML 2.0 / OIDC)
Authorization Role-based (user, vendor, admin)
Data encryption in transit TLS 1.3
Data encryption at rest AES-256
Payment security PCI-DSS Level 4, Stripe tokenization
API security Rate limiting (100 req/min/user)
Session management 24-hour tokens, refresh on activity

10.5 Accessibility

Requirement Standard
Compliance level WCAG 2.1 AA
Screen reader support VoiceOver (iOS), TalkBack (Android)
Color contrast 4.5:1 minimum
Touch targets 44x44 pt minimum
Font scaling Support up to 200%
Motion sensitivity Respect reduced motion settings

10.6 Compatibility

Platform Minimum Version
iOS 14.0+
Android 10.0+ (API 29)
Screen sizes 4.7" to 12.9"
Orientation Portrait primary, landscape supported
Network 3G minimum, offline caching

11. Success Metrics and Analytics

11.1 Key Performance Indicators (KPIs)

KPI Definition Target Baseline
Adoption Rate % of employees with app installed 70% 0%
DAU Daily Active Users (lunch hours) 500+ 0
Visit Success Rate % of app-assisted visits resulting in food 98% 66%
Pre-Order Rate % of orders placed via app vs walk-up 40% 0%
Time Savings Avg minutes saved per visit 15 min 0
NPS Net Promoter Score 50+ N/A

11.2 North Star Metric

Successful Taco Acquisitions per Week

Definition: Count of orders completed (picked up) through the app per week.

Rationale: This metric captures adoption, engagement, and value delivery in a single number. If users are successfully getting their food through the app, we're achieving our core mission.

Target: 1,500 successful acquisitions/week by week 12 post-launch.

11.3 Analytics Implementation

Event Tracking Plan

Category Event Name Trigger Properties
Discovery app_opened App launch source, building
Discovery map_viewed Map tab visible trucks_visible, zoom_level
Discovery truck_selected Tap truck pin/card truck_id, distance, wait_time
Discovery search_performed Submit search query, results_count
Menu menu_viewed Open truck menu truck_id, items_count
Menu item_viewed Open item detail item_id, price
Menu filter_applied Apply dietary filter filter_type
Cart item_added Add to cart item_id, price, truck_id
Cart item_removed Remove from cart item_id
Cart cart_viewed Open cart items_count, total
Order checkout_started Begin checkout items_count, total
Order order_placed Complete order order_id, total, items_count
Order order_canceled Cancel order order_id, reason
Order order_completed Pickup confirmed order_id, wait_time_actual
Notification notification_received Push delivered type, truck_id
Notification notification_opened Push tapped type, time_to_open

User Properties

Property Description Collection
user_id Anonymized user identifier On auth
building User's primary building From Okta
tenure_days Days since first use Calculated
order_count Lifetime orders Calculated
favorite_trucks Count of favorited trucks On change
dietary_prefs Set dietary preferences On change

11.4 Dashboard Requirements

Executive Dashboard

  • Total users (cumulative)
  • DAU / WAU / MAU
  • Orders per day (with trend)
  • Revenue facilitated
  • Top trucks by order volume

Product Dashboard

  • Feature adoption rates
  • Funnel: Map → Truck → Menu → Cart → Order
  • Pre-order vs walk-up ratio
  • Average order value
  • Wait time accuracy

Vendor Dashboard (per vendor)

  • Orders today
  • Revenue today
  • Popular items
  • Pre-order queue depth
  • Customer ratings

11.5 A/B Testing Strategy

Test ID Hypothesis Variant A Variant B Success Metric
AB-001 Default view affects discovery Map view default List view default Truck selections/session
AB-002 Notification timing affects orders 15 min arrival notice 10 min arrival notice Pre-order conversion
AB-003 Upsell affects order value No upsell "Add a drink?" prompt Avg order value
AB-004 Wait time display affects conversion Minutes only Minutes + queue count Order completion

11.6 Measurement Cadence

Review Frequency Participants Focus
Daily Standup Daily Product, Eng Blockers, bugs
Weekly Metrics Weekly Product, PM KPI tracking
Sprint Review Bi-weekly Team + Stakeholders Feature completion
Monthly Business Review Monthly Exec team Business impact
Quarterly OKR Review Quarterly All Strategy alignment

12. Release Planning and Prioritization

12.1 Release Strategy

┌─────────────────────────────────────────────────────────────────────────────┐
│                           RELEASE ROADMAP                                   │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ALPHA        BETA           MVP           v1.0          v1.1         v2.0 │
│  (Internal)   (50 users)     (All)         (Enhanced)    (Social)     (AI) │
│     │            │             │              │             │            │  │
│     ▼            ▼             ▼              ▼             ▼            ▼  │
│  ──────────────────────────────────────────────────────────────────────────│
│  Mar 15      Apr 1         May 1          Jun 1         Aug 1       Nov 1  │
│   2026        2026          2026           2026          2026        2026  │
│                                                                             │
│  Features:                                                                  │
│  ─────────                                                                  │
│  Alpha:    Core tracking, basic map, SSO                                   │
│  Beta:     + Menus, notifications, wait times                              │
│  MVP:      + Pre-ordering, payments (limited)                              │
│  v1.0:     + Full payments, dietary filters, favorites, order history      │
│  v1.1:     + Group orders, ratings, schedule view                          │
│  v2.0:     + Crowd density, AI recommendations, loyalty program            │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

12.2 MVP Definition

MVP Scope (May 1, 2026)

Included Excluded
Real-time truck tracking (map) Group ordering
List view of trucks Ratings and reviews
Digital menus Schedule view
Wait time estimates Crowd density
Push notifications (arrivals) Loyalty program
Pre-ordering (basic) AI recommendations
In-app payment (single method) Social features
SSO authentication
Vendor portal (basic)

MVP Success Criteria:

  • 500+ downloads in first week
  • 100+ DAU by week 2
  • < 5% crash rate
  • 4.0+ app store rating
  • Zero security incidents

12.3 MoSCoW Prioritization

Must Have (MVP)

  • F-001: Real-time truck tracking
  • F-002: Push notifications
  • F-003: Digital menu display
  • F-004: Wait time estimation
  • F-005: SSO authentication

Should Have (v1.0)

  • F-006: Mobile pre-ordering
  • F-007: In-app payment
  • F-008: Dietary filtering
  • F-009: Favorite trucks
  • F-010: Order history

Could Have (v1.1)

  • F-011: Group ordering
  • F-012: Ratings and reviews
  • F-013: Schedule view

Won't Have (This Year)

  • F-014: Crowd density
  • F-015: Loyalty program
  • F-016: AI recommendations
  • Drone delivery

12.4 Release Milestones

Milestone Date Criteria
Architecture Approved Feb 15, 2026 Sign-off from IT Security
Alpha Release Mar 15, 2026 Internal testing with 10 users
Beta Release Apr 1, 2026 50-user pilot group
MVP Launch May 1, 2026 All employees, 5+ vendors
v1.0 Launch Jun 1, 2026 Full feature set before Summer Festival
v1.1 Launch Aug 1, 2026 Social features
v2.0 Launch Nov 1, 2026 AI and advanced features

12.5 Feature Flags

Flag Purpose Default Rollout Plan
enable_preordering Toggle pre-order feature OFF 10% → 50% → 100%
enable_payments Toggle in-app payments OFF Beta only → 100%
new_map_ui Test new map design OFF A/B test 50%
show_crowd_density Crowd heat map OFF After v2.0 validation

12.6 Rollback Plan

Rollback Triggers:

  • Crash rate > 5%
  • Payment failure rate > 2%
  • Critical security vulnerability
  • Data integrity issue

Rollback Procedure:

  1. PM/Eng lead makes go/no-go decision
  2. Notify stakeholders via Slack #tacotracker-incidents
  3. Disable feature flag for affected feature
  4. If app-wide issue, force update to previous version
  5. Post-incident review within 24 hours

12.7 Beta/Pilot Strategy

Beta User Selection (50 users):

  • 15 power users (frequent food truck visitors)
  • 15 regular users (1-2x per week)
  • 10 users with dietary restrictions
  • 5 new employees
  • 5 Building C employees (distance test)

Beta Success Criteria:

  • 80% of beta users active daily
  • < 3 critical bugs reported
  • 4.0+ satisfaction score
  • Pre-order flow completion > 80%
  • Vendor feedback positive

13. Dependencies and Constraints

13.1 Technical Dependencies

Dependency Type Owner Status Risk Level
Okta SSO Authentication IT Available Low
Stripe Payment processing Finance Contract in progress Medium
Firebase Push notifications Engineering Available Low
AWS Cloud infrastructure IT Available Low
Google Maps SDK Map display Engineering License acquired Low
GPS Tracking Devices Vendor hardware Facilities Procurement needed Medium

13.2 Team Dependencies

Team Dependency Timeline
IT Security Security review and approval Before Alpha
Legal Terms of Service, Privacy Policy Before Beta
Finance Stripe contract and integration Before MVP
Facilities Vendor onboarding, GPS devices Before MVP
HR Employee communication plan Before Launch
Help Desk Support training and documentation Before Launch

13.3 External Dependencies

Vendor/Partner Dependency Risk Mitigation
Food truck operators Willingness to participate Medium Early engagement, revenue sharing
Stripe Payment processing Low Established platform
Apple/Google App store approval Low Standard compliance

13.4 Timeline Constraints

Constraint Impact Mitigation
Summer Festival (Jun 1) Hard deadline for v1.0 Aggressive MVP scope
Okta maintenance (Apr 15-16) SSO testing blocked Schedule around it
Stripe integration timeline Payment feature delayed Early start, fallback to MVP without

13.5 Resource Constraints

Resource Constraint Impact
Budget $150,000 cap Limits scope and timeline
IT Support 0.5 FTE for maintenance Simple architecture, good docs
Design Shared resource Early design lock

13.6 Assumptions

ID Assumption Risk if Wrong
A-001 Vendors will adopt GPS tracking Core feature unusable
A-002 Employees have smartphones Reduced adoption
A-003 WiFi coverage sufficient in lots GPS/app issues
A-004 Vendors can provide digital menus Manual entry required
A-005 Stripe integration straightforward Timeline slip

14. Risk Assessment

14.1 Product Risks

Risk Likelihood Impact Score Mitigation
Low user adoption Medium High High Incentives, gamification, executive support
Vendors decline participation Medium High High Revenue sharing, minimal burden, early engagement
Poor GPS accuracy Low High Medium Manual check-in fallback, WiFi positioning
Payment friction Medium Medium Medium Multiple payment options, cash fallback
App store rejection Low Medium Low Standard compliance review

14.2 User Risks

Risk Likelihood Impact Mitigation
Privacy concerns ("tracking me") Medium Medium Clear privacy policy, no individual tracking
Allergy misinfo leads to reaction Low Critical Vendor verification, disclaimers, user responsibility
Frustration from tech issues Medium Medium Thorough testing, responsive support

14.3 Technical Risks

Risk Likelihood Impact Mitigation
Performance at peak load Medium High Load testing, auto-scaling
Third-party API changes Low Medium Version pinning, abstraction layer
Security vulnerability Low Critical Security review, pen testing

14.4 Risk Matrix

                            IMPACT
                    Low     Medium    High
                  ┌───────┬─────────┬─────────┐
            High  │       │         │ Vendor  │
                  │       │         │ Adoption│
     LIKELIHOOD   ├───────┼─────────┼─────────┤
            Med   │       │ Payment │ User    │
                  │       │ Privacy │ Adoption│
                  ├───────┼─────────┼─────────┤
            Low   │ App   │ API     │ GPS     │
                  │ Store │ Changes │ Security│
                  └───────┴─────────┴─────────┘

14.5 Contingency Plans

Scenario Contingency
< 30% adoption at 60 days Extend incentive program, mandatory demo, ambassador program
Taco Tornado declines Negotiate exclusivity, escalate to sponsor
Launch deadline at risk MVP-only scope, add contractors
Payment integration delayed Launch without payments, cash/card at truck

15. Go-to-Market Considerations

15.1 Launch Strategy

Phase 1: Teaser (T-4 weeks)

  • "Something delicious is coming" campaign
  • Countdown in weekly newsletter
  • Mysterious taco emoji posts in Slack

Phase 2: Reveal (T-2 weeks)

  • Executive sponsor video announcement
  • Feature preview in all-hands meeting
  • Beta user testimonials

Phase 3: Launch (T-0)

  • "Download Day" with on-site support tables
  • First 500 users get free taco coupon
  • Vendor promotions: "10% off for app orders"

Phase 4: Momentum (T+1 to T+4 weeks)

  • Weekly feature highlights
  • User success stories
  • "Taco Champion" leaderboard

15.2 Messaging and Positioning

Tagline: "Never miss a taco again."

Key Messages:

  1. For Power Users: "Pre-order and skip the line"
  2. For Cautious Users: "Know exactly what's safe for you"
  3. For New Employees: "Discover the food truck culture"
  4. For Everyone: "Real-time tracking, real-time tacos"

15.3 Training Requirements

Audience Training Format Duration
Employees In-app onboarding Interactive tutorial < 60 seconds
Vendors Portal training Virtual session + guide 30 minutes
Help Desk Support training In-person + runbook 1 hour
Champions Power user training Virtual session 30 minutes

15.4 Support Readiness

Channel Availability Response Time
In-app FAQ 24/7 Immediate
Help Desk Business hours < 4 hours
Slack #tacotracker-help Business hours < 2 hours
Email 24/7 < 24 hours

15.5 Success Criteria for Launch

Criteria Target Measurement
Downloads in week 1 500+ App store analytics
DAU in week 2 100+ Product analytics
Pre-orders in week 1 50+ Order database
App store rating 4.0+ App store
Critical bugs < 5 Bug tracker
Help desk tickets < 50 Zendesk

16. Appendices

Appendix A: Glossary

Term Definition
DAU Daily Active Users
GPS Global Positioning System
MVP Minimum Viable Product
Pre-order Order placed via app before arriving at truck
Walk-up Traditional in-person ordering at truck
Queue depth Number of orders awaiting fulfillment
SSO Single Sign-On
WCAG Web Content Accessibility Guidelines

Appendix B: Competitive Analysis

Feature TacoTracker StreetFoodFinder Slack Channel
Real-time GPS
Corporate SSO
Pre-ordering
In-app payment
Wait time estimates
Dietary filtering Partial
Push notifications
Vendor portal

Appendix C: User Research Artifacts

Survey Results (n=487):

  • 72%: "Knowing where trucks are" is #1 need
  • 81%: Would use pre-ordering if available
  • 34%: Have dietary restrictions
  • 23%: Have avoided trucks due to cash-only
  • 89%: Own smartphone (iOS: 61%, Android: 28%)

Interview Themes (n=15):

  1. Time is the primary constraint
  2. Uncertainty is the primary frustration
  3. Community is an unexpected benefit
  4. Variety is valued over consistency
  5. Trust is essential for dietary concerns

Appendix D: Technical Specifications Reference

  • BRD: /docs/TacoTracker-BRD-v1.0.md
  • Architecture: /docs/TacoTracker-ARCH-v1.0.md
  • UI/UX Guide: /docs/TacoTracker-UI-UX-v1.0.md
  • API Specification: /docs/TacoTracker-API-v1.0.yaml

Appendix E: Change Log

Version Date Author Changes
1.0 Jan 22, 2026 Product Team Initial release
0.9 Jan 15, 2026 Product Team Stakeholder review feedback
0.5 Jan 8, 2026 Product Team First draft

Document Approval

Role Name Signature Date
Executive Sponsor Patricia Vaughn _________________ ________
Product Owner Marcus Chen _________________ ________
Engineering Lead [TBD] _________________ ________
Design Lead [TBD] _________________ ________
QA Lead [TBD] _________________ ________

Document Control:

  • Location: SharePoint > Projects > TacoTracker 3000 > Documentation
  • Review Cycle: Bi-weekly during development
  • Distribution: Product team, Engineering, Design, QA, Stakeholders

"Because no one should have to wonder where the tacos are." — TacoTracker 3000 Product Team