Sindh IT Portal — Facilitation DeskSpecification documents
Englishاردوسنڌي
← All documents

Product Requirements Document (PRD)

The master requirements specification for the Sindh IT Portal — Facilitation Desk (SITP). Part 1 contains the document header, the overview, and Epics E1–E8 (Public Site through Integrations).

Field Value
Doc ID 01
Status Draft
Owner S&ITD / MAAHIR
Languages EN (master) · UR · SD

1. Purpose & How to Read This Document

This PRD is the authoritative functional specification for the Sindh IT Portal — Facilitation Desk (SITP). It translates the locked decisions captured in _context.md into actionable requirements that vendors, engineers, QA, and stakeholders can build, test, and accept against. It is written to be RFP- and tender-ready.

1.1 Structure

The PRD is organized into 17 Epics (E1–E17). Each Epic corresponds to one module (A–Q) from the module map in _context.md. Each Epic is decomposed into User Stories (US--), and each User Story is verified by one or more Gherkin Acceptance Criteria (Given/When/Then).

Reading order for a single requirement:

Epic → User Story (US) → Acceptance Criteria (Gherkin Scenarios) → Test Cases (TC)

Functional requirement IDs (FR-<MOD>-<nnn>) are referenced inline inside User Stories where they aid traceability to the functional requirements catalogue in /specs/en/02-functional-reqs/. Non-functional requirements (NFR-<CAT>-<nnn>) live in /specs/en/03-non-functional-reqs/ and are not duplicated here.

1.2 MoSCoW tags

Every User Story is tagged with exactly one MoSCoW priority (per _conventions.md §5):

  • [M] Must — V1 launch blocker.
  • [S] Should — V1, delivered soon after launch.
  • [C] Could — Nice-to-have in V1 if time permits.
  • [W] Won't — Explicitly deferred to a later phase.

All features described in this PRD are in scope for V1; the MoSCoW tag controls sequencing, not inclusion. See §4 for the distribution.

1.3 Language & behavior conventions

  • Stories are written behavior-first and UI-agnostic. They describe what the system must do, not how the screen looks.
  • Gherkin scenarios use language-neutral nouns ("the representative", "the staff member", "the system"). Screens, buttons, and visual design live in /specs/en/10-ux-sitemap-flows/.
  • All flows apply across English, Urdu, and Sindhi, with RTL rendering for Urdu and Sindhi, unless explicitly stated otherwise.
  • Ticket identifiers follow the locked format SITP-YYYY-<DEPT>-<NNNNNN> (e.g., SITP-2026-LBR-000123).

2. Module / Epic Map

All 17 epics of the SITP V1 are listed below. Part 1 of this PRD covers E1–E8; Part 2 (_part2_en.md) covers E9–E17 and the traceability matrix.

Epic Code Module One-line summary MoSCoW (sequence)
E1 PUB A. Public Site Multilingual info site, FAQ/help center, AI chatbot, SEO, onboarding wizard, service catalog, public transparency view. M (core)
E2 TKT B. Ticketing Core Full ticket lifecycle: dynamic forms, AI routing, tracking-by-ID, drafts, sub-tasks, merge/split, watchers, proof-of-resolution gate, CSAT. M (core)
E3 ORG C. Org & RBAC Company registration (5 types), file-first verify-in-parallel, multi-rep, granular RBAC, nested departments with DG/Secretary oversight, lifecycle automation. M (core)
E4 FILE D. Files Secure uploads with AV scan, encrypted storage, preview, versioning, time-limited download links, retention linkage. M (core)
E5 AI E. AI (11 capabilities) OCR, summary, classification, urgency/sentiment, draft replies, translation, duplicate detection, chatbot, PII redaction, analytics, MoM extraction — behind a pluggable engine abstraction. M+S (sequenced)
E6 COM F. Internal Comms (3 tiers) Tier 1 ticket-scoped threads; Tier 2 org-wide DMs/groups; Tier 3 channel-based chat. All retained & audit-logged. M+S+C (sequenced)
E7 NOT G. Notifications Email/SMS/WhatsApp/in-app templated multilingual notifications, two-way inbound replies, preference center, rate limiting. M (core)
E8 INT H. Integrations NADRA, SECP, FBR, SRB, PSEB, NITB e-Office, OIDC SSO, public REST API & outbound webhooks via adapter pattern. M+S (sequenced)
E9 ANL I. Analytics 9 metric families, 7 role dashboards incl. public transparency, GIS heatmap, scheduled digests, exports. M+S (in Part 2)
E10 KB J. Knowledge Base + SOPs Articles, forms, versioned SOPs, AI semantic search, deflection tracking, service catalog. S (in Part 2)
E11 MCI K. Multi-channel Intake Email/SMS/WhatsApp-to-ticket, IVR/voice, walk-in/offline entry. S (in Part 2)
E12 DOC L. Document Gen + e-Sign Trilingual official letters on letterhead, PKI signing, QR verification. M (in Part 2)
E13 MTG M. Hearings + TRI + MoM Tripartite hybrid meetings, MoM upload-first with AI action extraction, approval gating for sensitive tickets. M (in Part 2)
E14 SUG N. Suggestion & Content Portal Suggestion box, circulars/announcements, versioned document repository. C (in Part 2)
E15 TRN O. Training & Certification LMS-lite: staff courses + exam-gated certification before live ticket handling. S (in Part 2)
E16 OFC P. Brand & Officials CMS Dynamic Minister/Secretary/DG records with date-aware historical accuracy; propagates to site, letters, dashboards. S (in Part 2)
E17 FFG Q. Feature Flags Every capability toggleable by Super Admin per department/environment. M (cross-cutting, in Part 2)

3. MoSCoW Distribution Summary

All features in this PRD are V1 scope. The MoSCoW tag denotes sequencing and launch-blocking priority, not inclusion.

  • [M] Must stories are launch blockers — the Portal cannot go live to the IT industry without them. They cluster in E1–E4 (registration, ticketing, files, core AI/OCR) and the foundational tiers of E6–E8.
  • [S] Should stories are V1 but delivered immediately after the Must set is in production (typically within the first stabilization release). They include advanced ticket operations (merge/split, watchers), the upper tiers of internal comms, two-way inbound messaging, AI draft replies, and most external integrations (NITB e-Office, public API).
  • [C] Could stories are valuable but non-essential for V1; they will be picked up if capacity allows (e.g., Tier 3 channel-based chat).
  • [W] Won't stories are explicitly out of phase; there are none declared Must-defer in E1–E8.

This sequencing aligns with the phased roadmap in /specs/en/14-roadmap-release/: Phase 1 MVP = Must; Phase 2 = Should; Phase 3+ = Could and the E9–E17 modules in Part 2.


4. Epics E1–E8


Epic E1 — Public Site (PUB)

Goal: Provide an unauthenticated, multilingual (EN/UR/SD, RTL-ready) front door to the Portal where IT companies, investors, and the public can learn about the platform, browse the service catalog and FAQs, get AI-assisted guidance and filing help, and view a public transparency snapshot — all without an account, and fully indexed for search engines in every supported language.

US-PUB-001 — Browse the multilingual information site [M]

As a member of the public (IT company, investor, or citizen) I want to read all public pages in English, Urdu, or Sindhi So that I can understand the Portal's purpose, scope, and how to use it in my preferred language.

Satisfies FR-PUB-001, FR-PUB-002.

Acceptance Criteria (Gherkin)

Scenario: Visitor switches interface language
  Given a visitor opens any public page
  When they select "اردو" (Urdu) from the language switcher
  Then all page text is rendered in Urdu
  And the page layout switches to right-to-left (RTL)
  And the URL or locale prefix reflects the selected language

Scenario Outline: Each supported language renders for every public page
  Given the public site is available in languages <Lang>
  When a visitor opens the home, about, services, FAQ, help, or contact page
  Then the page renders fully in <Lang> with no fallback strings in English
  And the page is WCAG 2.1 AA compliant for that language

  Examples:
    | Lang   |
    | EN     |
    | UR     |
    | SD     |

US-PUB-002 — Search the FAQ and help center [M]

As a visitor I want to search a curated FAQ and help center by keyword So that I can find answers to common questions without filing a ticket.

Satisfies FR-PUB-003.

Acceptance Criteria (Gherkin)

Scenario: Keyword search returns relevant FAQ articles
  Given the FAQ and help center contain indexed articles in EN, UR, and SD
  When a visitor searches for "how to register my company"
  Then the system returns articles whose title or body match the query in the visitor's active language
  And results are ranked by relevance
  And each result links to the full article

Scenario: No results offers escalation path
  Given a visitor's search returns zero results
  Then the system offers a link to the AI chatbot and a "contact us" option

US-PUB-003 — Chat with the AI assistant for guided filing [M]

As a visitor I want to ask an AI assistant questions and get help filing a ticket So that I can resolve simple issues immediately or be guided into a correct ticket submission.

Satisfies FR-AI-008, FR-PUB-004. Handoff rules align with US-AI-006.

Acceptance Criteria (Gherkin)

Scenario: AI assistant answers from approved knowledge base
  Given the AI assistant is enabled and a visitor opens the chat widget
  When the visitor asks a question covered by the knowledge base
  Then the assistant responds in the visitor's active language
  And the response cites the source article or FAQ entry

Scenario: Assistant escalates to human when uncertain
  Given the assistant cannot answer with sufficient confidence
  Then it offers to hand off to a live facilitator
  And on acceptance, a chat or ticket session is created and routed to the next available facilitator
  And the conversation transcript is preserved and attached

