Microsoft AI & Education

CohortAI

AI-powered course intelligence, built on the Microsoft stack

AI-powered course intelligence built on the 2026 Microsoft platform. Students get a personal tutor that knows every lecture, tutorial and past exam. Teachers get real-time intelligence on who's struggling and why. All inside Microsoft Teams. Deployed over one weekend.

494
Docs Indexed
20
Students
30
Endpoints
35
Functions
80
Graph Nodes
167
Graph Edges
Deployed Over 1 Weekend
From Zero to Working Demo
πŸŽ“

The Student Experience

Students open Teams and chat with CohortAI like they'd message a friend. No new apps to install, no portals to bookmark, no passwords to remember. The AI knows the course material, tracks their progress, and adapts to their level.

Core
πŸ’¬ AI Tutor
Ask anything about the course. Get Socratic guidance grounded in course materials.
Uses RAG to search 316 indexed documents: lectures, tutorials, textbook chapters, past exams. Returns grounded answers with source citations. Maintains 10-turn conversation history so follow-up questions work naturally. Guides students toward understanding rather than giving direct answers.
POST /api/tutor
Example in Teams
I don't understand how to draw a free body diagram for a truss joint
Good question. Let's start with the basics β€” when you isolate a joint, what forces act on it? Think about what's connected to that joint.

πŸ“š Sources: Lecture 3 β€” FBDs (Week 3)
The members connected to it?
Exactly. Each member exerts a force along its axis. Now, at a pin joint, are those forces tension or compression? What's the difference?
Core
πŸ“ Adaptive Quizzes
Practice questions that match the student's current level. Auto-graded with targeted feedback.
Two modes: generate creates questions, answer scores them. Difficulty adapts to mastery: below 40% gets foundation, 40-70% gets application, above 70% gets analysis-level questions. Each answer returns a score, correctness, detailed feedback, and any misconceptions identified. Mastery graph updates after each attempt.
POST /api/quiz
Example in Teams
Quiz me on trusses
πŸ“ Quiz: Trusses
Difficulty: Application (your mastery: 50%)

A planar truss has 7 joints and 11 members. Is it statically determinate? Explain using the equation m = 2j βˆ’ r.
m = 2j - 3, so 2(7) - 3 = 11. Yes it's determinate.
βœ… Score: 4/5. Correct conclusion! One note: you wrote r = 3 which assumes 3 reaction forces (pin + roller). That's right here, but always check the support conditions first.
Core
πŸ“Έ Work Assessment
Photograph handwritten work. Get rubric-based feedback in seconds.
Uses GPT-4o Vision to analyse photos of handwritten engineering solutions. Scores against a five-criterion rubric: Free Body Diagram (25%), Method Selection (25%), Calculations (25%), Final Answer (15%), Communication (10%). Returns overall score, per-criterion breakdown, strengths, areas for improvement, and written feedback.
POST /api/assess
Example in Teams
Can you check my work? πŸ“Ž photo
πŸ“Š Overall Score: 72/100

β€’ Free Body Diagram: 22/25
β€’ Method: 20/25 β€” correct approach
β€’ Calculations: 15/25 β€” sign error in moment equation
β€’ Answer: 10/15
β€’ Communication: 5/10

πŸ”§ Check the moment about point A. The distance for the 5kN force is incorrect.
Personalised
πŸ“š Study Tools
Recommendations, study plans, and a personal dashboard driven by mastery data.
🎯
Study Recommendations
Identifies the 3 weakest topics (below 60% mastery), sorted by week. Generates specific revision strategies with links to relevant course resources.
POST /api/study-recs
πŸ“‹
Study Plan
Structured plan covering up to 4 focus areas. Searches course resources for each topic and builds a prioritised schedule based on overall mastery.
POST /api/study-plan
πŸ“Š
Personal Dashboard
HTML dashboard showing mastery per topic, overall average, and class rank. Can be pinned as a Teams tab for always-on visibility.
GET /api/dashboard?view=student
Student Dashboard β€” Grady Archie (ENGG1300)
Live preview of the student mastery dashboard. Each student sees their own topic-by-topic progress, overall average, and class rank.
πŸ‘©β€πŸ«

