A copy of the PRD, updated November 9, 2026 to match the decisions log through decision 105 (November 5). It is the written spec behind the demo; see the design decisions and the heuristic evaluation for what changed since.

VIP Photographer App Product Requirements Draft

Visual Image Photography (VIP) — Photographer Mobile App

Author: Alan Porterfield — drafted with Claude
Status: Draft v1
Last updated: November 9, 2026

Show change historyupdated November 9 to match decisions 87 to 105: the QR code is an inline card on the Details tab, not a separate action (91; 8.3, 8.7); Account is restructured into Profile, App settings (Notifications, Appearance, Show assignment icons) and Sign out, with each Profile row a pushed screen, phone and email changes confirmed first, and show and hide password on every password field (93, 94, 97, 98; 8.15); the Timesheet sheet and Timesheets entries are read-only with one Edit button and an Edit form (102, 103; 8.5, 8.6); no Start now or Wait dialog after Arrived (105; 8.4). Also in the decisions log, not yet written into this PRD: Time Off detail header and title-bar dates (87, 88), assignment type glyphs (89), header spacing (90), phone number entry and the disabled-button pattern for short forms (100, 101) and Details people rows (104); earlier updated: Report an issue is a single-line action sheet and the Time period selector is an anchored menu; the Paid period selector defaults to the Current pay period and offers Current pay period, Previous pay period, Last month, Year to date, Last year and a date range; Last 7 days and Last 30 days were removed (8.6); earlier October 11: distance edits also require a reason, typed in a free-form text field, for every trip; timesheets with edits are flagged for payroll review; Start Travel and Submit Timesheet are separate actions (8.4, 9); the distance comes from a distance-only API with a manual fallback; editing travel time requires a reason, and the scheduler sees both the system-recorded and the photographer-entered values (8.4); Start Travel opens a confirmation sheet (start address editable, defaulting to home or the current assignment; assignment address and approximate miles read-only; no drive-time estimate); Arrived opens a Travel log sheet (time rounded up to the next 15 minutes and miles, both editable, Save log information); Start Travel is also a secondary action while photos upload; the same flow applies to travel after an assignment, and a new Skip upload for now action lets a photographer go to their next Start Travel without uploading (8.3, 8.4, 8.5, 11, 13); earlier October 8: Timesheets scroll behavior matches Schedule: the large title collapses and the Open / Approved / Paid control pins under the navigation bar (8.6); Schedule scroll behavior: the large title collapses to an inline title and the Upcoming / Past 5 days control pins under the navigation bar (8.2); Report issue now opens an action sheet with Call scheduler, Call account coordinator and Equipment issue, shown to every photographer, and every Call tap is logged; Equipment issue is an in-app report with a form (equipment type, description, up to 4 photos, 20 MB in total, chosen with the system photo picker) that notifies the equipment coordinator, shows a "Report sent" confirmation and can be queued when there is no connection (8.9); Add note no longer has issue tags (8.10); "Account representative" is now "Account manager"; Time Off tab now has a Cancelled group and a Pending detail with Withdraw request; an approved request, single day or multi-day, is cancelled whole through one Cancel Time Off action sheet, with no partial-day or time-band cancel (8.13); dates on detail screens use a short month, for example "Wednesday, Oct 14" (8.3); Time Off detail screen and cancel / withdraw rules (8.13); Assignment Details toolbar now uses up and down chevrons to move through the Past 5 days and Upcoming entries, including approved Time Off and skipping days with no assignments (8.3); Schedule line items show the time as the title with the assignment type below (8.2); earlier October 5 changes: the journey ends with End Assignment (no travel-home buttons): after End Assignment the primary is Upload Photos, then Submit Timesheet, and travel after the assignment is entered in the Timesheet sheet; "Tolls and receipts" replaced by "Timesheet" (time, distance, tolls and receipts in one sheet) and the timesheet no longer waits for photo upload; "Drive" renamed to "Travel" throughout so the same buttons work when the photographer goes home or to another assignment; "Past 5 days" segment shows a dot only when there are incomplete assignments (photos not uploaded or timesheet not submitted); Past 5 days list and segmented control, upload status bar only, "In progress" row indicator, combined End Assignment/Start Travel (after assignment), tolls from the travel to the assignment, push upload reminder rule, QR code in every status for Sports, leave-by note as a v2 placeholder, placeholder Central-time scheduler number

Platforms: iOS and Android (native or cross-platform, TBD — see Open Questions)


1. Overview

VIP employs field and lead photographers to cover photography assignments (sports portraits, school portraits, and similar jobs) on behalf of client organizations. Today, assignment dispatch, time tracking, mileage/toll capture, and issue reporting happen through disconnected or manual channels, which creates payroll errors, slow reassignment when a photographer can't make an assignment, and no single source of truth for an assignment's status.

This PRD defines a mobile app that gives invite-only, MFA-authenticated photographers a weekly schedule of their assigned assignments, lets them run the full lifecycle of an assignment (travel to → arrive → shoot → end assignment → upload photos and submit the timesheet), captures the data needed to calculate what they're owed, lets them upload assignment photos from a memory card via an SDK-connected adapter, and gives them fast paths to report problems or hand off an assignment.

2. Problem Statement