Scenario: Assistant can pre-fill a ticket draft
  Given a visitor confirms they want to file a ticket
  When the assistant has gathered the necessary details
  Then a ticket draft is created with category, title, and description pre-populated
  And the visitor is taken to the filing flow to review and submit

US-PUB-004 — Multilingual SEO with hreflang [S]

As a search engine I want each public page to declare language and regional alternates via hreflang and a complete sitemap So that the correct language version is served to users in Pakistan and abroad.

Satisfies FR-PUB-005.

Acceptance Criteria (Gherkin)

Scenario: Each public page emits correct hreflang alternates
  Given a public page exists in EN, UR, and SD
  When a crawler fetches any language version
  Then the HTML head contains hreflang link tags for EN, UR, and SD plus an x-default
  And a sitemap.xml entry exists for each language version

Scenario: Structured data is present
  Given a service catalog entry or FAQ article is published
  Then the page includes appropriate structured-data markup
  And the markup validates against the chosen schema

US-PUB-005 — Onboarding wizard for new entities [S]

As a prospective company representative I want a guided onboarding wizard that asks my entity type and recommends next steps So that I know exactly how to register, what documents to prepare, and which services apply to me.

Satisfies FR-PUB-006.

Acceptance Criteria (Gherkin)

Scenario: Wizard tailors guidance by entity type
  Given a visitor starts the onboarding wizard
  When they indicate their entity type (SECP company, sole proprietor/partnership, freelancer, foreign branch, or early startup)
  Then the wizard presents the registration requirements specific to that entity type
  And offers a checklist of documents and a direct link to start registration

Scenario: Wizard saves progress anonymously and on sign-up
  Given a visitor has completed part of the wizard
  When they register an account
  Then their wizard responses are attached to the new account
  And they resume from where they left off

US-PUB-006 — Browse the service catalog and view the public transparency snapshot [M]

As a visitor I want to browse a service catalog of departments/categories the Portal handles and see aggregate transparency statistics So that I understand what I can raise with the Portal and what the Portal's track record looks like.

Satisfies FR-PUB-007, FR-ANL-009 (public dashboard slice).

Acceptance Criteria (Gherkin)

Scenario: Visitor browses the service catalog
  Given the service catalog is published
  When a visitor opens the services page
  Then they see a list of departments and service categories the Portal accepts
  And each entry links to its SOPs, forms, and SLA expectations
  And the page is filterable by department and category

Scenario: Public transparency dashboard renders aggregate, non-PII metrics
  Given the public transparency dashboard is enabled
  When any visitor opens it without logging in
  Then they see aggregate metrics such as total tickets filed, percent resolved within SLA, average resolution time, and volume by department
  And no personally identifiable information or ticket-level detail is exposed
  And the figures match the source data within the dashboard's published refresh window

Scenario: Transparency dashboard is multilingual and accessible
  Given the dashboard renders in EN
  When the visitor switches to UR or SD
  Then all labels, legend, and tooltips render in the selected language
  And the dashboard meets WCAG 2.1 AA

Epic E2 — Ticketing Core (TKT)

Goal: Provide a complete ticket lifecycle for IT-industry problems raised against any Government of Sindh department — from intelligent intake (dynamic conditional forms, AI routing suggestion, smart deflection), through tracking and collaboration (drafts, sub-tasks, merge/split, link/relate, watchers/CC, bulk actions), to a strict proof-of-resolution gate that mandates evidence before closure, CSAT collection, and appeal/reopen. All governed by the SLA and escalation ladder in _context.md §5 and the workflow in /specs/en/06-ticket-workflow/.

US-TKT-001 — File a ticket via a dynamic, conditional form [M]

As a Company Representative I want to submit a ticket whose fields adapt to the selected department and category So that I provide exactly the information the concerned department needs, no more and no less.

Satisfies FR-TKT-001, FR-TKT-002, FR-TKT-004.

Acceptance Criteria (Gherkin)

Scenario: Successful submission generates a meaningful tracking ID
  Given a verified company representative is signed in
  When they complete the dynamic form with title, description, department, category, and any required fields for that category
  Then a ticket is created with status "New"
  And a tracking ID matching "SITP-YYYY-<DEPT>-<NNNNNN>" is generated
  And a confirmation notification is sent in the representative's preferred language

Scenario Outline: Conditional fields appear and validate by category
  Given a representative selects department <Dept> and category <Cat>
  When the form renders the category-specific field set
  Then the fields required by <Cat> are displayed and mandatory
  And fields not relevant to <Cat> are hidden
  And submission is blocked until all required fields are valid

  Examples:
    | Dept | Cat                       |
    | LBR  | EOBI registration         |
    | SRB  | Sales tax on services     |
    | IND  | Industrial estate allotment |

US-TKT-002 — AI auto-route suggestion on submission [M]

As a triage officer I want the system to suggest a department, section, and urgency for each new ticket using AI So that I can confirm or correct routing quickly instead of reading every ticket from scratch.

Satisfies FR-AI-002, FR-AI-003, FR-TKT-005.

Acceptance Criteria (Gherkin)

Scenario: AI suggests routing and urgency at intake
  Given a new ticket has been submitted
  When the AI routing service processes it
  Then a suggested department, section, and urgency level are attached to the ticket for officer review
  And the suggestion includes a confidence score
  And the officer can accept, modify, or reject the suggestion

Scenario: Officer override is logged
  Given the AI suggested department X
  When the triage officer changes it to department Y
  Then the ticket is routed to department Y
  And the override, the original suggestion, and the officer's identity are recorded in the audit log

US-TKT-003 — Track ticket status by tracking ID without login [M]

As a anyone who has a tracking ID I want to look up the status of a ticket without signing in So that I can monitor progress from any device, including when I am not at my company account.

Satisfies FR-TKT-007.

Acceptance Criteria (Gherkin)

Scenario: Anonymous status lookup by tracking ID
  Given a person holds a valid tracking ID
  When they enter it on the public tracking page
  Then the system shows the ticket's current status, the department handling it, the last public status-change date, and the SLA clock state
  And no internal notes, attachments, or staff identifiers are exposed

Scenario: Invalid tracking ID is rejected safely
  Given a person enters an unknown or malformed tracking ID
  Then the system returns a generic "not found" message
  And no information is leaked about whether the ID exists
  And repeated invalid attempts are rate-limited

US-TKT-004 — Save a draft and resume later with smart filing assistance [M]

As a Company Representative I want to save a partially completed ticket as a draft and get AI suggestions about similar resolved tickets before submitting So that I do not lose progress and avoid filing duplicates.

Satisfies FR-TKT-003, FR-AI-007.

Acceptance Criteria (Gherkin)

Scenario: Draft is preserved across sessions
  Given a representative has started but not submitted a ticket
  When they save the draft and return later (possibly from another device)
  Then their draft is listed under their drafts
  And resuming it restores all previously entered fields and attachments

Scenario: Smart filing assistant deflects duplicates
  Given a representative is composing a draft
  When at least a title and description are present
  Then the assistant surfaces similar resolved or open tickets
  And if a representative accepts a similar resolved ticket as their answer, the draft can be discarded with one action
  And the deflection event is recorded for analytics

US-TKT-005 — Sub-tasks, merge/split, link/relate, watchers/CC, and bulk actions [S]

As a staff member or facilitator I want to decompose, combine, relate, watch, and act on multiple tickets So that I can manage complex, multi-faceted issues efficiently.

Satisfies FR-TKT-008, FR-TKT-009, FR-TKT-010, FR-TKT-011, FR-TKT-012.

Acceptance Criteria (Gherkin)

Scenario: A ticket is split into sub-tasks
  Given a parent ticket with multiple distinct issues
  When a facilitator creates sub-tasks
  Then each sub-task has its own assignee, status, and SLA
  And the parent ticket cannot be closed until all sub-tasks are resolved or explicitly waived
  And the parent ticket displays the roll-up status of its sub-tasks

Scenario: Duplicate tickets are merged
  Given two or more tickets describe the same underlying issue from the same company
  When a facilitator merges them into a primary ticket
  Then the secondary tickets are marked "Merged into <primary ID>" and locked
  And all attachments, comments, and watchers are consolidated onto the primary
  And the merge action and actor are audit-logged

Scenario: Bulk action applies to a filtered selection
  Given a facilitator has filtered a list of tickets
  When they select multiple tickets and choose a bulk action
  Then the action is applied to all selected tickets
  And each affected ticket records the action and actor in its history

US-TKT-006 — Resolve with mandatory proof, auto-close, reopen, appeal, and CSAT [M]

As a concerned department staff member I want to resolve a ticket only after attaching evidence and a resolution note, and have the system auto-close it after the CSAT window unless the company reopens or appeals So that closures are evidence-backed and the company retains a meaningful voice.

Satisfies FR-TKT-013, FR-TKT-014, FR-TKT-015, FR-TKT-016. Aligns with the Resolution Proof Gate in _context.md §5.

Acceptance Criteria (Gherkin)

Scenario: Resolution requires evidence and a note
  Given a staff member attempts to move a ticket to "Resolved"
  When no evidence attachment and resolution note are present
  Then the transition is blocked
  And the system states which required items are missing

Scenario: Auto-close after CSAT window
  Given a ticket is in "Resolved" state with all required evidence
  When the CSAT window elapses without company action
  Then the ticket automatically transitions to "Closed"
  And the closure event, timestamp, and trigger are recorded

Scenario: Company rejects resolution
  Given a ticket is "Resolved"
  When the company representative rejects the resolution within the CSAT window
  Then the ticket reopens to its prior working state
  And the SLA clock resumes according to policy
  And the assigned staff and watchers are notified