The Teacher Experience

Teachers don't need to go looking for problems. CohortAI surfaces them automatically. Daily alerts for at-risk students, real-time curriculum intelligence, and a weekly digest that writes itself.

Automated
⚠️ Early Warning System
Daily automated scan. Flags students falling behind before they fail.
Runs on a daily timer (7am AEST). Scans every student's mastery graph against a configurable threshold (default 50%). Sorts results by severity. Sends Adaptive Card alerts to the teacher's Teams channel via Microsoft Graph. Also available on demand.
GET /api/early-warning?threshold=50
Daily Alert in Teams
⚠️ Early Warning Report (threshold: 50%)
Students at risk: 3 of 20

πŸ”΄ Neva Nolan β€” Distributed Loads: 29%
πŸ”΄ Alex Chen β€” Frames: 35%
🟑 Sam Park β€” Trusses: 42%, FBDs: 48%
On Demand
πŸ“Š Curriculum Signals
Which topics are students struggling with? Cohort-level intelligence in real time.
Aggregates mastery data across all students per topic. Calculates averages, standard deviation, and severity. Identifies topics where many students fall below threshold. Suggests specific actions: more worked examples, extra tutorials, adjusted pacing. Cached 1 hour.
POST /api/curriculum_signals
Example in Teams
Show me the curriculum signals
πŸ“Š Curriculum Signals

[HIGH] Distributed Loads β€” avg: 38%
β†’ Add more worked examples

[MEDIUM] Frames β€” avg: 52%
β†’ Review tutorial difficulty

[OK] Free Body Diagrams β€” avg: 71%
Weekly
πŸ“ˆ Curriculum Digest
GPT-4o writes a narrative summary of how the cohort tracked this week.
Collects mastery data, quiz scores, and engagement signals, then GPT-4o writes a plain-English summary. Can auto-post to a Teams channel for the teaching team. Cached 1 hour. Teachers can trigger a fresh digest and post with ?post=true.
POST /api/curriculum_digest
Weekly Summary
Strong progress on FBDs this week β€” average mastery rose from 62% to 71% after the extra tutorial. However, Distributed Loads remains concerning: 8 of 20 students below 50%. Consider a worked example session before mid-term. Three students need individual check-ins.
Automated
πŸ“š Generate Module
Auto-creates Teams Classwork modules with targeted resources for struggling topics.
Detects topics where students are struggling, then GPT-4o generates a full remediation module: concept reviews, worked examples, practice problems, and quick reference cards. Each resource is uploaded as an HTML file to SharePoint and linked in Teams Classwork as a draft module for teacher review before publishing. Two modes: single topic or auto-scan all topics below threshold.
POST /api/generate-module
Module Generation
Generate a module for Distributed Loads
πŸ“š Module Created: Understanding Distributed Loads, Shear Force, and Bending Moment

5 resources uploaded to Classwork:
πŸ“– Concept Review Β· ~15 min
✏️ Worked Example: UDL on Simply Supported Beam · ~20 min
✏️ Worked Example: Triangular Load on Cantilever · ~20 min
πŸ“ Practice Problems Β· ~25 min
πŸ“‹ Quick Reference Card Β· ~5 min

Status: DRAFT β€” review and publish in Classwork tab.
Visual
πŸ“Š Dashboards
Cohort and teacher views. Pin as Teams tabs for always-on visibility.
πŸ‘₯
Cohort View
All students ranked by overall mastery. Topic-by-topic breakdown. See who's ahead, who's behind, and where the gaps are at a glance.
GET /api/dashboard?view=cohort
🏫
Teacher View
Aggregated analytics: class averages per topic, at-risk count, engagement trends. The view for a course review meeting.
GET /api/dashboard?view=teacher
Teams Tabs
πŸ“‘ Static Tabs
Three dedicated tabs in the CohortAI Foundry app. Teams dark purple palette. SSO-authenticated.
πŸŽ“
Course Admin
Self-service course provisioning wizard. Upload a PDF, review extracted structure, add teaching team, click provision. Role-gated via Teams SSO β€” students see a lock screen.
GET /api/teacher-portal
πŸ“Š
My Gradebook
Cross-course student mastery matrix. Each student sees their performance across all enrolled courses with topic-level heatmap, cohort ranking, and progress trends.
GET /api/gradebook
πŸ“ˆ
Teacher Insights
Cross-course intelligence dashboard for teaching staff. Program-wide topic difficulty rankings, course health comparison, at-risk student aggregation, and curriculum signals that span multiple courses.
GET /api/teacher-insights
Teacher Dashboard β€” ENGG1300 Engineering Mechanics
The teacher dashboard: KPI cards, studentΓ—topic heatmap, mastery distribution, at-risk student alerts, topic health, and full student roster. This is the view for a course review meeting.
Cohort Leaderboard β€” ENGG1300
Gamified cohort view: students ranked by overall mastery. First name + last initial for privacy. Pinnable as a Teams tab for always-on visibility.
⚑

