_ _ _ __ __ _ __ _ / \ ___ __ _ __| | ___ _ __ ___ (_) ___ \ \ / /__ _ __| | __/ _| | _____ __ / _ \ / __/ _` |/ _` |/ _ \ '_ ` _ \| |/ __| \ \ /\ / / _ \| '__| |/ / |_| |/ _ \ \ /\ / / / ___ \ (_| (_| | (_| | __/ | | | | | | (__ \ V V / (_) | | | <| _| | (_) \ V V / /_/ \_\___\__,_|\__,_|\___|_| |_| |_|_|\___| \_/\_/ \___/|_| |_|\_\_| |_|\___/ \_/\_/ ____ _ _ / ___| _ _(_) |_ ___ \___ \| | | | | __/ _ \ ___) | |_| | | || __/ |____/ \__,_|_|\__\___|<div align="center">
[](https://github.com/academic-workflow-suite/actions) [](https://github.com/academic-workflow-suite/releases)
[](https://hub.docker.com/r/aws-edu/core) [](docs/SECURITY.md#gdpr-compliance) [](docs/SECURITY.md)
[Website](https://aws-edu.org) • [Documentation](docs/README.md) • [Quick Start](docs/QUICK_START.md) • [Installation](docs/INSTALLATION_GUIDE.md) • [Support](https://discuss.aws-edu.org)
Reduce TMA marking time from 20-30 minutes to under 10 minutes while maintaining quality and protecting student privacy.
</div>
-
[Overview](#overview)
-
[The Problem We Solve](#the-problem-we-solve)
-
[Key Features](#key-features)
-
[Screenshots](#screenshots)
-
[Quick Start](#quick-start)
-
[Architecture](#architecture)
-
[Installation](#installation)
-
[Usage](#usage)
-
[Documentation](#documentation)
-
[Development](#development)
-
[Security & Privacy](#security—privacy)
-
[Roadmap](#roadmap)
-
[Support](#support)
-
[Contributing](#contributing)
-
[License](#license)
-
[Citation](#citation)
-
[Acknowledgments](#acknowledgments)
Academic Workflow Suite (AWS) is an open-source, privacy-first AI assistant designed specifically for Open University Associate Lecturers to streamline the marking of Tutor-Marked Assignments (TMAs).
Unlike cloud-based AI tools that compromise student privacy, AWS runs entirely on your local machine with mathematical guarantees that student data never reaches AI systems in identifiable form.
-
OU Associate Lecturers marking TMAs across all modules
-
Academic institutions requiring GDPR-compliant AI assistance
-
Researchers studying educational technology and privacy-preserving AI
-
Developers interested in event-sourced, privacy-first architectures
Traditional Marking: With Academic Workflow Suite: ───────────────── ──────────────────────────── 📄 Read submission 📄 Load document (auto) 📝 Check rubric 📝 Rubric loaded (auto) 💭 Analyze quality 🤖 AI analysis (10-30s) ✍️ Write feedback ✍️ Review & edit AI suggestions 🔢 Calculate scores 🔢 Scores calculated 📋 Format comments 📋 Auto-format & insert ⏱️ 20-30 minutes/TMA ⏱️ <10 minutes/TMA 🔒 100% student privacyOpen University Associate Lecturers face a significant workload challenge:
-
20-30 minutes per TMA on average
-
50-100+ TMAs per assignment for popular modules
-
Repetitive feedback for common mistakes
-
Cognitive load of maintaining rubric consistency
-
Tight deadlines (typically 2-3 weeks)
Total time commitment: 16-50+ hours per assignment batch
While commercial AI assistants can help, they pose serious privacy risks:
❌ Student data sent to cloud servers ❌ No control over data retention ❌ Potential GDPR violations ❌ University policy non-compliance ❌ No audit trail ❌ Risk of data breaches
AWS provides AI assistance with zero privacy compromise:
✅ Runs entirely on your machine (no cloud required) ✅ Student IDs never reach AI (cryptographically anonymized) ✅ Network-isolated AI (cannot exfiltrate data) ✅ Complete audit trail (event sourcing) ✅ GDPR compliant by design ✅ University-approved architecture
-
Intelligent analysis against custom or pre-loaded rubrics
-
Constructive feedback suggestions that you can edit or reject
-
Score recommendations based on rubric criteria
-
Consistency checking across multiple submissions
-
Learn your style (adapts to your feedback patterns over time)
Student ID: A1234567 ↓ SHA3-512 Hash (one-way, irreversible) Hash: 7f3a2b9c8e1d4a5c6f8b9e2d3c4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b... ↓ Sent to AI Jail (network-isolated container) AI sees: ✓ Anonymous hash ✓ Essay content ✓ Rubric criteria AI never sees: ✗ Student ID ✗ Student name ✗ Any personally identifiable informationMathematical guarantee: SHA3-512 hash cannot be reversed (2^512 search space = more combinations than atoms in the universe)
Every action is logged immutably:
2025-11-22 14:32:01 - Document loaded: TM112-TMA01 2025-11-22 14:32:15 - Student ID anonymized: A1234567 → hash 2025-11-22 14:32:47 - AI analysis completed (29 seconds) 2025-11-22 14:35:22 - Tutor edited feedback for criterion: Understanding 2025-11-22 14:36:10 - Feedback inserted into Word document 2025-11-22 14:36:32 - Document exported as PDFBenefits: - Prove compliance for university audits - Reproduce past decisions for quality assurance - Time-travel debugging for troubleshooting - GDPR right to explanation support
Seamless integration with Microsoft Word via official Office Add-in:
-
Task pane interface in Word (no context switching)
-
Direct document manipulation using Office.js
-
Inline comments inserted automatically
-
Rubric-based scoring with auto-calculation
-
Export to PDF/DOCX with formatting preserved
Future releases will include: - Direct download of student submissions - Automated grade upload to Moodle gradebook - Batch processing of entire assignment cohorts
Mark multiple TMAs efficiently:
= Analyze all TMAs in a directory image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core batch analyze --module TM112 --assignment TMA01 --input ./submissions/ = Process 50 TMAs in parallel image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = Average processing time: 10 minutes per TMA image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = Total time: ~8-10 hours → Run overnight! image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"]Create and share rubrics:
= Example: TM112 TMA01 Rubric image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] module: TM112 assignment: TMA01 total_marks: 100 criteria: - id: understanding name: Understanding of Concepts marks: 30 description: Demonstrates grasp of networking fundamentals - id: analysis name: Critical Analysis marks: 30 description: Evaluates concepts critically with evidence - id: structure name: Structure & Clarity marks: 20 description: Well-organized, clear writing - id: evidence name: Use of Evidence marks: 20 description: Appropriate citations and examplesFull compliance with EU General Data Protection Regulation:
-
Data minimization: Only necessary data processed
-
Purpose limitation: Data used only for marking
-
Storage limitation: Configurable retention periods
-
Right to erasure: Complete data deletion on request
-
Right to explanation: Full audit trail available
-
Data portability: Export all data in standard formats
-
Privacy by design: Architecture prevents PII leakage
Note: The following are placeholder descriptions. Actual screenshots will be added in future releases.
┌─────────────────────────────────────────────────────────────────────┐ │ Microsoft Word - TM112-TMA01.docx │ ├─────────────────────────────┬───────────────────────────────────────┤ │ │ ┌─────────────────────────────────┐ │ │ Student: A1234567 │ │ Academic Workflow Suite │ │ │ Module: TM112 │ │ │ │ │ Assignment: TMA01 │ │ Module: TM112 ▾ │ │ │ │ │ Assignment: TMA01 ▾ │ │ │ Question 1: │ │ │ │ │ Explain the concept of... │ │ [Load Document] │ │ │ │ │ │ │ │ [Student's essay text] │ │ Status: ✓ Document loaded │ │ │ Lorem ipsum dolor sit │ │ │ │ │ amet, consectetur │ │ Rubric: TM112-TMA01 Official │ │ │ adipiscing elit... │ │ │ │ │ │ │ [Analyze Submission] │ │ │ │ └─────────────────────────────────┘ │ └─────────────────────────────┴───────────────────────────────────────┘Figure 1: Office add-in task pane showing document loaded and ready for analysis
┌─────────────────────────────────────────────────────────────────────┐ │ AI Analysis Complete │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ Suggested Scores: │ │ │ │ 📚 Understanding of Concepts: 24/30 ★★★★☆ │ │ 🔍 Critical Analysis: 22/30 ★★★☆☆ │ │ 📝 Structure & Clarity: 17/20 ★★★★☆ │ │ 📖 Use of Evidence: 15/20 ★★★☆☆ │ │ ───────────────────────────────────────────────── │ │ Total: 78/100 (B+) │ │ │ │ ┌───────────────────────────────────────────────────────────────┐ │ │ │ Suggested Feedback (Understanding of Concepts) │ │ │ │ │ │ │ │ "You demonstrate a solid understanding of networking │ │ │ │ fundamentals. Your explanation of the TCP/IP model is clear │ │ │ │ and accurate. To improve, consider exploring how the OSI │ │ │ │ model relates to real-world protocols in more depth." │ │ │ │ │ │ │ │ [✎ Edit] [✓ Accept] [✗ Reject] │ │ │ └───────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘Figure 2: AI-generated feedback suggestions with scores
┌─────────────────────────────────────────────────────────────────────┐ │ AWS Settings │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ ⚙️ General │ │ ├─ Feedback Tone: ◉ Formal ○ Friendly ○ Custom │ │ ├─ Scoring Strictness: [█████████░] 85% │ │ └─ Auto-save Interval: [5 minutes ▾] │ │ │ │ 🔒 Privacy │ │ ├─ Hash Algorithm: SHA3-512 (FIPS 202) ✓ │ │ ├─ Network Isolation: ✓ Enabled │ │ └─ Data Retention: [90 days ▾] │ │ │ │ 🎨 Appearance │ │ ├─ Theme: ◉ Light ○ Dark ○ Auto │ │ └─ Font Size: [14pt ▾] │ │ │ │ 📊 Analytics │ │ ├─ Anonymous Usage Stats: ○ Enabled ◉ Disabled │ │ └─ Crash Reports: ○ Enabled ◉ Disabled │ │ │ │ [Save Changes] [Reset to Defaults] │ └─────────────────────────────────────────────────────────────────────┘Figure 3: Settings panel for customizing AWS behavior
┌─────────────────────────────────────────────────────────────────────┐ │ Marking Statistics - TM112 TMA01 │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ 📈 Overview │ │ ├─ TMAs Marked: 47 / 52 │ │ ├─ Average Time: 8.5 minutes/TMA │ │ ├─ Time Saved: ~9.5 hours (vs 20min average) │ │ └─ AI Suggestions Accepted: 73% │ │ │ │ 📊 Score Distribution │ │ ┌─────────────────────────────────────────────┐ │ │ │ A: ████████ (17%) │ │ │ │ B: ████████████████ (30%) │ │ │ │ C: ████████████████████ (38%) │ │ │ │ D: ████████ (13%) │ │ │ │ Fail: ██ (2%) │ │ │ └─────────────────────────────────────────────┘ │ │ │ │ 🎯 Rubric Criteria (Average Scores) │ │ ├─ Understanding: 23.4/30 (78%) │ │ ├─ Analysis: 21.8/30 (73%) │ │ ├─ Structure: 16.2/20 (81%) │ │ └─ Evidence: 15.9/20 (80%) │ │ │ │ [Export Report] [View Trends] │ └─────────────────────────────────────────────────────────────────────┘Figure 4: Analytics dashboard showing marking statistics
-
Microsoft Word 2019 or later (or Office 365)
-
Docker or Podman (for AI isolation)
-
10 GB free disk space
-
8 GB RAM (16 GB recommended)
= 1. Start AWS services image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core start = 2. Open Word and click the AWS tab image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = 3. Open a TMA document image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = 4. Click "Analyze Submission" image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = 5. Review and edit AI suggestions image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = 6. Insert feedback into document image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = 7. Export and submit! image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"]Full guide: See [Quick Start Guide](docs/QUICK_START.md) for detailed walkthrough
See TOPOLOGY.md for a visual architecture map and completion dashboard.
┌─────────────────────────────────────────────────────────────────────┐ │ USER ENVIRONMENT │ │ │ │ ┌───────────────────────────────────────────────────────────────┐ │ │ │ Presentation Layer │ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ │ │ Microsoft Word + AWS Office Add-in (ReScript) │ │ │ │ │ │ - Task pane UI │ │ │ │ │ │ - Document manipulation (Office.js) │ │ │ │ │ └──────────────────────┬──────────────────────────────────┘ │ │ │ └─────────────────────────┼─────────────────────────────────────┘ │ │ │ HTTPS/TLS 1.3 (localhost:8080) │ │ ┌─────────────────────────▼─────────────────────────────────────┐ │ │ │ Application Layer (Rust) │ │ │ │ ┌──────────┐ ┌──────────┐ ┌─────────────────┐ │ │ │ │ │ REST API │ │ Business │ │ Anonymization │ │ │ │ │ │ (Actix) │ │ Logic │ │ Engine (SHA3) │ │ │ │ │ └──────────┘ └──────────┘ └─────────────────┘ │ │ │ └─────────────────────────┬─────────────────────────────────────┘ │ │ │ │ │ ┌─────────────────────────▼─────────────────────────────────────┐ │ │ │ Persistence Layer │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │ │ │ │ Event │ │ Read │ │ File Storage │ │ │ │ │ │ Store │ │ Models │ │ (Documents) │ │ │ │ │ │ (LMDB) │ │(In-Mem) │ │ │ │ │ │ │ └──────────┘ └──────────┘ └──────────────┘ │ │ │ └─────────────────────────┬─────────────────────────────────────┘ │ │ │ Unix Socket (IPC) │ │ ┌─────────────────────────▼─────────────────────────────────────┐ │ │ │ AI Isolation Layer (Network-Isolated Container) │ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ │ │ 🔒 Sandboxed Environment (gVisor/Firecracker) │ │ │ │ │ │ ┌────────┐ ┌─────────┐ ┌──────────────────────────┐ │ │ │ │ │ │ │ AI │ │ ONNX │ │ Security Controls: │ │ │ │ │ │ │ │ Model │ │ Runtime │ │ ✗ No network access │ │ │ │ │ │ │ │ │ │ │ │ ✗ Read-only filesystem │ │ │ │ │ │ │ │ │ │ │ │ ✗ No PII received │ │ │ │ │ │ │ └────────┘ └─────────┘ └──────────────────────────┘ │ │ │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ └───────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘ │ │ HTTPS (Optional) │ ┌─────────────▼────────────────┐ │ Backend Services (Optional) │ │ - Rubric repository │ │ - Software updates │ │ - NO student data │ └──────────────────────────────┘| Component | Technology | Purpose | |-----------|------------|---------| | Office Add-in | ReScript, Office.js, Webpack | UI and Word integration | | Core Engine | Rust, Actix-Web, Tokio | Business logic and API | | Event Store | LMDB (via Heed) | Immutable event log | | AI Jail | Rust, ONNX Runtime, Docker | Isolated AI inference | | Backend | Rust, Actix-Web (optional) | Rubric repository, updates |
-
Frontend: ReScript → JavaScript, React, Office.js
-
Backend: Rust (stable), Actix-Web 4.x
-
Database: LMDB (Lightning Memory-Mapped Database)
-
AI Runtime: ONNX Runtime, llama.cpp
-
Containerization: Docker/Podman, gVisor
-
Cryptography: SHA3 (FIPS 202), AES-256-GCM
-
Build System: Cargo, npm, Make
-
Verified Libraries: proven (Idris2 formally verified modules)
Academic Workflow Suite integrates with the proven library - a formally verified, crashproof library written in Idris2 with 45 modules and 43 language FFI bindings.
| Module | Purpose | Guarantee |
|---|---|---|
SafeCrypto | SHA3-512 anonymization, AES-256-GCM encryption | Timing attack resistance, no panics |
SafeJson | IPC communication, API parsing | No parse failures, memory safety |
SafeRegex | PII detection, input validation | No ReDoS, polynomial-time matching |
SafeStateMachine | Event sourcing, workflow states | No invalid states, deterministic |
SafePath | Document path handling | Path traversal prevention |
-
Mathematical Guarantees: Formally proven correctness
-
Crash Safety: No panics or undefined behavior
-
Security Hardening: Verified cryptographic implementations
-
Auditability: Proofs available for security review
See: Proven Integration Guide for implementation details
1. Tutor opens TMA → Office Add-in parses document 2. Student ID extracted → Core Engine anonymizes (SHA3-512) 3. Anonymized data sent → AI Jail via Unix socket 4. AI analyzes essay → Returns feedback suggestions 5. Core re-associates → Hash → Student ID 6. Tutor reviews/edits → Inserts into Word document 7. Audit event logged → Immutable event storeDetailed architecture: See [Architecture Documentation](docs/ARCHITECTURE.md)
| Component | Minimum | Recommended | |-----------|---------|-------------| | OS | Windows 10, macOS 11, Ubuntu 20.04 | Windows 11, macOS 13+, Ubuntu 22.04+ | | CPU | 2 cores, 2.0 GHz | 4+ cores, 3.0 GHz | | RAM | 8 GB | 16 GB | | Disk | 10 GB free | 20 GB free (SSD) | | Word | Office 2019 | Office 365 | | Docker | Docker 20.10+ | Docker 24.0+ or Podman 4.0+ |
One-liner installation with sensible defaults:
macOS / Linux:
curl -sSL https://install.aws-edu.org/install.sh | bashWindows (PowerShell as Administrator):
iwr https://install.aws-edu.org/install.ps1 -useb | iexWhat gets installed: - AWS Core Engine (/usr/local/bin/aws-core) - Office Add-in (configured in Word) - AI Jail container image - Default rubrics for popular modules - System dependencies
Choose components and installation paths:
= Download installer image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] curl -sSL https://install.aws-edu.org/install.sh -o install.sh = Run with custom options image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] bash install.sh \ --prefix ~/.local \ --no-ai-jail \ --modules TM112,M250 \ --config-file my-config.tomlFor developers or custom builds:
= Clone repository image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] git clone https://github.com/academic-workflow-suite/aws.git cd aws = Build all components image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make build = Install image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] sudo make install = Or install to custom location image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make install PREFIX=~/.localFull installation guide: See [Installation Guide](docs/INSTALLATION_GUIDE.md)
= Check AWS Core image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core --version = Expected: AWS Core Engine v0.1.0 image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = Check Docker image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] docker ps = Expected: Container list (may be empty) image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = Check Office Add-in image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = Open Word → Look for "AWS" tab in ribbon image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"]= Start AWS Core Engine image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core start = Check status image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core status = Expected: image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = ✓ Core Engine: Running image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = ✓ AI Jail: Ready image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = ✓ Database: OK image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"]= Edit configuration image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core config edit = Common settings: image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = - feedback_tone: formal, friendly, or custom image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = - scoring_strictness: 0-100 image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = - data_retention_days: 90 image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = - theme: light, dark, or auto image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"]In AWS task pane: - Module: Select from dropdown (e.g., TM112) - Assignment: Select TMA (e.g., TMA01) - Click Load Document
AWS will parse the document and detect: - Student ID - Module/assignment metadata - Question structure - Student responses
-
Click Load Rubric
-
Choose official rubric or create custom
-
Review criteria and marks
-
Click Analyze Submission
-
Wait 10-30 seconds for AI analysis
-
Review suggested scores and feedback
Important: AI provides suggestions, not decisions!
-
Edit any feedback text
-
Adjust scores based on your judgment
-
Add personal comments
-
Remove suggestions you disagree with
-
Click Insert Feedback
-
AWS adds comments to Word document
-
Review inserted feedback
-
Make final adjustments
Mark multiple TMAs at once:
= Prepare TMAs image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] mkdir -p ~/marking/TM112-TMA01 = Place all TMA documents in this directory image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = Batch analyze image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core batch analyze \ --module TM112 \ --assignment TMA01 \ --input ~/marking/TM112-TMA01 \ --output ~/marking/TM112-TMA01-marked \ --parallelism 4 = Review and finalize in Word image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"]Create rubrics for any module:
= Interactive rubric creator image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core rubric create \ --module M250 \ --assignment TMA02 = Follow prompts to define criteria image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"]Or edit YAML directly:
= ~/.aws/rubrics/M250-TMA02.yml image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] module: M250 assignment: TMA02 total_marks: 100 criteria: - id: oop_design name: Object-Oriented Design marks: 40 description: Quality of class design and UML diagrams - id: implementation name: Code Implementation marks: 40 description: Correctness and style of Java code - id: testing name: Testing & Documentation marks: 20 description: Unit tests and code documentation= Start/stop services image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core start aws-core stop aws-core restart = Status and health image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core status aws-core doctor # Diagnose issues = Rubrics image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core rubric list aws-core rubric show TM112 TMA01 aws-core rubric create --module M250 --assignment TMA03 aws-core rubric import rubric.yml = Updates image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core update # Update AWS aws-core update-rubrics # Update rubric repository = Logs and diagnostics image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core logs aws-core logs --tail 50 aws-core logs --follow = Configuration image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core config show aws-core config edit aws-core config reset = Export statistics image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core stats export --module TM112 --format csvFull user guide: See [User Guide](docs/USER_GUIDE.md)
-
[Quick Start Guide](docs/QUICK_START.md) - Get started in 10 minutes
-
[Installation Guide](docs/INSTALLATION_GUIDE.md) - Detailed installation instructions
-
[User Guide](docs/USER_GUIDE.md) - Comprehensive manual
-
[FAQ](docs/USER_GUIDE.md#faq) - Frequently asked questions
-
[Troubleshooting](docs/USER_GUIDE.md#troubleshooting) - Common issues and solutions
-
[Architecture](docs/ARCHITECTURE.md) - System architecture and design
-
[API Reference](docs/API_REFERENCE.md) - REST API specification
-
[Security](docs/SECURITY.md) - Security model and privacy guarantees
-
[Proven Integration](docs/PROVEN_INTEGRATION.adoc) - Formally verified library integration
-
[Roadmap](docs/ROADMAP.adoc) - Future directions and development paths
-
[Development Guide](docs/DEVELOPMENT.md) - Contributing and development
-
[CI/CD](docs/CI-CD.md) - Continuous integration and deployment
-
[Core Engine](components/core/README.md) - Rust backend
-
[Office Add-in](components/office-addin/README.md) - ReScript frontend
-
[AI Jail](components/ai-jail/README.md) - Isolated AI inference
-
[Backend](components/backend/README.md) - Optional cloud services
-
Rust 1.75+ (
rustup install stable) -
Node.js 18+ and npm
-
Docker 20.10+ or Podman 4.0+
-
Git 2.30+
= Clone repository image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] git clone https://github.com/academic-workflow-suite/aws.git cd aws = Install dependencies image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make deps = Build all components image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make build = Run tests image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make test = Start development servers image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make devacademic-workflow-suite/ ├── components/ │ ├── core/ # Rust backend (Actix-Web) │ ├── office-addin/ # ReScript frontend (Office.js) │ ├── ai-jail/ # Isolated AI inference │ ├── backend/ # Optional cloud services │ └── shared/ # Shared types and utilities ├── docs/ # Documentation ├── scripts/ # Build and deployment scripts ├── tests/ # Integration tests ├── docker/ # Dockerfiles and compose configs ├── cli/ # Command-line interface ├── config/ # Default configurations └── website/ # Project website= Create feature branch image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] git checkout -b feature/my-feature = Make changes and test image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make test make lint = Run locally image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make dev = Build release image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make release = Create pull request image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] git push origin feature/my-feature= All tests image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make test = Unit tests only image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make test-unit = Integration tests image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make test-integration = End-to-end tests image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make test-e2e = With coverage image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make test-coverageThis project follows: - Rust: rustfmt and clippy (strict mode) - ReScript: ReScript formatter - YAML: yamllint
= Format code image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make format = Lint code image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make lint = Fix auto-fixable issues image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] make lint-fixWe welcome contributions! Please see [CONTRIBUTING.md](components/office-addin/CONTRIBUTING.md) for:
-
Code of conduct
-
Development workflow
-
Pull request process
-
Coding standards
-
Testing requirements
Quick start for contributors:
-
Fork the repository
-
Create a feature branch
-
Make your changes with tests
-
Ensure
make testandmake lintpass -
Submit a pull request
AWS provides mathematical guarantees that student personally identifiable information (PII) cannot reach AI systems:
Student ID → SHA3-512 Hash → AI Jail A1234567 → 7f3a2b9c... → (irreversible) Attack resistance: • Brute force: 2^512 search space (infeasible) • Rainbow table: Prevented by random salt • Timing attack: Constant-time implementationAI Jail container is completely isolated:
Security Controls: ✓ No network access (iptables DROP all) ✓ Read-only filesystem ✓ System call filtering (seccomp) ✓ Memory limits (4 GB) ✓ No GPU access ✓ Container destroyed after use-
All student data stays on your machine
-
No cloud services required for core functionality
-
Optional backend only for rubrics (no student data)
AWS is compliant with EU General Data Protection Regulation:
| GDPR Right | Implementation | |------------|----------------| | Right to be informed | Complete audit trail available | | Right of access | Export all data via aws-core export | | Right to rectification | Edit or delete any data | | Right to erasure | aws-core delete --student A1234567 | | Right to restriction | Pause processing for specific students | | Right to data portability | Export in JSON, CSV, or XML | | Right to object | Opt-out mechanisms available | | Rights related to automated decision-making | Human (tutor) always in the loop |
AWS is designed to meet university data protection requirements:
✅ No cloud data storage (student data never leaves machine) ✅ Anonymized AI processing (PII cryptographically protected) ✅ Complete audit trail (prove compliance) ✅ Tutor override (AI assists, tutor decides) ✅ Open source (auditable by university IT)
We conduct regular security assessments:
-
Static analysis: Clippy, cargo-audit
-
Dependency scanning: Dependabot, Snyk
-
Container scanning: Trivy, Clair
-
Penetration testing: Annual third-party audits
-
Fuzzing: Continuous fuzzing with cargo-fuzz
Found a security issue? Please report responsibly:
-
Email: security@aws-edu.org
-
PGP Key: [Download](https://aws-edu.org/pgp-key.asc)
-
Response time: 24-48 hours
Do not open public GitHub issues for security vulnerabilities.
See: [Security Policy](security/policies/SECURITY_POLICY.md) for full details
-
✓ Core engine with event sourcing
-
✓ Office Add-in for Word
-
✓ AI isolation with Docker/gVisor
-
✓ SHA3-512 anonymization
-
✓ LMDB event store
-
✓ Basic rubric support
-
✓ Manual feedback editing
-
✓ PDF export
-
✓ CLI interface
-
✓ Documentation
-
❏ Moodle LMS integration - Direct submission download
-
❏ Batch processing improvements - Parallel analysis
-
❏ Advanced analytics dashboard - Marking statistics
-
❏ Custom AI models - Fine-tune on your feedback style
-
❏ Voice dictation - Speak your feedback
-
❏ Mobile app - Review feedback on iOS/Android
-
❏ Collaborative marking - Multiple tutors on same module
-
❏ Plagiarism detection - Integration with Turnitin API
-
❏ Grade moderation - Cross-tutor consistency checking
-
❏ Student progress tracking - Longitudinal analysis
-
❏ Multilingual support - Support for non-English TMAs
-
❏ Enhanced privacy - Zero-knowledge proofs
-
❏ Browser extension - Mark TMAs in any web interface
-
❏ Automated grading - For objective questions (opt-in)
-
❏ Student self-assessment - Pre-submission feedback tool
-
❏ Research analytics - Anonymized data for pedagogy research
-
❏ Integration with Turnitin, Gradescope, Canvas
-
❏ Machine learning model marketplace - Share fine-tuned models
Suggest a feature: [Open a discussion](https://github.com/academic-workflow-suite/discussions)
First, check our comprehensive documentation:
-
[User Guide](docs/USER_GUIDE.md) - How to use AWS
-
[FAQ](docs/USER_GUIDE.md#faq) - Common questions
-
[Troubleshooting](docs/USER_GUIDE.md#troubleshooting) - Fix common issues
-
[Installation Guide](docs/INSTALLATION_GUIDE.md) - Setup help
Join our community:
-
[Discussion Forum](https://discuss.aws-edu.org) - Ask questions, share tips
-
[GitHub Discussions](https://github.com/academic-workflow-suite/discussions) - Feature requests, Q&A
-
[Discord Server](https://discord.gg/aws-edu) - Real-time chat
-
[Monthly Webinars](https://aws-edu.org/webinars) - Live demos and Q&A
Report bugs or request features:
-
[GitHub Issues](https://github.com/academic-workflow-suite/issues) - Bug reports, feature requests
-
[Security Issues](mailto:security@aws-edu.org) - Confidential security reports
For direct assistance:
-
General: support@aws-edu.org
-
Technical: tech@aws-edu.org
-
Security: security@aws-edu.org
-
Press/Media: press@aws-edu.org
Response time: Usually 24-48 hours (weekdays)
Enterprise support available for institutions:
-
Priority email support (4-hour response SLA)
-
Dedicated Slack channel
-
Custom feature development
-
On-site training
-
Annual security audits
Contact: enterprise@aws-edu.org
We welcome contributions from the community! AWS is built by educators, for educators.
-
Fix bugs
-
Implement features from roadmap
-
Improve documentation
-
Add tests
-
Optimize performance
See [Development](#development) section for setup instructions.
Share rubrics for your module:
= Export your rubric image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] aws-core rubric export M250 TMA02 > M250-TMA02.yml = Submit via PR to rubrics repository image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"] = https://github.com/academic-workflow-suite/rubrics image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"]Contributors are recognized in:
-
[Contributors](https://github.com/academic-workflow-suite/graphs/contributors) page
-
Release notes
-
Annual contributor report
Top contributors may receive: - AWS swag (stickers, t-shirts) - Early access to new features - Invitation to contributor meetups
This project is licensed under the Palimpsest-MPL License v3.0 (PMPL-1.0).
Academic Workflow Suite Copyright (C) 2025 Academic Workflow Suite Contributors This program is free software: you can redistribute it and/or modify it under the terms of the Palimpsest-MPL License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Palimpsest-MPL License for more details. You should have received a copy of the Palimpsest-MPL License along with this program. If not, see <https://www.gnu.org/licenses/>.Why AGPL?
We chose PMPL-1.0 to ensure that:
-
AWS remains free and open source for all users
-
Improvements are shared with the community (even for web services)
-
Student privacy is protected (source code is auditable)
-
Commercial vendors must contribute back if they modify AWS
See: [LICENSE](LICENSE) for full text
Documentation is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).
You are free to: - Share — copy and redistribute the material - Adapt — remix, transform, and build upon the material
Under the following terms: - Attribution — You must give appropriate credit - ShareAlike — If you remix, you must distribute under the same license
If you use Academic Workflow Suite in your research or teaching, please cite:
APA Style:
Academic Workflow Suite Contributors. (2025). Academic Workflow Suite: Privacy-First AI-Assisted TMA Marking (Version 0.1.0) [Computer software]. https://github.com/academic-workflow-suiteBibTeX:
@software{academic_workflow_suite_2025, title = {Academic Workflow Suite: Privacy-First AI-Assisted TMA Marking}, author = {{Academic Workflow Suite Contributors}}, year = 2025, version = {0.1.0}, url = {https://github.com/academic-workflow-suite}, license = {PMPL-1.0}, keywords = {education, AI, privacy, marking, assessment} }If you publish research about AWS, please let us know! We maintain a [Publications](https://aws-edu.org/publications) page.
Thank you to all our contributors:
-
See [Contributors](https://github.com/academic-workflow-suite/graphs/contributors) for full list
This project was inspired by:
-
Open University Associate Lecturers who dedicate countless hours to student feedback
-
Privacy-preserving AI research from academia
-
Open-source education tools like Moodle, Open edX, and Jupyter
Built with excellent open-source technologies:
| Technology | License | Purpose | |------------|---------|---------| | [Rust](https://www.rust-lang.org/) | MIT/Apache-2.0 | Core engine | | [ReScript](https://rescript-lang.org/) | MIT | Frontend | | [Actix-Web](https://actix.rs/) | MIT/Apache-2.0 | Web framework | | [LMDB](https://www.symas.com/lmdb) | OpenLDAP | Database | | [ONNX Runtime](https://onnxruntime.ai/) | MIT | AI inference | | [Docker](https://www.docker.com/) | Apache-2.0 | Containerization | | [Office.js](https://docs.microsoft.com/en-us/office/dev/add-ins/) | MIT | Word integration |
This project is currently self-funded by contributors. If you’d like to support development:
-
[GitHub Sponsors](https://github.com/sponsors/academic-workflow-suite)
-
[Open Collective](https://opencollective.com/aws-edu)
-
Version: 0.1.0 (Initial Release)
-
Status: Beta - Ready for testing
-
Stability: Experimental - Use with caution in production
| Platform | Status | Notes | |----------|--------|-------| | Windows 10/11 | ✅ Supported | Tested on Word 2019, Office 365 | | macOS 11+ | ✅ Supported | Intel and Apple Silicon | | Linux (Ubuntu) | ✅ Supported | 20.04 LTS and later | | Linux (Other) |
-
AI models: Currently English-only
-
Office: Word only (Excel/PowerPoint not supported)
-
Moodle: Integration not yet available (v0.2.0)
-
Batch processing: Limited to 100 TMAs at once
Stay informed about releases:
-
[Release Notes](https://github.com/academic-workflow-suite/releases) - All releases
-
[Newsletter](https://aws-edu.org/newsletter) - Monthly updates
-
[RSS Feed](https://github.com/academic-workflow-suite/releases.atom) - Release notifications
-
[Twitter](https://twitter.com/aws_edu) - Announcements
-
[Moodle](https://moodle.org/) - Open-source LMS
-
[Open edX](https://open.edx.org/) - MOOC platform
-
[Gradescope](https://www.gradescope.com/) - Grading platform
-
[Turnitin](https://www.turnitin.com/) - Plagiarism detection
-
[Zotero](https://www.zotero.org/) - Reference management
-
[LaTeX](https://www.latex-project.org/) - Document preparation
-
[Jupyter](https://jupyter.org/) - Interactive notebooks
-
[Hypothesis](https://web.hypothes.is/) - Web annotation
-
Homepage: https://aws-edu.org
-
Documentation: https://docs.aws-edu.org
-
Blog: https://blog.aws-edu.org
-
Twitter: [@aws_edu](https://twitter.com/aws_edu)
-
LinkedIn: [AWS Education](https://linkedin.com/company/aws-edu)
-
YouTube: [AWS Tutorials](https://youtube.com/@aws-edu)
-
General Inquiries: hello@aws-edu.org
-
Support: support@aws-edu.org
-
Press: press@aws-edu.org
-
Security: security@aws-edu.org
<div align="center">
If you find AWS useful, please consider starring the repository. It helps others discover the project!
[](https://github.com/academic-workflow-suite/aws)
Made with ❤️ by educators, for educators
Privacy-first • Open-source • Community-driven
Academic Workflow Suite - Empowering educators while protecting student privacy
</div>
Last Updated: 2025-11-22 Version: 0.1.0 Status: Beta Release