# Sarva Foam ERP — Modules, teams and screens

**185 screens · 13 team workspaces · 5 cross-cutting layers**

The organising principle, and the client's stated first priority: **the ERP is
team-modular.** A user does not see an ERP with permissions applied. They see
*their* ERP. The Sales team opens the system and Sales is what exists. The
modules a team does not own are not greyed out — they are absent.

---

## 1. The access model

### Workspaces and who enters them

| # | Workspace | Owning team | Personas | Screens |
| --- | --- | --- | --- | --- |
| W0 | **Executive** | Management | MD, COO, Plant Head | 3 |
| W1 | **Masters & Configuration** | Master Data | MDM Controller, Sr. Admin | 21 |
| W2 | **Sales & CRM** | Sales | Sales Exec, Sales Head, Key Account Mgr | 13 |
| W3 | **Production Planning & Control** | Planning | Planner, PPC Head | 10 |
| W4 | **Purchases & SRM** | Purchase | Buyer, Purchase Head, Weighbridge Op | 18 |
| W5 | **Production** | Plant | Shift In-charge, Line Operator, Prod Head | 19 |
| W6 | **Inventory & Warehouse** | Stores | Store Keeper, Plant Head as Warehouse Manager | 19 |
| W7 | **Quality** | QC / QA | QC Analyst, QA Head | 9 |
| W8 | **Logistics & Dispatch** | Dispatch | Dispatch Officer, Gate Security | 11 |
| W9 | **Exports** | Export Documentation | Export Exec, Export Head | 9 |
| W10 | **Finance** | Finance | AR/AP Exec, Controller, CFO | 15 |
| W11 | **Maintenance** | Maintenance | Maintenance Engineer, Maint. Head | 9 |
| W12 | **Reporting & MIS** | MIS + all heads | MIS Analyst, any Head | 10 |

### Three grades of access

A team boundary is not binary. Real factories need to *see* across the wall
without being able to *act* across it. Every cell in the access matrix is one of:

| Grade | Meaning | Example |
| --- | --- | --- |
| **Own** | Full read/write, appears in the module rail | Sales → W2 |
| **View** | Read-only. Appears in the rail's `READ` band, dashed and dimmed; primary actions and inputs are disabled | Sales → `iw-fg` stock availability on an order line |
| **None** | Absent. A deep link renders permission-denied | Sales → `pr-bmr` |

`app/access` renders this as an editable role × workspace grid; it is the module
map made administrable.

### Example: what four people see

| Persona | Rail contains | View-only reach |
| --- | --- | --- |
| Sunita Rathore — Sales Exec | Sales | FG stock, dispatch status, customer AR ageing |
| Rajat Deshmukh — PPC Planner | PPC, *view* into Production + Inventory | RM stock, machine capacity, PM downtime |
| Devendra Yadav — Shift In-charge | Production, Quality, Inventory | Today's schedule from PPC |
| Anita Chauhan — Controller | Finance, MIS | Every workspace, read-only |

Switching persona in the prototype bar re-renders the Launchpad and the rail in
place. **That is the demo of this requirement.**

---

## 2. Navigation

Deliberately **not** the sidebar-plus-topbar every ERP ships, because that shape
hides the team boundary rather than expressing it.

```
┌────┬───────────────┬──────────────────────────────────────┬─────────┐
│    │               │  workspace header · 44px             │         │
│ 60 │  228px        │  breadcrumb · unit · period ·        │  right  │
│ px │  contextual   │  approvals · persona                 │  drawer │
│    │  panel        ├──────────────────────────────────────┤         │
│ MO │  (this        │                                      │ record  │
│ DU │   workspace's │   content                            │ detail  │
│ LE │   sub-modules │                                      │    +    │
│ RA │   from the    │                                      │ lineage │
│ IL │   SOW sheet)  │                                      │         │
└────┴───────────────┴──────────────────────────────────────┴─────────┘
```

- **Module rail (60px)** — three bands. `YOURS` is what this user owns.
  `READ` is what they may see but not change, dashed and dimmed, capped at four
  with a `+N` overflow. Workspaces with no access are absent entirely. Every item
  carries a flyout label; the signed-in person sits at the foot.