Scenario: Company appeals a closed ticket
  Given a ticket is "Closed"
  When the company initiates an appeal
  Then an appeal record is created and routed to the next escalation tier
  And the original ticket is linked to the appeal and marked "Under Appeal"

Epic E3 — Organization & RBAC (ORG)

Goal: Model the real-world structure of both sides of the Portal — companies (with multiple authorized representatives and granular per-permission overrides) and government departments (nested dept → section → staff, with DG and Secretary oversight) — while enforcing the locked decisions in _context.md §5: five entity types with a conditional registration form, file-first/verify-in-parallel with a Provisional badge, exactly one Primary Authorized Rep per company, automated lifecycle events, step-up authentication, confidential/VIP ticket access control, and an exam-gate before staff handle live tickets. RBAC detail lives in /specs/en/04-roles-permissions/.

US-ORG-001 — Register as one of five entity types via a conditional form [M]

As a prospective IT company I want to register through a form that adapts to my entity type So that I provide only the information and documents relevant to my structure.

Satisfies FR-ORG-001.

Acceptance Criteria (Gherkin)

Scenario Outline: Conditional registration per entity type
  Given a prospective registrant selects entity type <Type>
  When the registration form renders
  Then only the fields and document requirements applicable to <Type> are shown and validated
  And the form collects the Primary Authorized Rep as a mandatory role

  Examples:
    | Type                              |
    | SECP company                      |
    | Sole proprietor / partnership     |
    | Freelancer / individual           |
    | Foreign branch                    |
    | Early startup (provisional)       |

US-ORG-002 — File-first with Provisional badge, verify-in-parallel [M]

As a newly registered company I want an instant Provisional account that lets me file tickets immediately So that I am not blocked while background verifications complete in parallel.

Satisfies FR-ORG-002, FR-ORG-003. Integrates with Epic E8 (SECP/FBR/SRB/PSEB/NADRA lookups).

Acceptance Criteria (Gherkin)

Scenario: Provisional account is granted on registration
  Given a registrant submits a complete registration
  When the submission is accepted
  Then a Provisional account is created with a "Provisional" badge
  And the account can file tickets immediately
  And background verifications (SECP/FBR/SRB/PSEB/NADRA + domain email) are queued in parallel

Scenario Outline: Verification outcome transitions the badge
  Given a Provisional account is undergoing verification
  When verifications <Result>
  Then the badge transitions to <Badge>
  And the company is notified with the reason

  Examples:
    | Result                       | Badge      |
    | all checks pass              | Verified   |
    | any check fails              | On Hold    |

Scenario: Failed verification offers an appeal
  Given a company's verification has failed
  Then the company can submit an appeal with supporting evidence
  And the appeal is routed to S&ITD for adjudication

US-ORG-003 — Manage multiple authorized representatives with exactly one Primary [M]

As a company administrator I want to add multiple authorized representatives and designate exactly one as Primary So that the right people can act for the company and there is always a single accountable contact.

Satisfies FR-ORG-004.

Acceptance Criteria (Gherkin)

Scenario: Add a representative with a role template
  Given a company administrator is managing representatives
  When they add a new representative with CNIC and domain email
  Then the representative is invited and assigned a role template (Admin, Filer, Viewer, or Notify)
  And the invitee must accept before gaining access

Scenario: Exactly one Primary Authorized Rep at all times
  Given a company has a current Primary Authorized Rep
  When the administrator transfers the Primary role to another representative
  Then the prior Primary becomes a regular representative
  And the new representative becomes the sole Primary
  And the change is audit-logged

US-ORG-004 — Role templates with granular per-permission overrides [M]

As a company administrator or department admin I want to assign role templates and then override individual permissions So that access matches each user's actual responsibilities.

Satisfies FR-ORG-005. Detail in /specs/en/04-roles-permissions/.

Acceptance Criteria (Gherkin)

Scenario: Apply a role template
  Given an administrator assigns a role template to a user
  When the assignment is saved
  Then the user receives every permission in the template

Scenario: Granular override narrows or extends a template
  Given a user holds a role template
  When the administrator toggles an individual permission
  Then the user's effective permission set is the template adjusted by the override
  And the override and actor are audit-logged
  And a denied permission is enforced even if the template would grant it

US-ORG-005 — Nested departments with DG/Secretary oversight [M]

As a Portal administrator I want to model departments as Department → Section → Staff and assign DG and Secretary oversight roles So that tickets route to the correct section while senior leadership retains visibility.

Satisfies FR-ORG-006, FR-ORG-007. Feeds the escalation ladder in _context.md §5.

Acceptance Criteria (Gherkin)

Scenario: Administrator creates a department and nested sections
  Given a Portal administrator is signed in
  When they create a department and one or more sections under it
  Then tickets can be routed to the department or to a specific section
  And the department hierarchy is reflected in routing and reporting

Scenario: Oversight roles receive notifications per escalation tier
  Given a department has an assigned DG and Secretary
  When a ticket in that department breaches the relevant SLA threshold
  Then the DG or Secretary is added as a watcher and notified according to the escalation ladder
  And their oversight power (notify-only vs action) is enforced per the department's configuration

US-ORG-006 — Automated account lifecycle on transfer, rep-change, or strike-off [M]

As a system I want to automatically deactivate or re-verify accounts when material events occur So that access stays accurate to the real-world status of the company and its representatives.

Satisfies FR-ORG-008.

Acceptance Criteria (Gherkin)

Scenario Outline: Lifecycle event triggers an account action
  Given a company account is active
  When event <Event> is detected or reported
  Then the system performs <Action>
  And open tickets are reassigned or paused per policy
  And the action is recorded in the audit log

  Examples:
    | Event                                | Action                                  |
    | Primary rep transferred              | Deactivate previous rep, notify company |
    | Authorized representative changed    | Re-verify the new rep                   |
    | Company struck off by SECP           | Deactivate company account              |

US-ORG-007 — Step-up auth, confidential/VIP ABAC, and exam-gate for staff [S]

As a security officer I want sensitive actions to require step-up authentication, confidential/VIP tickets to enforce attribute-based access, and staff to pass a certification exam before handling live tickets So that high-impact operations and sensitive data are protected by defense in depth.

Satisfies FR-ORG-009, FR-ORG-010, FR-TRN-002.

Acceptance Criteria (Gherkin)

Scenario: Sensitive action requires step-up authentication
  Given a staff member is signed in with a standard session
  When they attempt a sensitive action (e.g., closing a VIP ticket, exporting bulk PII)
  Then they are challenged for a second factor
  And the action proceeds only after successful step-up

Scenario: Confidential or VIP ticket enforces attribute-based access
  Given a ticket is marked Confidential or VIP
  When a staff member without the matching attribute attempts to open it
  Then access is denied and the attempt is logged
  And the ticket is invisible in that user's lists and search results

Scenario: Exam-gate blocks live ticket handling until certification is passed
  Given a newly onboarded staff member
  When they attempt to take ownership of a live ticket
  Then the system blocks the action until they have passed the required certification exam
  And the gate status is visible to their supervisor

Epic E4 — Files (FILE)

Goal: Provide secure, auditable file handling for both companies and departments — uploads with antivirus scanning, encryption at rest, in-app preview, versioning, time-limited secure download links, size/type limits, and linkage to retention policies. All file operations are inputs to (and outputs of) the AI OCR and summary capabilities in Epic E5 and the proof-of-resolution gate in Epic E2.

US-FILE-001 — Upload files with size and type limits [M]

As a company representative or staff member I want to upload supporting documents within enforced size and type limits So that only safe, manageable files enter the system.

Satisfies FR-FILE-001, FR-FILE-002.

Acceptance Criteria (Gherkin)

Scenario Outline: Upload succeeds within limits and fails outside them
  Given a user is uploading a file
  When the file is of type <Type> and size <Size>
  Then the upload <Result>
  And on rejection, the user is told the specific limit violated

  Examples:
    | Type            | Size   | Result           |
    | application/pdf | 5 MB   | is accepted      |
    | image/png       | 8 MB   | is accepted      |
    | application/exe | 1 KB   | is rejected      |
    | application/pdf | 250 MB | is rejected      |

US-FILE-002 — Antivirus scan and encrypted object storage [M]

As a security officer I want every uploaded file scanned by ClamAV and stored encrypted in object storage So that malware is blocked and data at rest is protected.

Satisfies FR-FILE-003, FR-FILE-004, NFR-SEC-003.

Acceptance Criteria (Gherkin)

Scenario: Clean file is stored encrypted
  Given a user uploads a file that passes ClamAV
  When the scan completes
  Then the file is written to encrypted object storage (MinIO/S3)
  And a stored record links the file to its owning ticket and uploader

Scenario: Infected file is quarantined and rejected
  Given a user uploads a file that ClamAV flags as malicious
  Then the file is quarantined, not made available for download
  And the upload is rejected with a safe error message
  And a security alert is raised and audit-logged

US-FILE-003 — In-app preview and versioning [S]

As a ticket participant I want to preview documents inline and see their version history So that I can review content without downloading and track changes over time.

Satisfies FR-FILE-005, FR-FILE-006.

Acceptance Criteria (Gherkin)

Scenario: Preview a supported file inline
  Given a ticket has an attached file in a preview-supported format
  When a participant with access opens the preview
  Then the file renders inline without requiring a download
  And participants without access cannot preview it

Scenario: New version supersedes the prior one
  Given a participant uploads a new version of an existing file
  Then the prior version is preserved as history
  And the latest version is shown as current
  And the version number, uploader, and timestamp are recorded

As a staff member I want to generate signed, expiring download links for files So that I can share evidence externally without exposing the storage layer.