How It Works

Every interaction follows the same path through the Microsoft stack.

1
Student sends a message in Teams
"Quiz me on trusses" or "Can you check my work?" Natural language, no commands to learn.
Microsoft Teams β†’ Foundry Agent (v2) or Copilot Studio (v1)
2
Agent decides what to do
The Foundry agent reads the message, checks its File Search index for relevant course material, and selects the right OpenAPI tool. No manual topic routing needed. Can chain multiple tools in a single conversation turn.
Foundry Agent (GPT-4o) β†’ OpenAPI Tools β†’ Azure Functions (HTTP POST)
3
Function resolves the student from the knowledge graph
Looks up the student in Cosmos DB Gremlin by email. Retrieves their mastery scores per topic, quiz history, and engagement level. Falls back to name matching if email case doesn't match.
Azure Functions β†’ Cosmos DB (Gremlin API)
4
AI does the heavy lifting
Depending on the endpoint: semantic search across 316 documents (tutor), adaptive question generation (quiz), photograph analysis via Vision (assess), or mastery aggregation (signals). All generation and reasoning handled by GPT-4o on Azure OpenAI.
Azure AI Search + Azure OpenAI (GPT-4o, Sweden Central)
5
Formatted response returned to Teams
Every endpoint returns a display_text field with clean, formatted output. No raw JSON. The Foundry agent weaves the response into a natural conversation with source citations. Students see a helpful response, not a data dump.
Azure Functions β†’ Foundry Agent β†’ Microsoft Teams
πŸ—οΈ