- **Contextual panel (228px)** — the current workspace's sub-modules, taken
  verbatim from the Module Summary sheet.
- **Workspace header (44px)** — sits *inside* the content column, not spanning
  the app. Carries breadcrumb, **unit selector** (Bhopal · Hosur · Unit-3 ·
  Unit-4), fiscal period, approvals count, persona chip.
- **Right drawer** — record detail and genealogy, so a list is never lost.

---

## 3. The interdependency spine

Every arrow below is a **contract**: an owning team, a receiving team, a gate
condition and an ageing clock. Rendered and clickable at `app/handoffs`.

```
                        ┌──────────── SALES ────────────┐
   Customer PO ──OCR──► Enquiry ─► Quotation ─► Sales Order ─► PI
                              price approval ▲    │
                                                  │ gate: ATP + credit/LC
                                                  ▼
                        ┌───────────── PPC ─────────────┐
                          Demand ─► Unit allocation ─► PRP ─► MRP
                                                         │
                    ┌────────────────────────────────────┼───────────────┐
         shortfall  │                                    │ capacity      │
                    ▼                                    ▼               │
        ┌─────── PURCHASE ───────┐            ┌──── PPC SCHEDULE ────┐   │
          PR ─► PO ─► Inward ─► GRN             Capacity ─► Schedule      │
                 ▲       │                                │              │
      threshold ─┘       │ gate: QC hold                  │              │
                         ▼                                ▼              │
        ┌─────── QUALITY ────────┐            ┌───── PRODUCTION ─────┐   │
          Incoming QC ─► release              Prod order ─► Work orders   │
                         │                              │               │
                         ▼                              ▼               │
        ┌────── INVENTORY ───────┐              e-BMR ─► Shredding       │
          RM stock ─► Reservation ──────────►   Foaming ─► Block         │
                         ▲                              │               │
                         │                    gate: cure time elapsed    │
                         │                              ▼               │
                         │                Cutting ─► Peeling/Lamination  │
                         │                              ▼               │
                         │                    Bundles/Rolls ─► Packaging │
                         │                              │               │
                         │                              ▼               │
                         │                ┌───── QUALITY ─────┐         │
                         │                  In-process ─► Batch ─► Final │
                         │                              │               │
                         └──────── FG stock ◄───────────┘               │
                                      │                                 │
                                      ▼                                 │
                        ┌──────── DISPATCH ────────┐                    │
                          Plan ─► Load ─► Packing list ─► Gate out      │
                                      │        ▲                        │
                                      │        └── gate: weight AND CBM │
              ┌───────────────────────┼───────────────────┐             │
              ▼                       ▼                   │             │
   ┌──── EXPORTS ────┐      ┌──── FINANCE ────┐            │             │
     Shipment ─► Docs        Invoice ─► AR          MAINTENANCE ─────────┘
        │                       │                  PM + breakdown
   gate: doc set complete       ▼                  reduce capacity
        ▼                   Accounting bridge
     BL ─► Realization ─► Incentives
```

### The gates, in full

A gate is a rule that **stops** a handoff. These are enforced in the build, not
described in a tooltip.

| # | Gate | Blocks | Override |
| --- | --- | --- | --- |
| G1 | ATP — is there stock or capacity by the promise date? | SO confirmation | Sales Head, logged |
| G2 | Credit exposure over limit / LC not received | SO confirmation | Finance Controller, logged |
| G3 | Price below floor for that customer + grade | Quotation issue | Sales Head approval |
| G4 | PO value over the buyer's threshold | PO release | Tiered: Purchase Head → CFO |
| G5 | GRN pending incoming QC | RM issue to production | QA Head, logged |
| G6 | Formula version not approved | Production order release | None — hard stop |
| G7 | **Cure time not elapsed** | Block release to cutting | QA Head + logged reason |
| G8 | Batch QC fail | FG receipt into stock | Deviation disposition workflow |
| G9 | Load exceeds vehicle weight **or** volume | Dispatch execution | Dispatch Head, logged |
| G10 | Export document set incomplete | Shipment departure | None — hard stop |
| G11 | 3-way match variance over tolerance | Supplier invoice payment | Controller |
| G12 | Machine under breakdown | Scheduling onto that machine | Planner, with PM Head sign-off |

### Cross-workspace write loops built into the demo

