# **M4 Milestone Planning**

## **BE**

### Validate shift acceptance by a worker

- **Goal**: Prevent workers from accepting shifts they are not eligible to accept.
- **Where**: Backend validation (server-side).
- **Key rules (M4)**
  - Prevent accepting overlapping shifts.
  - If a shift is already accepted in that time window, reject the accept action.
- **Design requirement**
  - Make the algorithm scalable so future shift-acceptance rules can be added without rewriting core logic.
- **Acceptance criteria**
  - Backend rejects overlapping acceptance with a clear error reason.
  - Validation is enforced even if the client app is bypassed.

### Validate shift creation by a client

- **Goal**: Ensure shifts/orders created by clients meet required criteria.
- **Where**: Backend validation (server-side).
- **Key rules (M4)**
  - Add a *soft check* for minimum shift hours when creating an order.
  - When a client creates an order, check if shift hours are below the vendor minimum.
  - Current minimum hours: **5 hours**.
- **FE dependency**
  - Also add a FE validation (user feedback) in addition to BE enforcement.
- **Design requirement**
  - Make the algorithm scalable so future creation rules can be added.
- **Acceptance criteria**
  - Backend returns a consistent validation response when the minimum-hours check fails.
  - FE shows a clear validation message before submission (soft check).

### Enforce cancellation policy (no cancellations within 24 hours)

- **Goal**: Prevent cancellations within 24 hours of shift start time.
- **Where**: Backend enforcement.
- **Open decision**
  - Finalize the penalty for cancellations within this window.
- **Acceptance criteria**
  - Backend blocks cancellation attempts inside the 24-hour window.
  - API response communicates the policy reason and references the penalty (once finalized).

### Implement worker documentation upload process

- **Goal**: Allow workers to upload required documents (e.g., certifications, tax forms) securely.
- **Where**: Backend (storage + linking).
- **Scope**
  - Upload flow.
  - Store documents.
  - Link documents to the worker profile.
- **Acceptance criteria**
  - Uploaded documents are stored securely and retrievable by authorized parties.
  - Each upload is reliably associated with the correct worker profile.

### Parse uploaded documentation for verification

- **Goal**: Extract relevant info from uploaded documents to assist verification.
- **Where**: Backend.
- **Policy requirement**
  - Manual verification by the client must still exist even if AI verification passes.
- **Acceptance criteria**
  - Parsed fields are stored in a structured format for review.
  - Client can manually verify/override AI results.

### Support attire upload for workers

- **Goal**: Allow workers to upload attire images for verification.
- **Where**: Backend.
- **Acceptance criteria**
  - Attire images can be uploaded and linked to the worker profile.

### Verify attire images against shift dress code

- **Goal**: Verify uploaded attire meets dress code requirements.
- **Where**: Backend.
- **Policy requirement**
  - Manual verification by the client must still exist even if AI verification passes.
- **Acceptance criteria**
  - Verification results are stored and visible to the client for manual review.

### Support shifts requiring "awaiting confirmation" status

- **Goal**: Support shifts where the worker must manually confirm before the shift becomes active.
- **Where**: Backend.
- **Acceptance criteria**
  - Shift can enter an "awaiting confirmation" state.
  - Worker confirmation transitions the shift to the next expected active state.

### Enable NFC-based clock-in and clock-out

- **Goal**: Allow attendance via NFC.
- **Where**: Backend tasks (APIs/events/storage to support NFC clock-in/out).
- **Acceptance criteria**
  - Backend can record NFC clock-in/out events with appropriate validation and auditing.

### Implement worker profile visibility settings

- **Goal**: Allow workers to hide their profile from clients if they choose.
- **Where**: Backend tasks (visibility settings + enforcement).
- **Acceptance criteria**
  - Worker can change visibility setting.
  - Backend enforces visibility in client-facing queries.

### Support rapid order parsing (voice and text) using AI

- **Goal**: Let clients create orders by describing needs in voice/text.
- **Where**: Backend tasks (parsing + mapping).
- **Notes**
  - Always map the output similar to **one-time order creation**.
- **Acceptance criteria**
  - Backend returns a structured draft order that matches the one-time order model.

### Personalize shifts shown to workers (auto match)

- **Goal**: Show worker-personalized shifts.
- **Where**: Backend matching/filtering logic.
- **Inputs (M4)**
  - Preferred locations.
  - Experience.
- **Acceptance criteria**
  - Worker shift feed is personalized based on these inputs.

### What backend work is needed to support recurring order and reorder?

- **Goal**: Enable recurring orders and reorder.
- **Where**: Backend.
- **Acceptance criteria**
  - Backend can create and manage recurring orders and support reorder actions.

### What backend work is needed to support permanent order and reorder?