System Architecture

      graph TD
        ST["πŸŽ“ Students β€” Microsoft Teams"] --> FA
        TC["πŸ‘©β€πŸ« Teachers β€” Microsoft Teams"] --> FA
        ST -.->|"v1 path"| CS
        TC -.->|"v1 path"| CS
        
        FA["🧠 Foundry Agent β€” GPT-4o + OpenAPI Tools (v2/v3)"] --> AF["⚑ Azure Functions β€” 30 Endpoints"]
        FA --> VS["πŸ“– File Search β€” 494 Documents"]
        FA --> CI["πŸ”’ Code Interpreter β€” Engineering Math"]

        CS["πŸ€– Copilot Studio (v1)"] --> AF
        CS --> AS["πŸ” Azure AI Search β€” 494 Chunks"]
        
        AF --> TU["πŸ’¬ /tutor β€” Socratic RAG"]
        AF --> QZ["πŸ“ /quiz β€” Adaptive MCQ"]  
        AF --> AZ["πŸ“Έ /assess β€” Vision Rubric"]
        AF --> SR["πŸ“š /study-recs β€” Weak Topics"]
        AF --> SP["πŸ“‹ /study-plan β€” Structured Plan"]
        AF --> DB["πŸ“Š /dashboard β€” HTML Views"]
        
        AF --> EW["⚠️ /early-warning β€” At-Risk Scan"]
        AF --> CD["πŸ“ˆ /curriculum_digest β€” Weekly Narrative"]
        AF --> CZ["πŸ” /curriculum_signals β€” Mastery Gaps"]
        AF --> GM["πŸ“š /generate-module β€” Auto Remediation"]
        AF --> UM["✏️ /update-module β€” Edit Content"]
        
        AF --> PO["πŸ“„ /parse-outline β€” PDF β†’ Curriculum"]
        AF --> PC["⚑ /provision-course β€” Auto Setup"]
        AF --> XC["πŸ”— /cross-course-signals β€” Programme Intel"]
        AF --> TP["πŸŽ“ /teacher-portal β€” Course Admin Tab"]
        AF --> GB["πŸ“Š /gradebook β€” Student Mastery Tab"]
        AF --> TI["πŸ“ˆ /teacher-insights β€” Cross-Course Tab"]
        AF --> AC["πŸ”’ /auth-check β€” Teams SSO Gate"]
        
        TU --> CG["πŸ—„οΈ Cosmos DB β€” Gremlin Graph"]
        QZ --> CG
        AZ --> CG  
        SR --> CG
        SP --> CG
        EW --> CG
        CD --> CG
        CZ --> CG
        
        TU --> GP["πŸ€– Azure OpenAI β€” GPT-4o"]
        QZ --> GP
        AZ --> GP
        SR --> GP  
        SP --> GP
        CD --> GP
        GM --> GP
        
        TU --> AS
        
        AS --> SH["πŸ“ SharePoint β€” Course Content"]
        GM --> BS["πŸ“¦ Azure Blob β€” Generated Modules"]
        UM --> BS
        
        EW -.->|"Daily 7am AEST"| MG["πŸ“± Microsoft Graph β€” Teams Alerts"]
        CD -.->|"Auto-post"| MG
        
        classDef userLayer fill:#00827233,stroke:#008272,stroke-width:2px,color:#201F1E
        classDef orchestrationLayer fill:#0078D433,stroke:#0078D4,stroke-width:2px,color:#201F1E
        classDef computeLayer fill:#5C2D9133,stroke:#5C2D91,stroke-width:2px,color:#201F1E
        classDef dataLayer fill:#D83B0133,stroke:#D83B01,stroke-width:2px,color:#201F1E
        classDef foundryLayer fill:#6366f133,stroke:#6366f1,stroke-width:2px,color:#201F1E
        
        class ST,TC userLayer
        class CS,AS orchestrationLayer
        class FA,VS,CI foundryLayer
        PO --> GP
        PC --> CG
        PC --> MG
        XC --> CG
        GB --> CG
        TI --> CG
        AC --> MG
        
        class AF,TU,QZ,AZ,SR,SP,DB,EW,CD,CZ,GM,UM,PO,PC,XC,TP,GB,TI,AC computeLayer
        class CG,GP,SH,MG,BS dataLayer
    
User Layer (Teams)
Foundry Agent v2 (File Search + Code Interpreter)
Orchestration v1 (Copilot Studio + AI Search)
Compute (Azure Functions + GPT-4o)
Data (Cosmos DB + SharePoint + Blob)
🧱

Microsoft Stack

Orchestration (v2)
Foundry Agent Service
GPT-4o agent with 11 OpenAPI tools, File Search (494 docs), and Code Interpreter. Intelligent routing replaces manual Topic configuration. Three-role system prompt (7,431 chars).
Orchestration (v1)
Copilot Studio
Natural language routing via 9 Topics with trigger phrases. Each fires an HTTP Request to Azure Functions. Shares the same Azure Functions backend as v2.
AI Model
Azure OpenAI (GPT-4o)
Sweden Central deployment. Tutoring, quiz generation, scoring, work assessment (Vision), study plans, curriculum narratives, and module generation. 25-second timeout per call.
Knowledge
Azure AI Search + Foundry Vector Store
494 documents indexed. AI Search (v1 RAG path) + Foundry File Search (v2 path). Lectures, transcripts, quiz banks, workshop problems, past exams.
Graph
Cosmos DB (Gremlin)
80 vertices, 167 edges. Students, topics, mastery estimates, prerequisites. Powers adaptive difficulty, progress tracking, early warning.
Compute
Azure Functions (Python)
37 functions, 32 HTTP endpoints, 5 timer triggers. Serverless, auto-scaling. Multi-course provisioning, cross-course intelligence, teacher portal with SSO auth, gradebook and teacher insights tabs, in-memory caching (1hr TTL), time budgets, and Azure Blob storage for generated module content. Teams dark purple theme across all dashboard surfaces.
Interface
Microsoft Teams
Zero new apps. Chat-native experience. Standalone bot + three static tabs: Course Admin (teacher portal with SSO), My Gradebook (cross-course student mastery), Teacher Insights (cross-course intelligence). Role-gated access (teachers/admins only). All UI surfaces use Teams dark purple palette.
Identity
Microsoft Graph + Entra ID
Two-identity model: infrastructure SP (Frontier Ops Pilot) for Graph API + resource management, product app (CohortAI) for bot auth + Teams SSO. Roster sync from Education API. Role-based access via class teacher membership + admin UPN whitelist.
Content
SharePoint
Source content library. Lecturers upload course materials, AI Search indexes automatically. No manual curation needed.
πŸ›‘οΈ