The shared store means an action in one team's workspace is visible in another's.

1. Sales confirms **SO-2611** → PPC demand board gains a line → MRP flags a trim
   shortfall → a PR lands in Purchase's inbox.
2. Purchase posts a GRN → Quality's incoming queue gains a lot → QC pass →
   Inventory RM stock rises → the MRP shortfall clears.
3. Production closes a BMR → FG enters Inventory → the SO's reservation is
   satisfied → Sales' tracker moves to *Ready to dispatch*.
4. Dispatch executes gate-out → Finance's invoice queue gains the line →
   customer credit exposure and AR ageing update → Sales' credit screen changes.
5. Maintenance logs a breakdown on Foaming Line 2 → PPC capacity drops → the
   schedule board flags the affected orders.

---

## 4. Screens, by workspace

Legend: ★ flagship (carries real interaction) · `ours` = not in the SOW

### W1 · Masters & Configuration — 21 screens
*Sheet source: Module Summary row 1, six master groups / 39 entities.*

| Screen | Covers |
| --- | --- |
| `md-home` | Master data health: completeness, duplicates, expiring documents |
| `md-org` | 1a Company & Unit, 1b Department — org tree across 4 units |
| `md-warehouse` ★ | 1c Warehouse, 1d Locations/Bins — zone → rack → bin designer |
| `md-users` | 1e User & Approvals — users, roles, approval thresholds, delegation |
| `md-customers` ★ | 2a Customer master. Record detail opens in the drawer: **product-specific pricing vs standard**, credit, exposure, open orders |
| `md-vendors` ★ | 2b Vendor master. Drawer carries the commercial, quality and compliance record plus recent receipts |
| `md-partners` | 2c Partner, 2d Job Work/Trading, 2e Banking |
| `md-products` ★ | 3a Product master. Drawer carries the specification band, production standard and packaging |
| `md-materials` | 3b Material master — trim grades, binder, film, adhesive |
| `md-categories` | 3c Category, 3d Families |
| `md-specs` | 3e Specification library with tolerance bands |
| `md-density` | 3f Density master — the grade ladder D80…D150 |
| `md-packaging` | 3g Packaging — bale, roll wrap, pallet, container fit |
| `md-global` | 4a–4k Currencies, Countries, Purpose Codes, UOM, SQC, HS Code, Inco Terms, Port, Tax Rate, Transport Mode, Container Types |
| `md-commercial` | 5a HSN, 5b GST, 5c Freight Terms, 5d Payment Terms |
| `md-bom` ★ | 6.1 BOM — list and detail |
| ~~`md-formula`~~ | Removed 11 Sep at Sarva's request — not in the W1 document; BOM Master versions (§35) carry the recipe and its approval |
| `md-operations` | 6.2 Operations and routings |
| `md-workcentres` | 6.3 Work Centres, 6.4 Machines |
| `md-labour` | 6.5 Labour Categories, rates, shift patterns |
| `md-standards` | 6.6 Production Standard, 6.7 Yield Standards |

> `md-density` and `md-standards` are split out because density and yield are the
> two numbers this business is priced and judged on.
>
> **Record detail opens in the right drawer**, not on its own page — the nav
> archetype chosen in `DESIGN.md` §5. Nothing is dropped: the customer drawer
> carries credit, exposure, product-specific pricing against standard, and the
> open order book. It is one fewer navigation step, not less content.

### W2 · Sales & CRM — 13 screens
*Module Summary row 2 + From Customer R6 + To Shanti B1.*

| Screen | Covers |
| --- | --- |
| `sa-home` | Sales dashboard |
| `sa-po-intake` ★ | 2a **Customer POs, OCR-read** — extract, confirm, convert |
| `sa-enquiries` | Enquiry register (B1 enquiry-to-quotation) |
| `sa-quotation` ★ | Quotation + **price approval workflow** (G3) |
| `sa-orders` ★ | 2b **Sales orders** — register and record in one screen. Filter by overdue / due soon / held / state, click any row for its lines, gates, delivery schedule and 13-state lifecycle. Raise an order from a customer PO, from an accepted quotation, or directly. **Pendency is folded in as ageing and filters** rather than a separate screen. |
| `sa-returns` | 2b **Sales return** management |
| `sa-schedules` | 2c Delivery schedules |
| `sa-tracking` | 2d Order tracking — live cross-team status |
| `sa-credit` ★ | 2e **Credit exposure → hold & overrides** (G2) |
| `sa-lc` | 2e **LC register** |
| `sa-pricing` | Customer-specific price lists vs standard, approval |
| `sa-team` | Salesperson management, territories, targets |
| `sa-analytics` | Sales analytics + customer profitability |