Satisfies FR-FILE-007.

Acceptance Criteria (Gherkin)

Scenario: Signed link expires after its time limit
  Given a staff member generates a signed download link with a time limit
  When the recipient opens the link within the limit and from an allowed context
  Then the file downloads successfully
  And the download event is audit-logged

Scenario: Expired or tampered link is rejected
  Given a signed link has expired or been modified
  When a recipient attempts to use it
  Then the request is rejected with an "expired or invalid" response
  And the rejection is logged

US-FILE-005 — Retention policy linkage [S]

As a records officer I want each file linked to a retention policy aligned with Sindh Archives rules So that the system can preserve, archive, or purge files lawfully.

Satisfies FR-FILE-008, governance notes in /specs/en/22-governance-legal/.

Acceptance Criteria (Gherkin)

Scenario: File inherits retention from its ticket category
  Given a file is attached to a ticket of a given category
  When the file is stored
  Then a retention policy is associated based on category and document type
  And the policy is visible to records officers

Scenario: Retention action executes on schedule
  Given a file has reached its retention horizon
  When the scheduled retention job runs
  Then the file is archived or purged per policy
  And the action is recorded for compliance audit

Epic E5 — AI (11 Capabilities, Pluggable Engine)

Goal: Deliver the eleven locked AI capabilities behind a single pluggable-engine abstraction so that operators can swap providers (Azure OpenAI / Google / AWS, or self-hosted Llama/Qwen via Ollama + vLLM; Tesseract / Google Doc AI / Azure Document Intelligence / AWS Textract for OCR) per data sensitivity, and so that each capability can be enabled or disabled independently. AI augments human accountability; it never replaces a human decision gate. See /specs/en/07-ai-ocr-spec/ for full specifications.

US-AI-001 — Multilingual OCR for scanned documents (EN/UR/SD) [M]

As a staff member I want scanned documents in English, Urdu, or Sindhi to be OCRed into searchable text So that I can search, summarize, and translate evidence even when it arrives as an image.

Satisfies FR-AI-001.

Acceptance Criteria (Gherkin)

Scenario Outline: OCR extracts text in each script
  Given a scanned document is uploaded
  When the OCR pipeline runs
  Then searchable text is extracted with script <Script>
  And the extracted text is indexed for full-text search

  Examples:
    | Script      |
    | Latin (EN)  |
    | Urdu (UR)   |
    | Sindhi (SD) |

Scenario: OCR confidence is recorded
  Given OCR has run on a document
  Then a confidence score is attached to the extraction
  And low-confidence extractions are flagged for manual review

US-AI-002 — Summary, classification, and auto-routing suggestion [M]

As a facilitator I want the system to summarize each ticket, classify it, and suggest routing So that I can triage quickly and consistently.

Satisfies FR-AI-002, FR-AI-003, FR-AI-004.

Acceptance Criteria (Gherkin)

Scenario: Summary and classification are produced on intake
  Given a new ticket is submitted
  When the AI service processes it
  Then a concise summary is generated and attached
  And a category classification and a routing suggestion are proposed with confidence scores
  And the facilitator can accept, edit, or reject each

Scenario: Routing suggestion is auditable
  Given the AI proposed a routing
  When the facilitator overrides it
  Then the original suggestion, the override, and the actor are logged for model review

US-AI-003 — Urgency and sentiment scoring [S]

As a triage officer I want each ticket scored for urgency and sentiment So that time-sensitive or frustrated submitters are prioritized.

Satisfies FR-AI-005.

Acceptance Criteria (Gherkin)

Scenario: Urgency and sentiment are computed at intake and on update
  Given a ticket is submitted or updated
  When the AI service runs
  Then an urgency level and a sentiment label are attached to the ticket
  And tickets flagged as high urgency are surfaced in the triage queue

Scenario: Score influences SLA tier
  Given a ticket is scored as critical urgency
  Then it is routed to the appropriate SLA tier per policy
  And the rationale is visible to the triage officer

US-AI-004 — Draft reply suggestions and translation (EN/UR/SD) [S]

As a staff member I want AI to draft replies I can edit, and to translate correspondence between EN, UR, and SD So that I respond faster and across language barriers.

Satisfies FR-AI-006, FR-AI-009.

Acceptance Criteria (Gherkin)

Scenario: Draft reply is generated and editable
  Given a staff member opens a ticket that needs a response
  When they request a draft
  Then a context-aware draft reply is generated for review
  And the draft is clearly marked as AI-generated until edited or approved by a human
  And sending requires explicit human confirmation

Scenario: Translation is reversible and preserved
  Given a message exists in <Source>
  When the staff member requests translation to <Target>
  Then a translation is produced and shown alongside the original
  And the original is preserved unchanged

  Examples:
    | Source | Target |
    | EN     | UR     |
    | UR     | SD     |
    | SD     | EN     |

US-AI-005 — Duplicate/similarity detection and PII redaction [S]

As a facilitator and a privacy officer I want similar tickets surfaced for deflection and PII redacted before any cloud AI processing So that duplicate work is reduced and personal data is protected.

Satisfies FR-AI-007, FR-AI-010, NFR-SEC-007.

Acceptance Criteria (Gherkin)

Scenario: Similar tickets are surfaced at intake and triage
  Given a new ticket is submitted
  When the similarity service runs
  Then similar open and resolved tickets are listed with similarity scores
  And the facilitator can link, merge, or use them for deflection

Scenario: PII is redacted before cloud processing
  Given a document or message is routed to a cloud-hosted AI provider
  When it leaves the trust boundary
  Then detected PII (CNIC, phone, email, etc.) is masked or tokenized
  And the redaction map is retained on-prem so the original can be restored on return

US-AI-006 — Public chatbot with human handoff, trends/analytics, and MoM action extraction [S]

As a visitor, a leadership user, and a meeting officer I want an AI chatbot for public guidance, AI-driven trends and analytics, and AI extraction of action items from uploaded Minutes of Meeting So that self-service, oversight, and meeting follow-through are all accelerated.

Satisfies FR-AI-008, FR-AI-011, FR-AI-012. MoM flow aligns with Epic E13 (Part 2).

Acceptance Criteria (Gherkin)

Scenario: Chatbot hands off to a human facilitator
  Given a visitor is in a chatbot session that exceeds the bot's confidence or scope
  When the bot offers handoff and the visitor accepts
  Then a live facilitator session or ticket is created
  And the transcript is attached for continuity

Scenario: Trends and analytics are generated from ticket data
  Given the analytics pipeline runs on a schedule
  When leadership opens the analytics dashboard
  Then AI-generated trend insights are displayed (e.g., rising categories, bottleneck departments)
  And each insight links to the underlying metric

Scenario: MoM upload yields structured action items
  Given a meeting officer uploads a Minutes of Meeting document
  When the AI service processes it
  Then action items with owners and due dates are extracted for officer confirmation
  And on confirmation, each action item becomes a sub-task linked to the source ticket

US-AI-007 — Pluggable engine abstraction with per-feature enable flags [M]

As a Platform Operator I want every AI capability behind a single interface with swappable engines and per-feature enable flags So that I can choose providers per data sensitivity and turn features on or off without code changes.

Satisfies FR-AI-013, FR-FFG-001.

Acceptance Criteria (Gherkin)

Scenario Outline: Engine selection is configurable per capability
  Given the platform supports engines <Engine>
  When the operator selects an engine for capability <Capability>
  Then that capability executes against the selected engine
  And switching engines requires no code change

  Examples:
    | Capability | Engine options                                              |
    | LLM        | Azure OpenAI / Google / AWS / self-hosted Llama or Qwen    |
    | OCR        | Tesseract / Google Doc AI / Azure Document Intelligence / AWS Textract |

Scenario: Per-feature flag disables a capability gracefully
  Given an operator disables a feature flag for an AI capability
  When a user attempts to invoke that capability
  Then the capability is hidden or returns a controlled "unavailable" response
  And all dependent flows degrade gracefully
  And no error is exposed to end users

Epic E6 — Internal Communications (COM, Three Tiers)

Goal: Provide staff-only internal communications in three escalating tiers — (1) ticket-scoped private threads tightly coupled to a ticket's lifecycle, (2) an org-wide inbox for one-to-one and group direct messages across any staff, DG, or Secretary, and (3) a full channel-based chat experience (Slack-style: channels per department/topic plus ad-hoc channels, threaded conversations, pins, presence, typing indicators, read receipts, and full-text search). Every message across all three tiers is audit-logged and retained per the records policy.

US-COM-001 — Tier 1: Ticket-scoped private threads [M]

As a ticket's assigned staff and watchers I want a private discussion thread attached to the ticket So that our coordination is captured in context and preserved with the ticket record.

Satisfies FR-COM-001, FR-COM-002.

Acceptance Criteria (Gherkin)

Scenario: Thread is scoped to ticket participants
  Given a ticket with assigned staff and watchers
  When a participant posts a message with an @mention and an attachment
  Then the message is visible only to ticket participants
  And the mentioned user receives a notification
  And the message and attachment are retained with the ticket

Scenario: Thread cannot leave the ticket context
  Given a private thread exists on a ticket
  Then its messages are not visible from any other ticket or from Tiers 2 or 3
  And messages are removed from a participant's view if their access is revoked

US-COM-002 — Tier 2: Org-wide inbox (1:1 and group DMs) [S]

As a staff member I want to send direct messages to any other staff, DG, or Secretary, individually or in a group So that I can coordinate across departments without leaving the Portal.

Satisfies FR-COM-003.

Acceptance Criteria (Gherkin)

