v1.1April 15, 2026AGPL-3.0ekdoti.co
Discovery · §2

Functional requirements

What the platform must do. Each module is identified with a stable prefix, and individual requirements are tagged with MoSCoW priority.

Priority notation: M Must have  ·  S Should have  ·  C Could have

Module index

The platform is organised into 15 functional modules. Each module has a stable identifier that is referenced from sequence diagrams, data models, and the API catalogue.

PrefixModule
FR-EDWrite — collaborative editor
FR-MMMind map canvas
FR-RSResearch workspace
FR-SCSource chat and mini-chat
FR-CIAuto-citation engine
FR-LBLibrary and bibliography
FR-PRPDF reader and annotator
FR-PVProvenance, signing, and verification
FR-WRWriting process recording
FR-GDGoogle Docs Chrome extension
FR-AIAI features
FR-EXExport
FR-AUAuthentication and collaboration
FR-RJResearch journal
FR-TKTasks tab

FR-ED — Write (Collaborative editor)

The primary writing surface. Block-based, real-time collaborative, with academic-specific block types and slash commands.

IDRequirementP
FR-ED-01Block-based rich text editor built on Tiptap/ProseMirror (Novel fork)M
FR-ED-02Real-time co-editing via Hocuspocus and Yjs with named, colour-coded cursorsM
FR-ED-03Document state persisted as a Yjs CRDT binary in PostgreSQLM
FR-ED-04Offline editing via IndexedDB fallback with automatic sync on reconnectS
FR-ED-05Academic block types: Abstract, Section headings (H1–H4), Citation chip, Equation (MathJax), Figure or Table with captions, Footnote, Author affiliationM
FR-ED-07Slash command palette with /cite, /research, /ai, /refine, /figure, /table, /equation, /outlineM
FR-ED-08Document templates: Essay (APA), IMRaD (APA), Literature Review, IEEE Conference Paper, Thesis Chapter, BlankM
FR-ED-12AI-generated content inserted into the editor appears as tracked changes, visually distinguishable from human-authored textM
FR-ED-13Selection toolbar on any non-empty selection containing Bold, Italic, Underline, heading options, divider, and a mini-chat iconM

FR-SC — Source chat and mini-chat New

A persistent chat workspace operating in two modes: My Sources, which performs RAG over the student's uploaded library, and Research New, which discovers papers via external APIs. The mini-chat surfaces this capability inline as a context-aware popover triggered from the selection toolbar.

IDRequirementP
FR-SC-01Persistent Source Chat tab within every documentM
FR-SC-02Two modes: My Sources (RAG over uploaded sources only) and Research New (open search via Semantic Scholar, Crossref, arXiv, PubMed)M
FR-SC-04Each source is chunked, embedded, and stored in a per-document pgvector storeM
FR-SC-05In My Sources mode, every AI response is grounded exclusively in retrieved chunks; each claim cites the source document and chunk locationM
FR-SC-08Clicking the mini-chat icon in the selection toolbar opens a panel anchored below the toolbar without dismissing itM
FR-SC-12The mini-chat context payload includes selected text, surrounding ~200 words, current section heading, AI-summarised document thesis, and top 3 relevant chunks from the vector storeM
FR-SC-15Mini-chat output actions: Insert (as tracked change), Save as note, Promote to Source Chat, DismissM
FR-SC-17The Promote action saves the mini-chat exchange to Source Chat as a named branch, storing the selection text and section heading as branch metadataM

FR-PV — Provenance, signing, and verification New

The integrity layer. Every exported document carries an Ed25519 cryptographic signature with a non-binary AI contribution disclosure, publicly verifiable at verify.ekdoti.co without an account.

IDRequirementP
FR-PV-01Ed25519 cryptographic signature generated for every exported documentM
FR-PV-02Signature payload: SHA-256 hash, anonymised user ID, ISO 8601 timestamp, AI contribution score (0.0–1.0), AI breakdown JSON, session IDM
FR-PV-03AI contribution score is a composite of keystroke vs paste ratio, AI assist invocation count, rewrite ratio, word count velocity, and large paste event countM
FR-PV-04Signature embedded as DOCX custom property and PDF XMP metadataM
FR-PV-06Free public verification API at verify.ekdoti.co requiring no authenticationM
FR-PV-09Human-readable web form at verify.ekdoti.co allows document upload or signature ID paste with no account requiredM
FR-PV-10AI disclosure label is non-binary, presented as a human-readable breakdown such as "78% human-originated, 22% AI-assisted (3 rewrite requests, 1 large paste event)"M
FR-PV-11Ekdotico's Ed25519 public key published at verify.ekdoti.co/public-key in PEM formatM

FR-RJ — Research journal New v1.1

An auto-maintained notebook that synthesises all chat activity, sources, and writing sessions into a structured document a student can review at any time. Updated via event-driven delta generation, accessible from any workspace as a slide-in drawer.

IDRequirementP
FR-RJ-01Auto-maintained Research Journal per document via event-driven BullMQ delta generation with 5-minute debounceM
FR-RJ-02Five named sections: Overview, By Section, Source Insights, Open Questions, TimelineM
FR-RJ-08Accessible via slide-in drawer from any workspace tab via persistent header buttonM
FR-RJ-13Open questions unresolved for >24 hours auto-promote as pending tasks in the Tasks tabM
FR-RJ-15Journal exportable as standalone PDF or DOCX for portfolio submission or supervisor reviewS

FR-TK — Tasks tab New v1.1

The single source of truth for all work items in a document. AI-extracted from chat exchanges, auto-completed when system events confirm work was done, with full manual override available at every step.

IDRequirementP
FR-TK-01Tasks tab is the single source of truth for all work items; no other module owns task stateM
FR-TK-02Tasks organised into Phases — named, ordered batches of semantically related tasksM
FR-TK-04Tasks extracted from Source Chat AI responses, Mind Map Question nodes, Journal open questions, red-highlighted PDF annotations, and explicit user phrasesM
FR-TK-09Completion confidence above 0.85 silently auto-completes the task with [AI] attribution badge and timestampM
FR-TK-10Completion confidence between 0.5 and 0.85 sets the task to amber Needs confirmation state with Accept and Dismiss controlsM
FR-TK-13Full manual control over all tasks: mark complete, mark incomplete, rename, move to a different phase, set priority, deleteM
FR-TK-20Other modules display read-only task indicators but never own task stateM

The full requirements catalogue covers fifteen modules. The remaining ten modules — FR-MM, FR-RS, FR-CI, FR-LB, FR-PR, FR-WR, FR-GD, FR-AI, FR-EX, FR-AU — follow the same structure and are documented in the complete Software Design Documentation v1.1.