Agent Governance Layer

Runtime Governance
Microsoft Agent Governance Toolkit Patterns
Built on Microsoft's open-source Agent Governance Toolkit. Sub-millisecond policy evaluation on every agent action. Currently in audit mode (logs violations, never blocks). Covers all 10 OWASP Agentic Top 10 risks + NIST AI Agent Security RFI alignment.

Dashboard: Live Governance Centre (auto-refresh 10s)
Trust Scoring
0–1000 Scale, 5 Tiers
Every agent earns trust through policy compliance and successful task completion. Trust decays without positive signals. Verified (900+), Trusted (700–899), Standard (500–699), Probationary (300–499), Untrusted (0–299). Privilege expansion/contraction based on behaviour.
Least Agency
Capability-Based Access
10 agents, each with explicit allowed/denied actions. Tutor can search content, read transcripts, generate explanations β€” denied write grades, delete data, read PII. Assessment can read rubrics, draft feedback β€” denied write grades. Admin can read enrolment β€” denied modify content.
Execution Rings
4-Tier Privilege Model
Ring 0 (Platform/infrastructure only), Ring 1 (Orchestration: triage, provisioning, sync), Ring 2 (Specialist: tutor, assessment, admin, teacher tools), Ring 3 (Student-facing via bot relay). Child agents can never have more permissions than parent. Delegation chains must narrow.
OWASP Agentic Top 10
Full Coverage
ASI-01 Goal Hijacking, ASI-02 Tool Misuse, ASI-03 Identity Abuse, ASI-04 Supply Chain, ASI-05 Code Execution, ASI-06 Memory Poisoning, ASI-07 Inter-Agent Comms, ASI-08 Cascading Failures, ASI-09 Trust Exploitation, ASI-10 Rogue Agents. Each mapped to specific mitigations.
Audit Trail
Structured Event Log
Every agent action logged with timestamp, agent ID, action, resource, principal, decision, violations, trust score, execution ring, latency. Demo includes 25+ seeded events showing 3 audit violations (tutor→write_grades, admin→delete_data, assessment→read_pii).

Platform Roadmap

v1
CohortAI v1 β€” Copilot Studio
Zero custom framework code. Copilot Studio for natural language understanding. AI Search for automatic content indexing (upload to SharePoint, done). Cosmos DB Gremlin for student knowledge graphs. GPT-4o Vision for handwritten assessment. Every component is a managed Azure service. Setup: hours, not years.
Copilot Studio Azure OpenAI AI Search Cosmos DB Azure Functions Graph API
β†’
v2 βœ…
Foundry Agent Service β€” Deployed
LLM-powered Foundry agent replaces rigid Topic routing. One conversation spans tutoring β†’ quiz β†’ study plan. File Search over 494 documents. Code Interpreter for engineering calculations. Same backend, same graph β€” new brain, same body. 11/11 endpoints verified.
Foundry Agent Service File Search (494 docs) Code Interpreter OpenAPI Tools (11)
v3 βœ…
Multi-Course Provisioning β€” Deployed
Upload a Course Outline PDF β†’ GPT-4o extracts curriculum structure β†’ auto-provisions M365 Team, Cosmos graph, AI Search index, and routing. Single Foundry agent serves all courses. Cross-course intelligence: at-risk detection, prerequisite gaps, curriculum coverage.
Course Outline Parser Auto-Provisioning Multi-Course Routing Cross-Course Intelligence
β†’
v3.1 βœ…
Identity, Tabs & Theme β€” Deployed
Two-identity architecture with Teams SSO. Three static tabs: Course Admin, My Gradebook, Teacher Insights. Role-gated via Graph Education API. All dashboards rethemed to Teams dark purple palette. 35 functions, 30 endpoints, 5 timer triggers.
Teams SSO Role-Based Access 3 Static Tabs Two-Identity Model 35 Functions Dark Purple Theme
βœ…