Scenario: Direct message across departments
  Given a staff member in department A
  When they start a direct message with a staff member, DG, or Secretary in department B
  Then the conversation is created in the org-wide inbox
  And only the named participants can see it
  And all messages are retained and audit-logged

Scenario: Group DM admits new participants with history policy
  Given an existing group DM
  When a participant is added
  Then the new participant's visibility of prior history follows the configured history-sharing policy
  And the addition is logged

US-COM-003 — Tier 3: Channel-based chat with threads and pins [C]

As a department team I want persistent channels per department or topic, plus ad-hoc channels, threaded replies, and pinned messages So that our conversations are organized and discoverable.

Satisfies FR-COM-004, FR-COM-005.

Acceptance Criteria (Gherkin)

Scenario: Department channel is created and joined
  Given a department exists
  When an administrator creates a department channel
  Then members of that department are auto-joined
  And other staff can request to join per policy

Scenario: Threaded reply and pin
  Given a message exists in a channel
  When a participant replies in a thread or pins the message
  Then the threaded reply is grouped under the parent
  And the pinned message appears in the channel's pinned list
  And both actions are audit-logged

US-COM-004 — Presence, typing, read receipts, and full-text search [S]

As a chat participant I want presence, typing indicators, read receipts, and full-text search across my accessible messages So that I can communicate in real time and find past messages quickly.

Satisfies FR-COM-006.

Acceptance Criteria (Gherkin)

Scenario: Real-time signals reflect participant activity
  Given two participants are in an active conversation
  When one types or reads a message
  Then the other sees typing and read-receipt indicators in real time
  And presence shows each participant's online/away status

Scenario: Search returns only accessible messages
  Given a participant searches for a keyword
  When the search executes
  Then results include only messages from channels, DMs, and threads they can access
  And Urdu and Sindhi keywords are matched correctly via the multilingual search engine

US-COM-005 — Audit logging and retention of all messages [M]

As a compliance officer I want every message across all three tiers audit-logged and retained per policy So that the Portal's internal communications are auditable and lawful.

Satisfies FR-COM-007, NFR-SEC-008.

Acceptance Criteria (Gherkin)

Scenario: Every message is logged at send time
  Given a participant sends a message in any tier
  When the message is sent
  Then an audit record captures sender, recipients, timestamp, channel or ticket, and content hash
  And the record cannot be altered by the sender

Scenario: Retention policy governs lifespan
  Given messages exist across the three tiers
  When the retention horizon for a tier is reached
  Then messages are archived or purged per the records policy
  And the action is logged for compliance

Epic E7 — Notifications (NOT)

Goal: Deliver templated, multilingual notifications across email (Mailjet), SMS, WhatsApp, and in-app channels, with two-way inbound replies that append to the originating ticket, a preference center for digests, quiet hours, and per-channel opt-outs, and rate limiting to prevent abuse and channel fatigue. Notifications are the connective tissue that ties every other module to the user's attention.

US-NOT-001 — Multichannel delivery (email, SMS, WhatsApp, in-app) [M]

As a user (representative or staff) I want notifications delivered through my available channels So that I learn about ticket activity wherever I am.

Satisfies FR-NOT-001.

Acceptance Criteria (Gherkin)

Scenario Outline: Notification is delivered on each enabled channel
  Given a notification event occurs for a user
  When the user has channel <Channel> enabled
  Then the notification is delivered via <Channel>
  And delivery status is recorded

  Examples:
    | Channel   |
    | Email     |
    | SMS       |
    | WhatsApp  |
    | In-app    |

Scenario: Channel failure triggers fallback
  Given a primary channel delivery fails
  Then the system retries per policy
  And after exhausting retries, it attempts a configured fallback channel
  And the failure and fallback are logged

US-NOT-002 — Templated and multilingual notifications [M]

As a localization owner I want every notification rendered from versioned templates in EN, UR, and SD So that messages are consistent, on-brand, and language-correct.

Satisfies FR-NOT-002.

Acceptance Criteria (Gherkin)

Scenario: Template renders in the recipient's preferred language
  Given a notification event occurs
  When the recipient's preferred language is <Lang>
  Then the message is rendered from the template in <Lang>
  And variables (ticket ID, names, dates) are substituted correctly
  And dates display in both Gregorian and Hijri per convention

  Examples:
    | Lang |
    | EN   |
    | UR   |
    | SD   |

Scenario: Template change is versioned
  Given an editor updates a notification template
  Then the prior version is preserved
  And the change, editor, and timestamp are recorded

US-NOT-003 — Two-way inbound replies (email and WhatsApp append to ticket) [S]

As a Company Representative I want to reply directly to an email or WhatsApp notification and have it appended to my ticket So that I can respond without signing in.

Satisfies FR-NOT-003.

Acceptance Criteria (Gherkin)

Scenario: Email reply appends to the originating ticket
  Given a representative received a ticket notification email
  When they reply to that email
  Then the reply body and any attachments are appended as a comment on the originating ticket
  And the assigned staff and watchers are notified
  And the append event is logged

Scenario: Inbound message fails closed when no ticket can be resolved
  Given an inbound reply cannot be matched to a ticket or sender
  Then the system holds it for review rather than discarding
  And a facilitator is notified of the unmatched inbound

US-NOT-004 — Preference center: digests, quiet hours, per-channel opt-out [M]

As a user I want to choose how, when, and how often I am notified So that I get useful alerts without being overwhelmed.

Satisfies FR-NOT-004.

Acceptance Criteria (Gherkin)

Scenario: User configures a digest
  Given a user opens the preference center
  When they select a daily or weekly digest for non-urgent events
  Then non-urgent notifications are batched into the chosen digest
  And urgent events still send immediately

Scenario: Quiet hours suppress non-urgent notifications
  Given a user has set quiet hours
  When a non-urgent notification falls within those hours
  Then it is held and delivered when quiet hours end
  And urgent notifications bypass quiet hours per policy

Scenario: Per-channel opt-out is honored
  Given a user disables a channel
  When a notification would otherwise use that channel
  Then it is not delivered on the disabled channel
  And the user's preference is logged

US-NOT-005 — Rate limiting and throttling [M]

As a Platform Operator I want outbound and inbound notifications rate-limited So that the system is not abused and channels are not exhausted.

Satisfies FR-NOT-005, NFR-SEC-009.

Acceptance Criteria (Gherkin)

Scenario: Outbound rate limiting protects channels
  Given a burst of notifications targets a single recipient or domain
  When the rate exceeds the configured limit
  Then excess notifications are queued or coalesced
  And no channel rate cap is breached

Scenario: Inbound abuse is throttled
  Given repeated inbound replies from the same source in a short window
  When the threshold is exceeded
  Then further inbound from that source is throttled
  And the event is flagged for review

Epic E8 — Integrations (INT)

Goal: Connect the Portal to the external systems it depends on for verification, lookup, official file movement, and identity — NADRA (CNIC verify), SECP (company lookup), FBR (NTN), SRB, PSEB, the NITB e-Office for ticket/MoM-to-file-movement, OIDC single sign-on for government staff, and a public REST API with outbound webhooks for downstream consumers. All integrations are built behind an adapter pattern with idempotency, retries, and circuit breakers so that a downstream outage degrades gracefully rather than failing the user flow. Detailed contracts live in /specs/en/08-integrations-spec/ and /specs/en/12-api-contract/.

US-INT-001 — NADRA CNIC verification [M]

As a registration and verification service I want to verify a representative's CNIC against NADRA So that identity claims are trustworthy before account activation.

Satisfies FR-INT-001.

Acceptance Criteria (Gherkin)

Scenario: CNIC verification returns a deterministic result
  Given a representative has supplied a CNIC
  When the NADRA adapter is invoked
  Then a verified, not-verified, or unable-to-verify result is returned
  And the result, timestamp, and request reference are stored on the representative's record

Scenario: NADRA outage degrades gracefully
  Given the NADRA service is unavailable
  When verification is attempted
  Then the circuit breaker opens after configured failures
  And the registration flow places the account in a "verification pending" state
  And retries resume when the service recovers

US-INT-002 — SECP, FBR, SRB, and PSEB entity lookups [M]

As a verification service I want to look up company registration, tax, and industry-body status across SECP, FBR/NTN, SRB, and PSEB So that the file-first/verify-in-parallel flow can confirm or flag a company.

Satisfies FR-INT-002, FR-ORG-002.

Acceptance Criteria (Gherkin)

Scenario Outline: Each registry lookup enriches the verification record
  Given a company has submitted registration details
  When the <Registry> adapter is invoked with the company's identifier
  Then a normalized lookup result is stored against the verification record
  And the result feeds the parallel verification workflow

  Examples:
    | Registry |
    | SECP     |
    | FBR/NTN  |
    | SRB      |
    | PSEB     |

Scenario: Conflicting results flag the verification
  Given two or more registries return conflicting status
  Then the verification is flagged for manual review
  And the discrepancies are visible to the adjudicator

US-INT-003 — NITB e-Office file movement [S]

As a department officer I want ticket and MoM artifacts to flow into NITB e-Office as official file movements So that Portal activity is recorded in the government's official record system.

Satisfies FR-INT-003.

Acceptance Criteria (Gherkin)

Scenario: Ticket resolution creates an e-Office file movement
  Given a ticket is resolved with proof-of-resolution attached
  When the integration is enabled for the concerned department
  Then a file movement record is created in NITB e-Office
  And the e-Office reference is stored on the ticket
  And the creation is audit-logged

Scenario: Outage does not block the Portal
  Given NITB e-Office is unavailable
  When a file movement is attempted
  Then the movement is queued and retried
  And the Portal ticket flow is not blocked
  And recovery reconciles pending movements idempotently