Photographers currently have no single mobile tool that tells them where to be, tracks the time and mileage they're owed for, and lets them flag a problem before it becomes a problem. Schedulers and payroll, in turn, lack a reliable, time-stamped record of travel time, assignment time, tolls, and parking costs, which slows down timesheet approval and creates disputes. When equipment fails or a photographer runs into a problem on-site, there's no fast, mobile-first way to get it to the right person. Problems that need a person (running late, a no-show, a client issue, not being able to attend) are handled by phone, so the app puts the right number one tap away and logs the call; equipment failures are reported in the app so the equipment coordinator can follow up (see 8.9).

3. Goals

  1. Single source of truth for photography assignments — photographers can see every assignment assigned to them for the week ahead, with the status of each, without calling or emailing a scheduler.
  2. Accurate, self-service time & expense capture — assignment time, travel time, mileage, tolls, and parking receipts are captured directly by the photographer in the field, timestamped, and flow into a timesheet without manual re-entry.
  3. Faster reassignment when plans change — a photographer who is running late, cannot attend, or has a problem reaches the right person (scheduler, account coordinator or equipment coordinator) in one or two taps from the assignment, cutting the resolution time for at-risk assignments.
  4. Faster turnaround from shoot to delivery — photo upload via the SDK chip adapter moves an assignment from Processing to Uploaded without the photographer needing a separate workflow or desktop step.
  5. Controlled flexibility — photographers who are authorized to offer their assignments to others can do so without waiting on a scheduler to manually reassign, while schedulers retain control over who has that permission.

4. Non-Goals (v1)

5. Personas

6. Assignment Status Lifecycle

Status Visible to a photographer? Meaning
Draft No (scheduler-only) Assignment created but not yet finalized/assigned
Scheduled Yes Assigned to a photographer, upcoming
Active Yes Photographer has started the journey (traveling to → arrived → shooting → assignment ended — see 8.4) and has not yet submitted the timesheet
Processing Yes Journey complete and timesheet submitted; photos not yet confirmed uploaded
Uploaded Yes Journey complete and photos confirmed uploaded via SDK chip adapter
Completed Yes Assignment fully closed out (e.g., timesheet approved)
Cancelled Yes Assignment will not occur / was called off

Notes:

7. User Stories

As a Field Photographer

As a Lead Photographer (in addition to the above)

As a lead photographer, I want to append notes to this assignment so schedulers and account managers have the most current information without needing to call me. This information should also allow for photos to be added and reused for future assignments at the location.

As a Scheduler / Account Manager / Coordinator (consumers, not app users)

8. Functional Requirements

Prioritized using MoSCoW:

8.1 Authentication & Access — P0

8.2 Weekly Schedule View — P0

8.3 Assignment Details Screen — P0

Actions by journey step

Step Primary button Secondary actions
Scheduled, before the assignment day None Can't attend; Report issue; Offer assignment (if permitted, P2); Add note (lead)
Scheduled, from midnight on the assignment day Start Travel (opens the Start travel sheet), with a leave-by note Can't attend; Report issue; Add note (lead)
Traveling to the assignment Arrived (opens the Travel log sheet) Can't attend; Report issue; Timesheet; Add note (lead)
Arrived Start Assignment Can't attend; Report issue; Timesheet; Add note (lead)
Assignment in progress End Assignment Report issue; Timesheet; Add note (lead)
Assignment ended, photos not uploaded Upload Photos (with reminder) Skip upload for now; Timesheet; Add note (lead)
Upload skipped, photos still to upload Start Travel (to the next assignment or home) Upload Photos; Timesheet; Add note (lead)
Traveling after the assignment Arrived Upload Photos; Timesheet; Add note (lead)
Uploading None (Upload Photos shows progress and is disabled) Start Travel (to the next assignment or home); Timesheet; Add note (lead)
Traveling while uploading Arrived (the upload continues) Timesheet; Add note (lead)
Upload failed (interrupted or error) Upload again (with a failure notice) Timesheet; Add note (lead)
Photos uploaded, timesheet not submitted Submit Timesheet (opens the Timesheet sheet) Add note (lead)
Processing (timesheet submitted, photos not uploaded) Upload Photos (with reminder) Timesheet (view); Add note (lead)
Uploaded None (earnings shown as pending) Add note (lead)
Completed None (final earnings) None
Cancelled None (read-only) None

8.4 Assignment Time & Travel Tracking — P0

8.5 Timesheet (Time, Distance, Tolls & Parking Receipts) — P0

8.6 Earnings Calculation & Timesheet — P0

8.7 QR Code for Tablet Handoff (Sports assignments) — P1

8.8 Photo Upload via SDK Chip Adapter — P0

8.9 Issue Reporting & Can't Attend — P0

Report issue

Equipment issue form

Call logging

Can't attend (call the scheduler)

8.10 Lead Photographer Notes — P1

8.11 Notifications — P1

8.12 Offer Assignment — P2

8.13 Time-Off Requests — P1

8.15 Account — P2

8.14 Upload Status Bar — P2

9. Key Data Captured Per Assignment

10. Success Metrics

Leading indicators (days–weeks post-launch):

Lagging indicators (weeks–months post-launch):

(Specific numeric targets to be set once baseline data from current manual processes is available — see Open Questions.)

11. Open Questions

12. Timeline Considerations

13. Future Milestones

↑ Top