Version 2 β€” Foundry Agent Service (Complete)

The orchestration layer has been upgraded. Foundry Agent Service replaces Copilot Studio's rigid Topic routing with intelligent, multi-turn conversations. Deployed and verified.

🧠
Intelligent Routing βœ…
No manual Topic configuration. The Foundry agent understands context and decides which of 11 OpenAPI tools to call. A student asking about distributed loads gets tutoring β†’ detects struggle β†’ pulls a quiz β†’ updates mastery β€” all in one conversation. 9/11 endpoints verified end-to-end.
πŸ“–
File Search + RAG βœ…
494 course documents indexed in a Foundry vector store. Lectures, transcripts, quiz banks, workshop problems, and policy documents. Agent retrieves and cites relevant material when tutoring. Grounded answers, not hallucinations.
πŸ”’
Code Interpreter βœ…
Built-in Code Interpreter for live engineering calculations. Solving equilibrium equations, computing truss member forces, drawing SFD/BMD shapes, calculating centroids and moments of inertia. Shows working, not just answers.
🎭
Three-Role Architecture βœ…
7,431-character system prompt with three distinct roles: Tutor (Socratic method, source citations), Admin (schedules, policies, deadlines), and Assessment (image submission, rubric-based feedback). Full ENGG1300 course schedule embedded.
πŸ›‘οΈ
Content Safety
Azure AI Content Safety available on every interaction. Filters inappropriate content, generates audit logs for compliance. Required for production deployment in any university setting.
πŸ”„
Zero Data Migration βœ…
Same Azure Functions became agent tools via OpenAPI spec. Same Cosmos DB graph, same AI Search index, same Azure OpenAI. Swapped the orchestration layer. Everything else stayed. Platform has since grown to 35 functions and 30 endpoints.
βœ…

Version 3 β€” Multi-Course Provisioning (Complete)

CohortAI is no longer a single-course system. Upload a course outline PDF, the system extracts the curriculum structure, provisions everything, and the bot serves that course immediately. Cross-course intelligence identifies students at risk across their entire programme.

πŸ“„
Course Outline Parser βœ…
Upload a Course Outline PDF. GPT-4o extracts topics, learning outcomes (with Bloom's taxonomy), weekly schedule, assessments (with weightings and dates), prerequisites, staff, and inferred relationships. Returns structured JSON matching the CohortAI ontology schema.
⚑
Auto-Provisioning βœ…
One API call creates everything: M365 Education class + Team, Cosmos DB graph partition with topics/assessments/prerequisites/learning outcomes, AI Search index, team→course routing registration. From PDF to working bot in ~10 minutes.
πŸ”€
Single Agent, Multi-Course βœ…
One Foundry agent serves all courses. The Teams relay extracts the Team ID from every message, resolves which course that Team belongs to, and injects course context before the agent sees the message. No per-course agent configuration needed.
πŸ”
Cross-Course Intelligence βœ…
Teachers see signals about students based on prerequisite course performance. "65% of your incoming cohort scored below 50% on Distributed Loads in ENGG1300." At-risk detection, prerequisite gap analysis, curriculum coverage β€” all from Gremlin graph traversals across course partitions.
🎯
Student Pathway Intelligence
With multiple courses provisioned, the system can answer: "Given your grades in ENGG1300, here's where you'll struggle in MECH4400." Prerequisite chains across an entire degree, not just one subject. The more courses, the smarter it gets.
πŸ”¬
Curriculum Quality Detection
The ontology catches structural issues: "This assessment covers Topic 7 but Topic 7 has a prerequisite not taught until Week 9." Faculty dashboard potential: "Which learning outcomes are under-assessed across the programme?"