US-INT-004 — OIDC single sign-on for government staff [M]

As a government staff member I want to sign in once via OIDC and access the Portal without a separate password So that access aligns with my department's identity provider and 2FA policy.

Satisfies FR-INT-004.

Acceptance Criteria (Gherkin)

Scenario: Staff signs in via the department identity provider
  Given a staff member arrives at the Portal sign-in
  When they choose SSO
  Then they are redirected to the OIDC provider
  And on successful authentication, they are signed in to the Portal
  And their group and role claims are applied

Scenario: Step-up 2FA is enforced for sensitive sessions
  Given the identity provider enforces 2FA
  When the staff member accesses a sensitive area
  Then the second factor is required per provider policy
  And the session is marked as step-up-authenticated

US-INT-005 — Public REST API and outbound webhooks (adapter, idempotency, retries, circuit breakers) [S]

As a downstream consumer (analytics platform, partner department, or integration partner) I want a versioned public REST API and the ability to subscribe to outbound webhooks So that I can build automation on top of Portal events safely.

Satisfies FR-INT-005, FR-INT-006.

Acceptance Criteria (Gherkin)

Scenario: API request is authenticated and idempotent
  Given a partner holds valid API credentials
  When they submit a request with an idempotency key
  Then the request is processed once even if retried
  And responses follow the published API contract and version

Scenario Outline: Webhooks deliver with retries and a circuit breaker
  Given a partner has subscribed to <Event> webhooks
  When the event occurs
  Then a signed webhook is delivered to the registered endpoint
  And on failure, retries follow an exponential backoff up to the configured limit
  And repeated failures open the circuit breaker and pause delivery

  Examples:
    | Event                 |
    | ticket.created        |
    | ticket.resolved       |
    | mom.published         |

Scenario: Webhook payload is verifiable
  Given a partner receives a webhook
  Then the payload includes a signature the partner can verify
  And replay attacks are prevented by timestamp validation
## Epic E9 — Analytics (ANL)

**Goal.** Deliver the nine analytics metric families (volume/throughput, speed, SLA/escalation, quality/outcome, department/staff performance, AI module metrics, engagement/comms, governance/compliance, public transparency) through seven role-scoped dashboards with drill-down, filters, comparative views, scheduled digests, exports, GIS heatmap, anomaly/SLA-breach prediction, saved views, and embeddable widgets — backed by Metabase plus custom ECharts/Recharts.

### US-ANL-001 — Role-scoped analytics dashboard  [M]

**As a** user in any of the seven roles (Super Admin, Dept Admin, DG, Officer, Secretary, Minister/SACM, Company, Public)
**I want** a dashboard tailored to my role showing only the metrics relevant to me
**So that** I can act on the right information without being overwhelmed or exposed to data outside my scope.

#### Acceptance Criteria (Gherkin)