- **Goal**: Enable permanent orders and reorder.
- **Where**: Backend.
- **Acceptance criteria**
  - Backend can create and manage permanent orders and support reorder actions.

### Backend support for reports page (client mobile)

- **Goal**: Provide APIs/data needed to render the main reports entry and summary experience.
- **Where**: Backend.
- **Acceptance criteria**
  - Reports API contracts are defined and documented.
  - Client can load the reports page without placeholder data.

### Backend support for "Daily ops" report (client mobile)

- **Goal**: Provide the data required for the Daily ops report.
- **Where**: Backend.
- **Acceptance criteria**
  - Daily ops report API returns all fields required by the UI.
  - Response is documented (including filters/date ranges, if applicable).

### Backend support for "Spend report" (client mobile)

- **Goal**: Provide the data required for the Spend report.
- **Where**: Backend.
- **Acceptance criteria**
  - Spend report API returns all fields required by the UI.
  - Response is documented (including filters/date ranges, if applicable).

### Backend support for "Coverage report" (client mobile)

- **Goal**: Provide the data required for the Coverage report.
- **Where**: Backend.
- **Acceptance criteria**
  - Coverage report API returns all fields required by the UI.
  - Response is documented (including filters/date ranges, if applicable).

### Backend support for "No-show" report (client mobile)

- **Goal**: Provide the data required for the No-show report.
- **Where**: Backend.
- **Acceptance criteria**
  - No-show report API returns all fields required by the UI.
  - Response is documented (including filters/date ranges, if applicable).

### Backend support for "Performance report" (client mobile)

- **Goal**: Provide the data required for the Performance report.
- **Where**: Backend.
- **Acceptance criteria**
  - Performance report API returns all fields required by the UI.
  - Response is documented (including filters/date ranges, if applicable).

### Calculate the 3 AI insights for the client mobile reports page

- **Goal**: Produce the three AI insights shown on the reports page.
- **Where**: Backend.
- **Acceptance criteria**
  - Insights are generated consistently and returned in the reports API response.

## **FE**

### **Staff mobile application**

### Show Google Maps location in worker shift details

- **Goal**: Display shift location on a map.
- **Acceptance criteria**
  - Shift details page shows the correct location using Google Maps.

### Show shift requirements in worker shift details

- **Goal**: Make requirements visible before acceptance.
- **Acceptance criteria**
  - Shift details page includes a requirements section for that shift.
- **Details**
  - The main goal is to have list the the required attires in the requirement section but if there are any other requirements we can also list them there.

### Implement attire screen in worker app

- **Goal**: Let workers understand attire requirements and submit attire for review.
- **Scope (M4)**
  - Show the list of **MUST HAVE** attire items.
  - Show the list of **NICE TO HAVE** attire items.
  - Allow workers to upload images of their attire for verification.
  - Show uploaded attire images in the worker profile.
- **Acceptance criteria**
  - Attire screen renders required lists and supports image upload flow.
  - Uploaded images appear in the worker profile UI.

### Implement FAQ screen in worker app

- **Goal**: Provide common answers in-app.
- **Acceptance criteria**
  - Worker app includes an FAQ screen accessible from appropriate navigation.

### Implement Privacy and Security screen in worker app

- **Goal**: Provide key privacy/security controls and documents.
- **Scope (M4)**
  - Profile visibility setting.
  - Terms of service (use a generated placeholder for now; replace with final for launch).
  - Privacy policy (use a generated placeholder for now; replace with final for launch).
- **Acceptance criteria**
  - Screen is accessible and displays all items above.

### Restrict navigation when worker profile is incomplete

- **Goal**: Reduce access until onboarding/profile completion.
- **Acceptance criteria**
  - If the user has not completed their profile, only show **Profile** and **Home**.

### **Client mobile application**

### Implement rapid order creation (voice + text) in client mobile app

- **Goal**: Allow clients to quickly create same-day orders by describing needs via voice/text.
- **Scope (M4)**
  - Capture voice/text input.
  - Send input for parsing.
  - Populate a screen equivalent to the one-time order creation screen so the client can adjust before finalizing.
  - Always map similar to one-time order creation (handles same-day orders).
- **Acceptance criteria**
  - Parsed output populates the one-time order creation UI correctly.
  - Client can edit and successfully submit the order.

### Implement recurring order in client mobile app

- **Goal**: Allow clients to create recurring orders.
- **Scope (M4)**
  - Create a recurring order UI flow.
- **Acceptance criteria**
  - Client can create and submit a recurring order successfully.

### Implement permanent order in client mobile app

- **Goal**: Allow clients to create permanent orders.
- **Scope (M4)**
  - Create a permanent order UI flow.
- **Acceptance criteria**
  - Client can create and submit a permanent order successfully.

