Skip to content
ACM-AI Documentation

Functional Requirements

Complete functional requirements from FR-100 through FR-1000 series

Functional Requirements

Requirements are organised by functional area using FR series numbering. Priority levels: P0 (must-have for MVP), P1 (important), P2 (nice-to-have).

FR-100 Series: Document Processing

IDRequirementPriority
FR-101System shall accept PDF uploads up to 50 MBP0
FR-102System shall extract text and tables using MinerU (primary) with Docling as fallbackP0
FR-103System shall identify ACM Register tables within SAMP/BAR documents with >90% accuracyP0
FR-104System shall parse hierarchical structure: Department → Agency → Site → Building → Room → ACM ItemP0
FR-105System shall store page numbers for each extracted data rowP0
FR-106System shall handle multi-page tables (merged across pages)P1
FR-107System shall use configurable field definitions to parse any ACM PDF format via a single generic parserP0
FR-108System shall allow configuration of non-extractable fields (Department, Building Type, etc.)P0
FR-109System shall analyse document structure before extraction (TOC and inventory in Stage -1)P0
FR-110System shall detect format and select parser configuration dynamically (preflight Stage 0)P0
FR-111System shall route sections to optimal tool via orchestrator (Stage 0.5)P0
FR-112System shall perform corrective re-extraction on validation failure (maximum 3 LLM refinement attempts)P1

FR-200 Series: Data Model

IDRequirementPriority
FR-201System shall store ACM records with expanded Victorian BAR schema (~50 fields)P0
FR-202System shall link ACM records to source document via source_id foreign keyP0
FR-203System shall support vector embeddings for ACM records (semantic search)P1
FR-204System shall track extraction metadata: timestamp, confidence scoreP1
FR-205System shall store organisation hierarchy (Department, Agency, Sub Agency)P0
FR-206System shall store location metadata (Address, Suburb, Postcode)P0
FR-207System shall store ACM classification (Product Group, Product Type)P0
FR-208System shall store removal tracking data (removal dates, quantities, EPA certificates)P1

FR-300 Series: Spreadsheet View

IDRequirementPriority
FR-301System shall display ACM data in AG Grid component with all BAR columnsP0
FR-302System shall support column sorting (ascending/descending) via column header clickP0
FR-303System shall support column filtering with dropdowns for enum columnsP0
FR-304System shall support text search within the gridP0
FR-305System shall support row grouping by Building and RoomP0
FR-306System shall highlight rows by risk status: Low=green, Medium=yellow, High=redP1
FR-307System shall support column pinning (Building/Room columns pinnable to left)P1
FR-308System shall support CSV export with all 47 BAR columnsP0
FR-309System shall support BAR-compliant Excel (.xlsx) exportP0
FR-310System shall support BAR template configurationP1
FR-311System shall support column visibility management (show/hide columns, save presets)P1
FR-312System shall support field mapping configuration (map ACM-AI fields to BAR columns)P1

FR-400 Series: Citations and Provenance

IDRequirementPriority
FR-401System shall make each spreadsheet cell clickableP0
FR-402System shall display PDF viewer showing the source page when a cell is clickedP0
FR-403System shall highlight the relevant region in the PDF when bounding box data is availableP2
FR-404Chat citations shall include cell-level references to ACM recordsP0
FR-405Citation format shall be [acm:record_id:field_name] parseable by the frontendP0

FR-500 Series: Chat Integration

IDRequirementPriority
FR-501Chat shall include ACM spreadsheet data in context when ACM toggle is enabledP0
FR-502Chat shall cite specific ACM records in responses using clickable citationsP0
FR-503Chat shall understand ACM domain terminology (friable, risk levels, NATA, etc.)P1
FR-504Chat shall answer questions about policy sections in the documentP0
FR-505Chat context selector shall include an "ACM Data" toggle optionP0
FR-506Chat shall use CopilotKit framework implementing the AG-UI protocolP0
FR-507Chat shall expose the supervisor agent via AG-UI SSE endpoint at /api/agui/chatP0
FR-508Chat shall render tool call results with custom React components (tables, stats)P0
FR-509Chat shall support real-time streaming responses (partial tokens visible)P0
FR-510Chat shall handle ACM context toggle dynamically per messageP0

FR-600 Series: Rebranding

IDRequirementPriority
FR-601Application title shall be "ACM-AI" in browser title and headerP0
FR-602Logo shall reflect ACM-AI brandingP1
FR-603Colour scheme shall use VAEA government branding (teal palette)P1
FR-604Landing page shall describe ACM-AI purpose and value propositionP1

FR-700 Series: UX and Enterprise Readiness

IDRequirementPriority
FR-701System shall use VAEA government branding (teal palette, Coral accent, Navy)P0
FR-702Navigation shall use WORKSPACE and CONFIGURE taxonomyP0
FR-703Brownfield features (Podcasts, Transformations, Notebooks) shall be hidden from navigationP0
FR-704All pages shall display skeleton loading placeholders during data fetch (zero CLS)P1
FR-705Toast notifications shall provide promise-based feedback for long operationsP1
FR-706Application shall meet WCAG 2.1 AA accessibility standardsP1
FR-707Sources and Documents pages shall be merged into a unified Documents viewP1
FR-708Application shall gracefully handle connection drops and session timeoutsP2
FR-709Keyboard navigation shall support all primary workflows via command paletteP2
FR-710Deep pages shall display breadcrumb navigationP2
FR-711TypeScript types shall be auto-generated from Python Pydantic modelsP2

FR-800 Series: Extraction Monitor

IDRequirementPriority
FR-801System shall display extraction logs for any document inline in the Document Library (historical and live SSE)P0
FR-802System shall provide a dedicated /extraction-monitor page with Active and History tabs, status filtering, and retry capabilityP0

FR-900 Series: UX Enhancement

IDRequirementPriority
FR-901System shall display a statistics dashboard home page with ACM metrics, charts, and recent extractionsP1
FR-902System shall provide a slide-out record detail panel showing all 47 ACM fields on row clickP0
FR-903System shall display empty state screens with appropriate CTAs when no documents or records existP1
FR-904System shall support bulk document operations (select multiple → delete/re-extract/export)P1

FR-1000 Series: Live Extraction Intelligence

IDRequirementPriority
FR-1001System shall emit AG-UI protocol events during extraction via SurrealDB relay (AGUIEventEmitter → agui_events table → SSE endpoint)P0
FR-1002System shall stream extracted records incrementally to the AG Grid during extraction via AG-UI StateDelta eventsP0
FR-1003System shall display reasoning tokens from thinking models (DeepSeek R1, Claude extended thinking) in a collapsible panelP1
FR-1004System shall display extraction tool call operations in a live feed (step names, arguments, results, durations)P1
FR-1005System shall expose an A2A agent card at /.well-known/agent.json with task lifecycle endpointsP1
FR-1006System shall support 6 additional frontier AI models via OpenRouter (MiniMax M2.1, Kimi K2.5, DeepSeek V3.2, Claude Sonnet 4.6, GPT 5.2, Gemini 2.5 Pro)P1