**The 13-state order lifecycle** (B1), enforced on `sa-order`:
`Draft → Submitted → Price-approved → Credit-checked → Confirmed → Planned →
In production → Partially ready → Ready to dispatch → Dispatched → Delivered →
Invoiced → Closed`, with side-exits to `On hold`, `Short-closed`, `Cancelled`.

### W3 · Production Planning & Control — 10 screens
*Module Summary row 3 + From Customer R4 + To Shanti B2.*

| Screen | Covers |
| --- | --- |
| `pp-home` | 3i PPC dashboard |
| `pp-demand` | 3a Demand management + **predictive forecast** (R13.4) |
| `pp-fulfilment` | 3b Order fulfilment planning, ATP source |
| `pp-allocation` ★ | 3c **Unit allocation** across Bhopal / Hosur / U3 / U4 |
| `pp-workorders` | 3c **Work orders** — what each sales order has been split into, in-house and third party, with status and visibility by role, unit and assignment (7 Oct 2026) |
| `pp-prp` | 3d Production requirement planning |
| `pp-mrp` ★ | 3e **MRP run** → purchase and production recommendations |
| `pp-capacity` | 3f Capacity planning, net of maintenance downtime (G12) |
| `pp-schedule` ★ | 3g **Production scheduling board** — machine lanes, day/week |
| `pp-proddemand` | 3h Production demand, priority release to plant |
| `pp-calendar` | Production calendar, shifts and holidays (R4.7) |

### W4 · Purchases & SRM — 18 screens
*Module Summary row 4 + From Customer R1, R2 + To Shanti B5, B6.*

| Screen | Covers |
| --- | --- |
| `pu-home` | 4a Purchase dashboard |
| `pu-requisitions` | Purchase requisitions, **PR → PO conversion** |
| ~~`pu-rates`~~ | 4b RM monthly rate fixation — **removed 7 Oct 2026** at the client's request; the month's scrap rate is held on a blanket PO |
| `pu-contracts` | Rate contract management |
| `pu-orders` | 4e Purchase order register |
| `pu-order` ★ | PO detail, **approval-threshold-aware lifecycle** (G4) |
| ~~`pu-bulk`~~ | 4c Bulk POs — **removed 7 Oct 2026** |
| ~~`pu-split`~~ | 4d Split POs — **removed 7 Oct 2026** |
| ~~`pu-inward`~~ | 4f Inward receipts and weighbridge — **removed 7 Oct 2026**; every receipt is recorded on `pu-grn` |
| `pu-grn` ★ | 4g **GRN with QC-hold gating** (G5) + **yield reconciliation** `ours` |
| `pu-invoices` | 4h Supplier invoices |
| `pu-match` ★ | 4i **3-way matching exceptions** (G11) |
| `pu-jobwork` | 4j **Work orders placed outside Sarva** — Job Work or Trading — each with the purchase order raised for it (7 Oct 2026) |
| `pu-analytics` | Procurement analytics |
| `pu-suppliers` ★ | **Composite supplier scorecard** — price, quality, delivery, **yield** |
| `pu-supplier` | Supplier detail, evaluation history, communication log |
| `pu-complaints` | Supplier complaint management |
| `pu-compliance` | Vendor compliance tracking, document expiry |

### W5 · Production — 19 screens
*Module Summary row 5 + From Customer R3 + To Shanti B3. This is the rebonded-foam line.*