### Update reorder modal to support order types

- **Goal**: Ensure reorder works across supported order types.
- **Acceptance criteria**
  - Reorder modal reflects the correct order type and fields.

### Complete reports interface with AI insights (client mobile)

- **Goal**: Implement the main reports UI and display AI insights.
- **Dependencies**
  - Requires backend reports APIs and AI insights availability.
- **Acceptance criteria**
  - Reports interface is complete and shows AI insights (no placeholder UI).

### Complete "Daily ops" report UI (client mobile)

- **Goal**: Implement the Daily ops report screen.
- **Dependencies**
  - Requires backend Daily ops report support.
- **Acceptance criteria**
  - Daily ops report UI is complete and renders real data.

### Complete "Spend report" UI (client mobile)

- **Goal**: Implement the Spend report screen.
- **Dependencies**
  - Requires backend Spend report support.
- **Acceptance criteria**
  - Spend report UI is complete and renders real data.

### Complete "Coverage report" UI (client mobile)

- **Goal**: Implement the Coverage report screen.
- **Dependencies**
  - Requires backend Coverage report support.
- **Acceptance criteria**
  - Coverage report UI is complete and renders real data.

### Complete "No-show" report UI (client mobile)

- **Goal**: Implement the No-show report screen.
- **Dependencies**
  - Requires backend No-show report support.
- **Acceptance criteria**
  - No-show report UI is complete and renders real data.

### Complete "Performance report" UI (client mobile)

- **Goal**: Implement the Performance report screen.
- **Dependencies**
  - Requires backend Performance report support.
- **Acceptance criteria**
  - Performance report UI is complete and renders real data.

### Build dedicated interface to display hub details

- **Goal**: Show hub details in a dedicated UI.
- **Acceptance criteria**
  - Hub details page exists and displays hub information.

### Enable hub editing (separate page)

- **Goal**: Allow hub editing via a dedicated screen.
- **Acceptance criteria**
  - Separate edit hub page exists and updates the hub data.

# **Research Tasks**

### Validate worker SSN number in the US

- **Goal**: Identify a viable SSN validation approach.
- **Scope (research)**
  - Research third-party services/APIs that provide SSN validation.
  - Evaluate cost, reliability, and integration effort.
  - Outline an integration plan and highlight risks.

### Validate worker bank account details in the US

- **Goal**: Identify a viable bank account validation approach.
- **Scope (research)**
  - Research third-party services/APIs for bank account validation.
  - Evaluate cost, reliability, and integration effort.
  - Outline an integration plan and highlight risks.
  - Note: legacy app only uses soft FE checks; M4 aims for a proper validation process.

### What payment platforms do we want to integrate for processing payments to workers?

- **Goal**: Select a payout/payment platform.
- **Scope (research)**
  - Research platforms (e.g., Stripe, PayPal, Square) that support payouts.
  - Evaluate cost, reliability, and integration effort.
  - Outline an integration plan and highlight risks.

### Implement test cases for 2 web dashboard features using agent-browser

- **Goal**: Add automated test coverage runnable via <https://agent-browser.dev/>.
- **Scope (research + spike)**
  - Research how to implement test cases for web apps using the agent browser.

# **Business Tasks**

### Create template model for PDF reports in client and web apps

- **Goal**: Align report format across platforms.
- **Acceptance criteria**
  - A shared template model is defined and ready to implement.

### Handle operational risk scenarios that disadvantage clients

- **Goal**: Define policies for common operational issues.
- **Scenarios (M4)**
  - Worker is a no-show.
  - Shifts are not getting enough applicants.
- **Acceptance criteria**
  - Written policy decisions exist and are ready to translate into product rules.

### Finalize terms of service and privacy policy for mobile apps

- **Goal**: Provide legal documents for launch readiness.
- **Acceptance criteria**
  - Terms of service and privacy policy drafts exist and are approved for implementation.

### Handle worker data requests

- **Goal**: Define a process for worker data requests.
- **Acceptance criteria**
  - A documented workflow exists (intake, verification, fulfillment, timelines).

### How should we rephrase key terminology in the app (for clarity and accuracy)?

- **Goal**: Use consistent product language.
- **Topics (M4)**
  - Worker registration: is it "signup" or "onboarding"?
    - Context: workers are expected to be attached to a vendor; the flow is closer to onboarding (phone number + OTP) than self-service signup.
  - Worker profile visibility: is it "profile visibility" or "availability status"?
    - Context: workers are not fully invisible; they are marking themselves unavailable.
 - What do we mean by "auto match"?
    - Should this exist by default anyway?
    - Is this only a marketing item?
 - These are just examples; the discussion may surface additional terminology decisions.
- **Acceptance criteria**
  - A terminology decision list exists with approved wording.

