> For the complete documentation index, see [llms.txt](https://t420.gitbook.io/t420/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://t420.gitbook.io/t420/features.md).

# FleetOS Feature Specification

**Status:** Living Document **Last Updated:** January 2026 **Related:** [FLEETOS\_ROUTING\_ACCESS\_BIBLE.md](https://github.com/ZBO19/FleetOS/blob/main/FLEETOS_ROUTING_ACCESS_BIBLE.md) (Core Principles)

***

## Purpose

This document defines FleetOS features with acceptance criteria. No feature ships without criteria defined here.

**Tagline:** FROM CHAOS TO COMPLIANCE

***

## 1. Landing Page

### 1.1 Daily Access Flow

**User Story:** As a tired operator in an emergency, I can go to fleetos.us and immediately see today's work without knowing who was invited or logged in.

**Flow:**

1. User visits fleetos.us
2. Clicks "View Today's Work"
3. Enters work email or phone
4. Receives magic link (email/SMS)
5. Clicks link → sees all open TODOs for their org

**Acceptance Criteria:**

* [ ] No login/password required
* [ ] Magic link delivered in <30 seconds
* [ ] Link expires after 24 hours
* [ ] Link is org-scoped (sees all org TODOs)
* [ ] Works on mobile (field operators)

**Status:** PARTIAL - Landing exists, magic link flow needs verification

***

### 1.2 Hero Section

**Requirements:**

* [ ] "FROM CHAOS TO COMPLIANCE" headline (Orbitron font)
* [ ] Subtext explaining value prop
* [ ] Primary CTA: "View Today's Work"
* [ ] Secondary CTA: "Become a Supplier" (links to robo-hub)
* [ ] Background: #0f172a with green (#22c55e) accents

**Status:** COMPLETE

***

## 2. Request Inbox

### 2.1 Unified Inbox

**User Story:** As a supplier, I can see all incoming requests from all fleets in one place, regardless of how they arrived (WhatsApp, email, web form).

**Acceptance Criteria:**

* [ ] Shows requests from all channels (WhatsApp, email, web)
* [ ] Each request shows: Fleet name, urgency, vehicle info, service type
* [ ] Sorted by urgency (URGENT → TODAY → SCHEDULED)
* [ ] Real-time updates when new requests arrive
* [ ] Filter by: urgency, fleet, status, date

**Status:** PARTIAL - Dashboard exists, channel unification in progress

***

### 2.2 Traffic Light Urgency System

**User Story:** As a supplier, I can instantly see which requests need immediate attention via color-coded urgency.

**Urgency Levels:**

| Level     | Color            | Label | Meaning                             |
| --------- | ---------------- | ----- | ----------------------------------- |
| URGENT    | Red (#ef4444)    | NOW   | Drop everything, handle immediately |
| TODAY     | Yellow (#eab308) | 2PM   | Must be handled today               |
| SCHEDULED | Green (#22c55e)  | TMR+  | Scheduled for future date           |

**Acceptance Criteria:**

* [ ] Urgency badge visible on every request
* [ ] Color coding consistent across all views
* [ ] Urgency can be set by fleet when creating request
* [ ] Urgency can be escalated (SCHEDULED → TODAY → URGENT)
* [ ] Escalation triggers notification to supplier

**Status:** COMPLETE - UI implemented, escalation logic needs verification

***

### 2.3 Request Acknowledgment

**User Story:** As a supplier, I can acknowledge a request to let the fleet know I've seen it.

**Flow:**

1. Supplier opens request
2. Clicks "Acknowledge"
3. Fleet receives notification: "{Supplier} acknowledged your request"
4. Request status changes: `new → acknowledged`

**Acceptance Criteria:**

* [ ] One-click acknowledgment
* [ ] Timestamp recorded
* [ ] Fleet notified (their preferred channel)
* [ ] Acknowledgment logged in audit trail
* [ ] Target: <4 hour median ack time

**Status:** PARTIAL - UI exists, notification to fleet needs implementation

***

## 3. Jobs Dashboard

### 3.1 Supplier View

**User Story:** As a supplier, I can manage all my jobs across all fleets in one dashboard.

**Columns/Sections:**

* **New** - Unacknowledged requests
* **In Progress** - Active jobs
* **Completed** - Finished jobs (last 30 days)
* **Declined** - Jobs I couldn't take

**Acceptance Criteria:**

* [ ] Kanban-style board with drag-drop
* [ ] Each job card shows: Fleet, vehicle, service, urgency, due date
* [ ] Click card → expands to full details
* [ ] Status changes logged with timestamp
* [ ] Export to CSV for invoicing

**Status:** COMPLETE - UnifiedDashboard.tsx implements this

***

### 3.2 Fleet View

**User Story:** As a fleet operator, I can see status of all my service requests across all suppliers.

**Requirements:**

* [ ] All requests with current status
* [ ] Which supplier is handling each
* [ ] ETA for completion
* [ ] Cost estimates (if provided)
* [ ] Compliance status (documentation complete?)

**Status:** PARTIAL - Basic view exists, compliance tracking not implemented

***

## 4. WhatsApp Integration

### 4.1 Inbound Requests via WhatsApp

**User Story:** As a fleet operator, I can send a service request via WhatsApp and it appears in FleetOS.

**Flow:**

1. Fleet sends WhatsApp message to FleetOS number
2. Message parsed for: vehicle info, service needed, urgency
3. TODO created in FleetOS
4. Routed to appropriate supplier org
5. Supplier notified

**Acceptance Criteria:**

* [ ] Twilio WhatsApp Business integration
* [ ] AI parsing of natural language requests
* [ ] Confirmation sent back to fleet
* [ ] Request appears in supplier inbox within 60 seconds
* [ ] Attachments (photos) supported

**Status:** IN PROGRESS - Twilio setup complete, parsing needs refinement

***

### 4.2 Outbound Notifications via WhatsApp

**User Story:** As a supplier, I can receive notifications on WhatsApp when new urgent requests arrive.

**Acceptance Criteria:**

* [ ] Opt-in per user/org
* [ ] Only URGENT requests trigger WhatsApp
* [ ] Message includes: Fleet, vehicle, service type
* [ ] Deep link to FleetOS included
* [ ] Unsubscribe option

**Status:** NOT STARTED

***

## 5. Compliance Engine

### 5.1 Audit Trail

**User Story:** As a fleet compliance officer, I can see a complete audit trail of every service request and action taken.

**Logged Events:**

* Request created (who, when, channel)
* Request acknowledged (who, when)
* Status changes (who, when, from/to)
* Notes added
* Completion confirmed
* Documents uploaded

**Acceptance Criteria:**

* [ ] Immutable log (no edits, only appends)
* [ ] Timestamp with timezone
* [ ] Actor identified (even if anonymous via magic link)
* [ ] Exportable for audits
* [ ] Searchable by date range, fleet, supplier

**Status:** PARTIAL - EventLog exists, export/search not implemented

***

### 5.2 Documentation Tracking

**User Story:** As a fleet, I need proof that services were completed properly (photos, signatures, invoices).

**Required Documents per Job:**

* [ ] Before photo (optional)
* [ ] After photo (required for completion)
* [ ] Digital signature (optional)
* [ ] Invoice/receipt

**Acceptance Criteria:**

* [ ] Job cannot be marked complete without required docs
* [ ] Documents stored securely (Supabase Storage)
* [ ] Documents linked to job audit trail
* [ ] Bulk export for compliance reporting

**Status:** NOT STARTED

***

## 6. Magic Links

### 6.1 Org-Level Magic Links

**User Story:** As an org member, I can request a magic link that gives me access to all my org's TODOs.

**Acceptance Criteria:**

* [ ] Generated on demand from landing page
* [ ] Sent to verified org email/phone
* [ ] Expires in 24 hours
* [ ] Revocable by org admin
* [ ] Scoped to org (cannot access other orgs)

**Status:** PARTIAL - Generation exists, revocation not implemented

***

### 6.2 RFQ-Scoped Magic Links

**User Story:** As a fleet, I can share a link to a specific request that only shows that request.

**Acceptance Criteria:**

* [ ] Narrower scope than org-level
* [ ] Can be shared with external parties
* [ ] Read-only or action-enabled (configurable)
* [ ] Expires in 7 days (or custom)
* [ ] Access logged

**Status:** NOT STARTED

***

## Feature Status Summary

| Feature                   | Status      | Priority |
| ------------------------- | ----------- | -------- |
| Landing Page              | COMPLETE    | -        |
| Traffic Light Urgency     | COMPLETE    | -        |
| Jobs Dashboard (Supplier) | COMPLETE    | -        |
| Request Acknowledgment    | PARTIAL     | HIGH     |
| WhatsApp Inbound          | IN PROGRESS | HIGH     |
| Magic Link Generation     | PARTIAL     | HIGH     |
| Fleet Dashboard           | PARTIAL     | MEDIUM   |
| Audit Trail               | PARTIAL     | MEDIUM   |
| WhatsApp Outbound         | NOT STARTED | MEDIUM   |
| Documentation Tracking    | NOT STARTED | MEDIUM   |
| RFQ-Scoped Links          | NOT STARTED | LOW      |

***

**End of FleetOS Feature Spec**


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://t420.gitbook.io/t420/features.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