```gherkin
Scenario: Officer sees personal workload and per-shift KPIs
  Given an Officer is logged in to the S&ITD facilitation desk
  When they open their dashboard
  Then they see their open ticket count, average resolution time, SLA-at-risk list, and per-shift throughput
  And they do not see other officers' individually-identifiable performance scores

Scenario: Minister/SACM sees province-wide aggregate KPIs
  Given the Minister/SACM opens the executive dashboard
  When the dashboard renders
  Then they see province-wide volume, FRT/TAT trends, escalation summary, CSAT trend, and department leaderboard
  And all figures respect their oversight scope (notify-only vs action) per department configuration

US-ANL-002 — Drill-down, filter & comparative analysis [M]

As a Dept Admin I want to drill from a summary KPI into individual tickets, filter by department/section/category/date/district/severity, and compare two periods or two departments side by side So that I can investigate root causes of SLA breaches and quality dips.

Acceptance Criteria (Gherkin)

Scenario: Drill from breach summary to ticket list
  Given a Dept Admin views the SLA-breach-by-department chart
  When they click a department bar
  Then a filtered ticket list opens showing every breached ticket for that department in the selected period
  And the same filters can be saved as a named view

US-ANL-003 — Scheduled digests per role cadence [M]

As a senior official I want analytics digests delivered on a role-appropriate schedule (Secretary daily, Minister weekly, Dept Admin daily, DG daily, Officers per-shift) So that I stay informed without logging in constantly, and each digest is configurable.

Acceptance Criteria (Gherkin)

Scenario: Default digest cadences are pre-configured but overridable
  Given the digest scheduler runs with defaults
  Then Secretary receives a daily digest, Minister a weekly digest, Dept Admin a daily digest, DG a daily digest, and Officers a per-shift digest
  And each recipient can change their cadence, channels (email/in-app/SMS/WA), and quiet hours in their preference center

Scenario: Digest is delivered in the recipient's preferred language
  Given a DG has selected Urdu as their preferred language
  When the daily digest is generated
  Then the digest body, KPI labels, and chart legends are rendered in Urdu (RTL)

US-ANL-004 — Export analytics to PDF/Excel/CSV [M]

As a Secretary I want to export any dashboard or chart as PDF, Excel, or CSV So that I can attach figures to briefings, audit records, and Assembly questions.

Acceptance Criteria (Gherkin)

Scenario: Export a dashboard with applied filters
  Given a Secretary has applied a date range and department filter to a dashboard
  When they choose "Export as PDF"
  Then a PDF is generated reflecting the same filters, charts, and data tables
  And the export is audit-logged with the user, scope, and timestamp

US-ANL-005 — Public transparency dashboard (anonymized) [M]

As a member of the public I want to view an anonymized transparency dashboard showing aggregate volumes, resolution rates, average resolution times, and department performance — without exposing any company or individual identity So that I can trust the system is delivering and hold departments accountable.

Acceptance Criteria (Gherkin)

Scenario: Public dashboard exposes no PII
  Given the public transparency dashboard is rendered for an anonymous visitor
  When any chart or its underlying data is inspected
  Then no company name, individual name, ticket ID, or free-text content is exposed
  And small-cell suppression is applied so any group with fewer than the configured minimum size is hidden

US-ANL-006 — GIS district heatmap & SLA-breach prediction [S]

As a Super Admin I want a GIS district heatmap of ticket origin and resolution performance, plus anomaly detection and SLA-breach prediction alerts So that I can target under-served districts and intervene before tickets breach.

Acceptance Criteria (Gherkin)

Scenario: Predicted breach triggers a proactive alert
  Given the prediction model estimates a ticket will breach its SLA within the next 24 hours
  When the estimate crosses the confidence threshold
  Then an alert is raised to the assigned Officer, their DG (watcher), and the Dept Admin digest

Epic E10 — Knowledge Base + SOP (KB)

Goal. Provide a self-service Knowledge Base with articles, downloadable forms, versioned SOPs, AI semantic search, "was this helpful" feedback, deflection tracking, and a service catalog — governed by an authoring workflow with editorial review.

US-KB-001 — Browse & semantic-search KB articles, SOPs and forms [M]

As a Company Representative or public visitor I want to search the Knowledge Base in my own words (including Urdu/Sindhi) and find articles, versioned SOPs, and downloadable forms So that I can resolve common questions myself without filing a ticket.

Acceptance Criteria (Gherkin)

Scenario: Semantic search returns relevant trilingual results
  Given a visitor enters a natural-language query in Sindhi
  When the search runs
  Then ranked results are returned from articles, SOPs, and forms matching intent (not just keywords)
  And each result shows title, summary, language, and last-updated date

Scenario: Downloading a form requires no login
  Given a visitor finds a downloadable form in the service catalog
  When they click download
  Then the latest published version is delivered without requiring authentication

US-KB-002 — KB authoring workflow with editorial review [M]

As a KB Author I want to draft articles and SOPs, submit them for editorial review, and have versions tracked So that only reviewed, current content reaches the public.

Acceptance Criteria (Gherkin)

Scenario: Draft → Review → Publish lifecycle
  Given a KB Author completes a draft SOP
  When they submit it for review
  Then the article moves to "In Review" and a KB Editor is notified
  And on approval the article is published as a new version while prior versions remain archived and accessible

Scenario: Outdated article is flagged for review
  Given a published article has not been reviewed in the configured freshness window
  When the window expires
  Then the article is flagged "Needs Review" and its Authors are notified

US-KB-003 — Deflection tracking & "was this helpful" feedback [S]

As a Dept Admin I want to track article helpfulness and ticket deflection (tickets avoided because the user found the answer) So that I can invest in content that reduces avoidable tickets.

Acceptance Criteria (Gherkin)

Scenario: Helpful vote and deflection are attributed
  Given a visitor views an article surfaced by search
  When they vote "Yes, this was helpful" and does not proceed to file a ticket
  Then a positive helpfulness vote is recorded and a deflection event is attributed to that article

Epic E11 — Multi-channel Intake (MCI)

Goal. Let companies and citizens raise tickets through any channel — email, SMS, WhatsApp, toll-free IVR/voice, or walk-in/offline entry by staff — with automatic deduplication against existing tickets.

US-MCI-001 — Email-to-ticket intake [M]

As a Company Representative I want to send an email to the facilitation desk address and have it become a tracked ticket So that I can raise issues from my normal email workflow.

Acceptance Criteria (Gherkin)

Scenario: Inbound email creates a ticket
  Given an inbound email arrives at the facilitation desk mailbox from a verified sender
  When the intake pipeline processes it
  Then a ticket is created with subject as title, body as description, and attachments preserved
  And a confirmation reply is sent carrying the new tracking ID

Scenario: Reply on an existing thread appends to the ticket
  Given an inbound email references an existing ticket ID in subject or reply headers
  When the pipeline processes it
  Then the email body and attachments are appended as a comment on that ticket, not a new ticket

US-MCI-002 — WhatsApp & SMS-to-ticket intake [M]

As a Company Representative I want to send a message to the official WhatsApp or SMS number and have it raise or update a ticket So that I can use the channel I am most comfortable with.

Acceptance Criteria (Gherkin)

Scenario: WhatsApp message with attachment creates a ticket
  Given a verified contact sends a WhatsApp message with a photo to the official number
  When the message is processed
  Then a ticket is created with the message text and the image attached (AV-scanned)
  And the contact receives a WhatsApp confirmation with the tracking ID

Scenario: Two-way SMS keeps the thread on the ticket
  Given a contact replies by SMS to a ticket notification
  When the reply is received
  Then it is appended as a comment on the originating ticket

US-MCI-003 — Toll-free IVR / voice intake [S]

As a a citizen without internet access I want to call a toll-free number, navigate an IVR, optionally leave a voice recording, and have an agent or speech-to-text convert it into a ticket So that I can raise issues even when I cannot read or type.

Acceptance Criteria (Gherkin)

Scenario: Voice recording becomes a ticket
  Given a caller selects the "register a complaint" IVR option and leaves a voice recording
  When the recording is transcribed (with AI fallback to manual entry)
  Then a ticket is created with the transcript as description and the audio attached
  And the caller receives an SMS with the tracking ID

US-MCI-004 — Walk-in / offline intake by staff with dedup [M]

As a front-desk Officer I want to enter a walk-in complaint on behalf of a visitor, and have the system check for duplicates across channels before creating a new ticket So that the same issue is not tracked multiple times.

Acceptance Criteria (Gherkin)

Scenario: Duplicate detected across channels
  Given a visitor already emailed a complaint about an issue
  When the front-desk Officer enters a walk-in ticket with similar content from the same contact
  Then the system surfaces the existing ticket as a likely duplicate
  And the Officer can choose to merge, link, or proceed as a new ticket, with the choice audit-logged

Scenario: Offline entry syncs when connectivity returns
  Given an Officer enters a ticket while offline
  When connectivity is restored
  Then the ticket is synced with the correct timestamp preserved as the original entry time

Epic E12 — Document Generation + e-Sign (DOC)

Goal. Generate trilingual official letters and resolution certificates on government letterhead, PKI-digitally sign them, and attach a verifiable QR code so recipients and third parties can confirm authenticity — using the official-in-office as of the document date.

US-DOC-001 — Generate trilingual official letters & resolution certificates [M]

As an Officer I want to generate an official letter or resolution certificate on S&ITD (or concerned department) letterhead in English, Urdu, or Sindhi So that correspondence with companies and other departments is formal, branded, and consistent.

Acceptance Criteria (Gherkin)

Scenario: Generate a resolution certificate from a ticket
  Given a ticket is in Resolved state with proof-of-resolution evidence attached
  When the Officer chooses "Generate Resolution Certificate"
  Then a trilingual-ready document is produced on letterhead with ticket ID, company details, resolution summary, and the official-in-office as of today
  And the document is saved as a versioned attachment on the ticket

Scenario: Letter language follows recipient preference unless overridden
  Given a company's preferred language is Sindhi
  When an Officer generates a letter without specifying language
  Then the letter renders in Sindhi (RTL) by default, with the Officer able to switch languages before signing

US-DOC-002 — PKI digital signing of official documents [M]

As an authorized signatory (Secretary / DG / designated Officer) I want to digitally sign generated documents using a PKI credential So that recipients can cryptographically verify the document was issued by the stated authority and has not been tampered with.

Acceptance Criteria (Gherkin)

Scenario: Signing produces a verifiable signature
  Given an authorized signatory opens an unsigned letter and authenticates their PKI credential (with 2FA)
  When they sign the document
  Then a PKI digital signature is applied with certificate metadata (signer DN, timestamp, validity period)
  And the signed document is immutable thereafter

US-DOC-003 — QR verification of letters (anti-forgery) [M]

As a recipient or third party I want to scan or look up the QR code on an official letter and confirm whether it is genuine and unmodified So that I cannot be defrauded by forged government correspondence.

Acceptance Criteria (Gherkin)

Scenario: Genuine letter verifies successfully
  Given a recipient scans the QR code on a signed letter
  When the verification portal resolves the code
  Then a public page confirms issuance date, signing authority, ticket reference, and current document status, and that the file hash matches

Scenario: Tampered or unknown QR is rejected
  Given a QR code resolves to no record or to a record whose hash differs from the presented file
  When the verification portal checks it
  Then the page displays a clear "Could not verify" warning and logs the attempt

Epic E13 — Hearings + TRI + MoM (MTG)

Goal. Enable tripartite (Company + S&ITD + Department) meetings in physical, virtual, or hybrid form with AI-drafted agendas, then capture Minutes of Meeting via an upload-first workflow where OCR + AI extract structured action items that become sub-tasks, with a sensitive/VIP approval gate, auto-share to participants, acknowledgment tracking, and full versioning/audit.

US-MTG-001 — Request & schedule a TRI meeting (hybrid) [M]

As an Officer or DG I want to request a tripartite meeting from a stalled ticket and schedule it as physical, virtual, or hybrid So that all three parties can resolve the issue together.

Acceptance Criteria (Gherkin)

Scenario: Hybrid TRI meeting is scheduled
  Given a ticket is stalled and an Officer selects "Request TRI Meeting"
  When they add the Company rep, the concerned Department rep(s), and an S&ITD facilitator, and choose "Hybrid"
  Then a meeting record is created linked to the ticket with location, virtual link (Zoom/Meet/Teams as configured), date/time, and participants

Scenario: Participants cannot be missing
  Given a TRI request omits the concerned Department representative
  When the Officer tries to confirm
  Then the system blocks confirmation and prompts for the missing party

US-MTG-002 — AI-drafted agenda + calendar invites & reminders [M]

As the S&ITD facilitator I want the system to draft an agenda from the ticket history and uploads, send calendar invites, and send reminders to all participants So that the meeting is productive and well-attended.

Acceptance Criteria (Gherkin)

Scenario: Agenda is drafted and editable
  Given a TRI meeting is created from a ticket
  When the facilitator opens the meeting
  Then an AI-drafted agenda is presented summarizing history, open questions, and uploaded evidence
  And the facilitator can edit the agenda before sending invites

US-MTG-003 — MoM upload-first with OCR + AI action-item extraction [M]

As an Officer I want to upload the MoM in the department's own format (PDF/Word/images), have OCR and AI extract structured action items (owners + due dates) and a summary, then confirm before publishing So that minutes are captured faithfully while still becoming structured, trackable data.

Acceptance Criteria (Gherkin)

Scenario: Scanned MoM is OCRed and action items extracted
  Given an Officer uploads a scanned PDF MoM
  When processing completes
  Then OCR (with multilingual support) extracts the text, AI proposes a summary, and a list of action items each with owner and due date is presented for confirmation

Scenario: Officer confirms or corrects extracted items
  Given AI-proposed action items are displayed
  When the Officer reviews them
  Then they can edit owner, due date, and text, remove false positives, or add missed items, before confirming

US-MTG-004 — Confirmed action items become ticket sub-tasks [M]

As an Officer I want each confirmed MoM action item to become a sub-task on the originating ticket, assigned to its owner with a due date So that commitments made in the meeting are tracked to completion like any other work item.

Acceptance Criteria (Gherkin)

Scenario: Action items spawn sub-tasks
  Given the Officer confirms the action-item list
  When they publish (or, for sensitive/VIP, when approval is granted)
  Then each action item creates a sub-task on the ticket assigned to the stated owner with the stated due date
  And the sub-tasks appear on the owner's dashboard and SLA tracking

US-MTG-005 — Sensitive/VIP approval gate, publish & auto-share with acknowledgment [M]

As a Chair or DG I want MoMs on sensitive/VIP tickets to require my approval before publishing, and on publish to auto-share to all participants with acknowledgment tracking So that sensitive content is controlled and all parties are demonstrably informed.

Acceptance Criteria (Gherkin)

Scenario: Sensitive ticket MoM requires approval
  Given the ticket is flagged Sensitive or VIP
  When the Officer tries to publish the MoM
  Then the system routes the MoM to the Chair/DG for approval and blocks auto-share until approved

Scenario: Publish auto-shares and tracks acknowledgments
  Given a MoM is published (directly or after approval)
  When publish completes
  Then all participants receive the MoM via email, in-app, SMS, and WhatsApp
  And the system records each participant's acknowledgment (or non-acknowledgment after the reminder window)
  And the MoM is permanently attached, versioned, and audit-logged on the ticket

As a facilitator I want to capture explicit consent before recording a virtual meeting, and to translate the MoM and action items across EN/UR/SD So that recordings are lawful and participants can read minutes in their preferred language.

Acceptance Criteria (Gherkin)

Scenario: Recording cannot start without consent
  Given a virtual meeting is about to be recorded
  When the host clicks record
  Then every connected participant is prompted for consent, and recording proceeds only after all required participants consent

Epic E14 — Suggestion & Content Portal (SUG)

Goal. Provide a suggestion box for ideas (distinct from complaints), broadcast circulars and announcements, host a versioned document repository, and apply moderation.

US-SUG-001 — Public suggestion box (ideas, not complaints) [M]

As a Company Representative or citizen I want to submit a suggestion or idea (separate from the complaints/ticket flow), optionally anonymously So that I can contribute improvements without it being treated as a grievance.

Acceptance Criteria (Gherkin)

Scenario: Anonymous suggestion is accepted
  Given a visitor chooses "Submit anonymously"
  When they submit a suggestion
  Then the suggestion is stored with no identity linkage, moderated, and considered for the public ideas board
  And the system rate-limits submissions to deter spam

Scenario: Identified suggestion is acknowledged
  Given a logged-in company rep submits a suggestion with contact details
  When submission completes
  Then they receive an acknowledgment and a reference they can use to track status

US-SUG-002 — Circulars & announcements broadcast [M]

As a Super Admin or Dept Admin I want to publish circulars and announcements that broadcast to relevant audiences (all companies, a department, a segment) So that authoritative information reaches the right people.

Acceptance Criteria (Gherkin)

Scenario: Targeted broadcast
  Given an Admin composes a circular and selects audience "All SECP-registered companies in IT sector"
  When they publish
  Then the circular is delivered via in-app banner and chosen channels (email/SMS/WA) to the selected audience, and archived in the content portal

US-SUG-003 — Versioned document repository with moderation [S]

As a Content Editor I want a versioned document repository with a moderation queue for user-submitted content So that only approved, current documents are publicly visible and history is preserved.

Acceptance Criteria (Gherkin)

Scenario: New version supersedes the old
  Given an editor uploads a new version of an existing repository document
  When they publish
  Then the new version becomes current, the previous version is archived but accessible, and a changelog entry is recorded

Epic E15 — Training & Certification (TRN)

Goal. Provide an LMS-lite where staff complete training courses and quizzes, earn exam-gated certifications required before handling live tickets, and re-certify before expiry.

US-TRN-001 — Staff training courses & quizzes [M]

As a Staff Officer I want to enroll in training courses, consume content, and take quizzes So that I am prepared to handle facilitation desk duties to standard.

Acceptance Criteria (Gherkin)

Scenario: Course completion is recorded
  Given an Officer completes all modules of a course and passes its quiz at or above the pass mark
  When the final quiz is submitted
  Then completion is recorded against their profile with score and timestamp

US-TRN-002 — Exam-gated certification before handling live tickets [M]

As a Super Admin I want to require that an Officer passes the certification exam before they can be assigned any live ticket So that only qualified staff interact with companies.

Acceptance Criteria (Gherkin)

Scenario: Uncertified officer cannot receive assignments
  Given an Officer has not passed the required certification exam
  When auto-routing or manual assignment attempts to assign them a live ticket
  Then the assignment is blocked and a message explains the certification requirement

Scenario: Passing the exam unlocks assignment
  Given the same Officer subsequently passes the certification exam
  When assignment is next attempted
  Then the Officer becomes eligible and the assignment proceeds

US-TRN-003 — Certification expiry & re-certification [S]

As a Dept Admin I want certifications to expire on a defined cadence and require re-certification, with advance warnings So that staff knowledge stays current.

Acceptance Criteria (Gherkin)

Scenario: Expiry warning and grace handling
  Given an Officer's certification expires in 14 days
  When the warning threshold is reached
  Then reminders are sent to the Officer and their Dept Admin
  And if not re-certified by expiry, the Officer is moved to read-only ticket access until they pass again

Epic E16 — Brand & Officials CMS (OFC)

Goal. Manage dynamic records for Minister, Secretary, and DG (name, photo, effective dates, message) that propagate to the site, letters, and dashboards; guarantee historical accuracy through date-aware letterheads; and provide a media library, brand/theme config, and an approval workflow.

US-OFC-001 — Dynamic officials records CMS [M]

As a Brand Editor I want to create and maintain records for the Minister, Secretary, and DG including name, photo, effective dates, and message So that the right official appears across the portal at all times.

Acceptance Criteria (Gherkin)

Scenario: Effective-dated record activates automatically
  Given a new DG record has an effective date of tomorrow
  When that date arrives
  Then the new DG becomes the current official across the public site, letters, and dashboards, and the previous DG moves to historical records

US-OFC-002 — Date-aware letterhead for historical accuracy [M]

As an Officer I want letters and certificates to display the officials who were in office on the document's effective date, even when re-generated later So that historically accurate correspondence cannot be silently re-attributed to current officials.

Acceptance Criteria (Gherkin)

Scenario: Regenerated letter retains historical officials
  Given a letter was originally issued on a date when a different Secretary was in office
  When the letter is regenerated or re-printed months later
  Then the letterhead still shows the official who held the role on the original effective date

US-OFC-003 — Media library & brand/theme configuration [S]

As a Brand Editor I want a central media library and configurable brand/theme (colors, logo lockup, Ajrak motifs) So that visual identity is consistent and updatable in one place.

Acceptance Criteria (Gherkin)

Scenario: Theme change propagates
  Given a Brand Editor updates the primary theme color
  When the change is approved and published
  Then the new theme applies across the public site and staff portal on next render, with the previous theme versioned

US-OFC-004 — Officials approval workflow & propagation [M]

As a Super Admin I want changes to senior-official records to go through an approval workflow before propagating So that no single user can unilaterally change who appears as Minister/Secretary/DG.

Acceptance Criteria (Gherkin)

Scenario: Change requires approval
  Given a Brand Editor submits a change to the Minister record
  When they save
  Then the change is queued for Super Admin approval and does not propagate until approved

Scenario: Approved change propagates atomically
  Given an official-record change is approved
  When approval completes
  Then the change propagates to the public site, letters, and dashboards in a single transaction, and the propagation is audit-logged

Epic E17 — Feature Flags (FFG)

Goal. Make every product capability toggleable by a Super Admin per department and per environment; ensure code paths are gated by flags with safe default states, and audit every flag change.

US-FFG-001 — Super Admin toggles features per department & environment [M]

As a Super Admin I want to enable or disable any capability per department and per environment (dev/staging/prod) So that I can roll out features gradually and disable risky ones instantly without a deploy.

Acceptance Criteria (Gherkin)

Scenario: Department-scoped toggle
  Given a Super Admin opens the feature-flag console for the "MoM AI extraction" flag
  When they enable it for the S&ITD department only and save
  Then the capability becomes available to S&ITD and remains off for all other departments

Scenario: Environment-scoped kill switch
  Given a critical issue is detected in production with the "WhatsApp intake" flag
  When the Super Admin flips the flag off in the production environment
  Then WhatsApp intake is disabled immediately (no deploy) and affected users see a clear "temporarily unavailable" state

US-FFG-002 — Flags gate code paths with safe default states [M]

As a Engineer I want every gated code path to consult the flag service and to fall back to a safe default if the flag service is unreachable So that a flag-service outage cannot enable an unintended feature.

Acceptance Criteria (Gherkin)

Scenario: Flag service unreachable yields fail-safe default
  Given the flag service is temporarily unreachable
  When a gated code path evaluates a flag
  Then the configured fail-safe default is used (off for non-essential features, on for critical paths) and the event is logged

US-FFG-003 — Audited flag changes [M]

As a Auditor I want every flag change — who, what, before/after, scope, timestamp — recorded immutably So that flag operations are traceable for governance and incident review.

Acceptance Criteria (Gherkin)

Scenario: Flag change is captured in the audit log
  Given any user with rights changes a flag value
  When the change is committed
  Then an immutable audit entry is written capturing actor, flag key, previous value, new value, scope (dept/env), and timestamp
  And the entry appears in the governance/compliance analytics and cannot be edited or deleted

Traceability

Representative mapping from Epic → key Functional Requirement IDs → key User Story IDs → acceptance-criteria (Scenario) count → Test Case document reference. Not exhaustive; full per-requirement traceability lives in 02-functional-reqs/ and 13-test-strategy/.

Epic Key FR IDs Key US IDs AC count TC doc reference
E9 ANL — Analytics FR-ANL-001, FR-ANL-007, FR-ANL-012, FR-ANL-018, FR-ANL-021, FR-ANL-024 US-ANL-001US-ANL-006 8 13-test-strategy/TC-ANL-*
E10 KB — Knowledge Base + SOP FR-KB-002, FR-KB-005, FR-KB-009, FR-KB-013 US-KB-001US-KB-003 5 13-test-strategy/TC-KB-*
E11 MCI — Multi-channel Intake FR-MCI-001, FR-MCI-004, FR-MCI-007, FR-MCI-010, FR-MCI-012 US-MCI-001US-MCI-004 7 13-test-strategy/TC-MCI-*
E12 DOC — Document Gen + e-Sign FR-DOC-003, FR-DOC-006, FR-DOC-008, FR-DOC-011 US-DOC-001US-DOC-003 5 13-test-strategy/TC-DOC-*
E13 MTG — Hearings + TRI + MoM FR-MTG-002, FR-MTG-005, FR-MTG-009, FR-MTG-012, FR-MTG-015, FR-MTG-018 US-MTG-001US-MTG-006 9 13-test-strategy/TC-MTG-*
E14 SUG — Suggestion & Content FR-SUG-002, FR-SUG-005, FR-SUG-008 US-SUG-001US-SUG-003 4 13-test-strategy/TC-SUG-*
E15 TRN — Training & Certification FR-TRN-003, FR-TRN-006, FR-TRN-009 US-TRN-001US-TRN-003 4 13-test-strategy/TC-TRN-*
E16 OFC — Brand & Officials CMS FR-OFC-002, FR-OFC-005, FR-OFC-008, FR-OFC-011 US-OFC-001US-OFC-004 6 13-test-strategy/TC-OFC-*
E17 FFG — Feature Flags FR-FFG-002, FR-FFG-005, FR-FFG-008 US-FFG-001US-FFG-003 4 13-test-strategy/TC-FFG-*

Totals (E9–E17). 35 user stories · 52 acceptance-criteria scenarios · 9 epics.