| Screen | Covers |
| --- | --- |
| `pr-home` | 5a Production dashboard — live line status across units |
| `pr-orders` | 5b Production orders |
| `pr-order` | Production order detail, formula reservation (G6) |
| `pr-workorders` | 5c Work orders |
| `pr-bmr` ★ | 5d **Batch production — electronic BMR**, the flagship screen |
| `pr-shredding` ★ | 5e **Shredding** — trim charge, flake size, screen changes |
| `pr-foaming` ★ | 5f **Foaming** — binder dosing, ribbon blender, moisture add |
| `pr-block` ★ | 5g **Block** register + **curing-chamber clock** (G7) `ours` |
| `pr-cutting` ★ | 5h **Cutting** — cut plan and offcut yield |
| `pr-lamination` ★ | 5i **Peeling & lamination** — peel to continuous roll, laminate |
| `pr-bundles` | 5j Bundles / rolls |
| `pr-packaging` | 5k Packaging, labelling, barcode generation |
| `pr-consumption` | Raw material consumption and reconciliation (R3.6) |
| `pr-machines` | Machine allocation (R3.8) |
| `pr-labour` | Labour allocation (R3.9) |
| `pr-shifts` | Shift management (R3.10) |
| `pr-wastage` ★ | Wastage / scrap tracking — and scrap re-entering as feedstock |
| `pr-costing` | Production costing (R3.12) |
| `pr-reporting` | 5l Production reporting (R3.13) |

> Sarva's own scrap re-enters the shredder. `pr-wastage` closes that loop rather
> than writing it off — a recycler's ERP that treats waste as a write-off has
> misunderstood the business.

### W6 · Inventory & Warehouse — 19 screens
*Module Summary row 6 + From Customer R5 + To Shanti B7, rebuilt on the W6
volume of 12 October 2026 (`docs/W6-SPEC.md`, `docs/W6-PLAN.md`).*

One immutable inventory ledger is the only place a quantity is kept. Every
stock-changing event in Purchases, Production, Sales and Inventory posts to
it, and every other workspace reads its figures from it.

| Screen | Covers |
| --- | --- |
| `iw-home` | §5 Inventory dashboard — the twelve things the volume lists |
| `iw-stock` | §7 Stock overview; 13 Oct: RM, packing, WIP and FG in one view — by kind and category, by item with production-reserved and value, by lot |
| `iw-rm` | §8 Raw material — by lot, supplier, storage room; 13 Oct: by category (Scrap, Binder…), MRP need, BOMs, purchase & cost |
| `iw-wip` | §9 WIP & intermediate — shredded foam, blocks, cut output, bundles and rolls |
| `iw-fg` | §10 Finished goods; *Issue to dispatch* until W8 is built; 13 Oct: by format — bundle, sheet, block, roll — with dimensions and pieces |
| `iw-batches` | §17 Lot & batch traceability, backward and forward; 13 Oct: production history complete / incomplete |
| `iw-ageing` | §20 Stock ageing, in configurable ranges; 13 Oct: RM/FG alerts at Sarva's thresholds, review of aged lots |
| `iw-register` | 13 Oct §2.6 Stock register for a day or range; Q1 daily closing per unit |
| `iw-ledger` ★ | §11 **Inventory ledger** — every movement, never edited |
| `iw-reservations` | §12 Reservations against five kinds of source document |
| `iw-issues` | §13 Material issue & return |
| `iw-transfers` | §14 Transfers — location, warehouse, inter-unit, production to warehouse; 13 Oct: many lines, KG and/or NOS |
| `iw-adjustments` | §15 Adjustments — reason code, approval, then the ledger |
| `iw-count` | §16 Physical count — plan, sheet, variance, approval, adjustment; 13 Oct: the monthly count on the 1st |
| `iw-hold` | §18 QC hold & blocked; the decisions, until W7 is built |
| `iw-exceptions` | §21 Inventory exception register |
| `iw-reorder` | §22 Stock levels (low / excess) and the inventory settings awaited from Sarva |
| `iw-bins` ★ | §6 Inventory locations (warehouses, zones, locations) |
| `iw-reports` | §25 Inventory reports — nineteen reports and eight KPIs |

Removed on 12 October, by agreement: the scan console (`iw-barcode`) and
Valuation (`iw-valuation`). Scrap is kept in Production (`pr-wastage`).
Removed on 13 October, at Sarva's request: Availability & ATP (`iw-atp`);
PPC's ATP and the reservations remain. Period closing is the daily per-unit
closing on `iw-register` (Sarva's answer to Q1).

### W7 · Quality — 9 screens
*Module Summary row 10 + To Shanti B4.*

| Screen | Covers |
| --- | --- |
| `qc-home` | 10f QC dashboard |
| `qc-incoming` ★ | 10a **Incoming QC** — trim contamination, moisture, foreign matter |
| `qc-inprocess` | 10b In-process QC |
| `qc-batch` ★ | 10c **Batch QC** — density, ILD, tensile, elongation, compression set |
| `qc-final` | 10d Final QC and FG release (G8) |
| `qc-rejections` | 10e Rejections |
| `qc-deviations` ★ | **Deviation disposition workflow** — use-as-is / rework / reject |
| `qc-specs` | Specification vs result, COA generation |
| `qc-analytics` | Rejection trending (B14) |

### W8 · Logistics & Dispatch — 11 screens
*Module Summary row 8 + From Customer R8 + To Shanti B8.*

| Screen | Covers |
| --- | --- |
| `dl-home` | 8a Dispatch dashboard |
| `dl-plans` | 8b Dispatch plans, delivery scheduling |
| `dl-load` ★ | 8d **Load planning by weight AND volume** (G9) |
| `dl-packing` | 8c Packing list — built 13 Oct: generated by a dispatch, its lines, weights and stock movements |
| `dl-execution` ★ | 8e Dispatch execution, gate-out |
| `dl-vehicles` | Vehicle allocation (R8.2) |
| `dl-transporters` | Transporter management (R8.3) |
| `dl-tracking` | Shipment tracking (R8.6) |
| `dl-delivery` | Delivery confirmation and POD (R8.7) |
| `dl-freight` | Freight cost tracking (R8.8) |
| `dl-docs` | Dispatch documentation, e-way bill (R8.9) |

> Foam is **volumetric, not dense**. A truck fills by CBM long before it reaches
> its weight limit, which is why `dl-load` gates on both and shows the binding
> constraint. Any ERP that plans foam dispatch on tonnage alone is wrong.

### W9 · Exports — 9 screens
*Module Summary row 7 + From Customer R7 + To Shanti B9.*

| Screen | Covers |
| --- | --- |
| `ex-home` | 7a Export dashboard |
| `ex-orders` | Export sales orders (R7.1) |
| `ex-shipments` ★ | 7b **Shipments** — departure **gated on document completeness** (G10) |
| `ex-containers` | Container planning (R7.4) |
| `ex-docs` ★ | 7c **Document workbench** — commercial invoice, packing list, shipping bill, BL, COO |
| `ex-repository` | Export documentation repository (R7.12) |
| `ex-realization` | 7c Realization, BRC, export payment tracking |
| `ex-forex` | Foreign currency management (R7.11) |
| `ex-incentives` ★ | 7d **Incentives** — RoDTEP, duty drawback |

### W10 · Finance — 15 screens
*Module Summary row 9 + From Customer R9, R10 + To Shanti B11.*

| Screen | Covers |
| --- | --- |
| `fi-home` | Finance dashboard (R9.7) |
| `fi-invoices` | 9a Invoicing and credit notes |
| `fi-receivables` | 9b Receivables + ageing |
| `fi-payables` | 9b Payables + ageing |
| `fi-payments` | Payment approvals, payment and receipt vouchers (R9.5) |
| `fi-costing` ★ | 9c **Costing** — batch, product and order cost build-up |
| `fi-budget` | Budget management (R9.1) |
| `fi-cashflow` | Cash flow management and forecasting (R9.2, R9.6) |
| `fi-costcentre` | Cost center accounting (R9.3) |
| `fi-bank` | Bank reconciliation (R9.4) |
| `fi-gst` | GST, TDS/TCS compliance (R10.7, R10.8) |
| `fi-assets` | Fixed assets (R10.9) |
| `fi-forex` | Foreign exchange accounting (R9.8) |
| `fi-bridge` ★ | 9d **Accounting bridge** — two-way API, field mapping, sync log, exceptions (B11) |
| `fi-statements` | Trial balance, P&L, Balance Sheet, Cash Flow — bridge-sourced |

### W11 · Maintenance — 9 screens
*Module Summary row 11 + From Customer R11 + To Shanti B10.*

| Screen | Covers |
| --- | --- |
| `mt-home` | Maintenance dashboard |
| `mt-machines` | 11a Machine master + utilisation reports |
| `mt-preventive` ★ | 11b **Preventive maintenance** schedules |
| `mt-breakdowns` ★ | 11c **Breakdowns** — log, resolve, **capacity impact to PPC** (G12) |
| `mt-schedule` | Maintenance scheduling calendar (R11.4) |
| `mt-spares` | Spare parts inventory (R11.5) |
| `mt-history` | Maintenance history (R11.6) |
| `mt-costs` | Maintenance costs (R11.7) |
| `mt-labour` | 11d Maintenance labour |

### W12 · Reporting & MIS — 10 screens
*Module Summary row 12 + From Customer R12 + To Shanti B14.*

| Screen | Covers |
| --- | --- |
| `mi-home` | Report catalogue and MIS home |
| `mi-sales` | Sales trends + **OTIF performance** (B14) |
| `mi-production` | Capacity utilisation, yield, OEE |
| `mi-inventory` | Stock and ageing analytics |
| `mi-quality` | Quality rejection trending |
| `mi-finance` | Finance analytics, financial reports (R10.14) |
| `mi-export` | Export analytics |
| `mi-kpi` | KPI monitoring and scorecards |
| `mi-builder` ★ | Custom report builder + **AI-generated reports** (R12.8, R13.6) |
| `mi-scheduled` | Scheduled MIS reports and subscriptions |

### W0 · Executive — 3 screens

| Screen | Covers |
| --- | --- |
| `ce-home` | Executive cockpit — the whole business on one screen |
| `ce-units` | Cross-unit comparison: Bhopal · Hosur · Unit-3 · Unit-4 |
| `ce-circularity` ★ | **Circularity & CO₂ ledger** `ours` |

### Cross-cutting `app/` — 15 screens

Present inside every workspace, scoped to the team. This is what makes 13
workspaces one system rather than 13 applications.

| Screen | Covers |
| --- | --- |
| `app-login` | Sign-in and persona selection |
| `app-launchpad` ★ | **The front door** — workspace tiles this user may enter |
| `app-approvals` ★ | Approval inbox, threshold-aware, all workspaces (B15) |
| `app-traceability` ★ | **Forward and backward genealogy** (B13) |
| `app-handoffs` ★ | **Cross-team handoff and SLA board** `ours` |
| `app-access` ★ | Role × workspace access matrix (B15) |
| `app-users` | User administration, delegation, out-of-office |
| `app-activity` | System-wide activity feed (B15) |
| `app-notifications` | Notification centre and rules (R13.8) |
| `app-ai` ★ | AI business assistant (R13.1) |
| `app-automation` ★ | Workflow automation builder (R13.2, R13.9) |
| `app-ocr` ★ | OCR document inbox (R13.3) |
| `app-alerts` | Exception alert configuration (R13.7) |
| `app-settings` | System configuration, number series, fiscal periods |
| `app-audit` | Audit trail |

### System pages — 5

`index` (landing) · `poc-index` (screen hub) · `design-system` ·
`assumptions` · `404`

---

## 5. Build batches

Each batch ends with `scripts/check.py` clean, a screenshot, and **a stop for
validation** before the next begins.

| Batch | Contents | Screens |
| --- | --- | --- |
| **B0** | Docs · design tokens · component library · `design-system.html` — **GATE** | 1 |
| **B1** | Shell (rail + panel + drawer) · component engine · `data.js` · `app/` ×15 | 15 |
| **B2** | W1 Masters & Configuration | 22 |
| **B3** | W2 Sales & CRM · W3 PPC | 25 |
| **B4** | W4 Purchases & SRM | 18 |
| **B5** | W5 Production | 19 |
| **B6** | W6 Inventory & Warehouse · W7 Quality | 24 |
| **B7** | W8 Dispatch · W9 Exports | 20 |
| **B8** | W10 Finance · W11 Maintenance | 24 |
| **B9** | W12 MIS · W0 Executive · system pages | 18 |
| **B10** | Verification, guided tour, handover | — |

**Nothing is cut.** Speed comes from a component engine strong enough that a
screen is configuration rather than markup — one `Components.listPage()`, one
`Components.recordPage()`, one status vocabulary, one `data.js` — never from
dropping a module.
