Autonomous Academic Orchestrator for Filipino University Students.
A Microsoft Copilot–powered SaaS that reads every syllabus, names the weeks where deadlines collide, and plans your study time around your real Outlook calendar and Teams availability.
👋 Meet Mate — your calm, judgment-free study partner.
Filipino university students face a single structural failure that surfaces as three compounding pains:
The Extraction Burden. Professors hand out scanned-PDF syllabi in week 1 and never mention them again. A student carrying six courses must manually read every document, copy every assessment, and transcribe every due date into a calendar app. The work is tedious, repetitive, and the failure mode is silent. Deadlines that were never extracted cannot be remembered.
The Collision Blindness. Even students who keep a flawless calendar discover too late that three majors are due in the same week. Existing planners list tasks. They do not reason about workload. They cannot tell a student in week 3 that week 11 is going to break them unless that student starts on a specific project today.
The Tool Abandonment Loop. Setup-heavy planners like Notion and MyStudyLife demand the exact executive function that overwhelmed students lack. Each abandonment compounds the shame. Generic LLMs like ChatGPT confidently fabricate dates that were never in the source document, and students learn not to trust them.
Existing tools record the absence of structure. They do not generate it. The market needs an orchestrator, not another data repository.
A Philippines where every university student opens one calm dashboard and sees exactly what their semester looks like. Every deadline is already extracted. Every collision week is already named. Every study block is already proposed around the meetings the student has in Outlook and the reminders that reach them in Teams. The student never opens a syllabus PDF, a calendar template, or a planner app again.
Mate is the central orchestrator where extraction, reasoning, and integration become a single autonomous machine, so the student steps out of the logistics trench and focuses on actually learning.
Built for the KPMG Academic Innovation Challenge 2026, Mate was born from a structured research pass on Filipino student productivity. We found that the extraction burden, collision blindness, and tool abandonment loop are not independent problems. They are three faces of the same structural failure. Every syllabus contains the deadlines, every deadline contains the workload signal, and every student already lives inside Microsoft 365. You cannot solve one without solving all three.
We merged AI-powered document extraction, deadline conflict reasoning, adaptive scheduling, and live Microsoft 365 integration into a single Copilot-powered pipeline, because the integration is architecturally inseparable, not four products glued together.
- Primary, the Commuter Undergraduate (Carlo). 19 years old, BS Computer Science at a large public university, lives 2.5 hours from campus, six courses per term, Android phone with a hand-me-down laptop. Owns a calendar app and still misses deadlines. Realizes too late that three major requirements land in the same week. Already uses ChatGPT for academic help and does not trust its accuracy.
- Secondary, the Neurodivergent Notion-Abandoner (Bea). 21 years old, AB Communication at a private university, iPhone with a MacBook, self-diagnosed ADHD. Has abandoned three planner templates this year. Setup friction exceeds her patience window. Rigid scheduling tools trigger a shutdown response, and shame-based streaks make her quit entirely after a bad week.
- Syllabus Ingestion via Mistral Document AI. Drag-and-drop PDF upload. Mistral Document AI extracts course name, every assessment, and every due date into structured JSON with per-item confidence scoring.
- Confidence-Scored Human-in-the-Loop Review. Low-confidence items are flagged "needs review" rather than silently accepted. A View Metrics toggle reveals the raw ML probability behind every extraction. Nothing reaches the database until the student clicks Approve All.
- Deadline Conflict Reasoning. Mate scans across all uploaded courses and names the weeks where multiple major deliverables collide. Each collision week ships with a concrete early-intervention suggestion.
- Adaptive Study-Block Scheduling. Generate realistic study blocks that respect stated availability, map to upcoming deadlines by priority, and never overlap existing commitments.
- Lateral Language Chat with Clarifying Questions. Ask "help me plan my week" in plain language. Mate asks exactly one clarifying question when information is missing, then plans. Powered by Microsoft Copilot via Azure AI Foundry.
- Outlook Calendar Two-Way Sync. One click pushes approved study blocks into the student's real Outlook calendar as events through Microsoft Graph. Deleting an event in Outlook reflects on the next sync.
- Microsoft Teams Reminder Webhooks. Before each study block begins, Mate sends a native Teams notification with action buttons to mark done or push back, closing the gap between scheduling and actually being reminded.
- Outlook Free/Busy Availability Feed. The scheduler automatically pulls existing meetings from the student's Outlook so proposed blocks never collide with what they forgot to mention.
- Latency-Masking Feedback. A proactive "Reading now..." acknowledgment fires within one second of upload while the parse runs in the background, so the student never wonders if the app crashed.
- Manual Entry Fallback. When extraction confidence is critically low or parsing fails entirely, a guided manual entry flow takes over instead of presenting a dead end.
- Accuracy Verification Harness. A gold-labeled corpus of real PH syllabi at
app/qa/verifies under 2% date error and zero fabricated dates on every prompt or model change. - Microsoft Entra ID Authentication. Sign in with Microsoft, JWT session strategy, automatic access-token refresh, and
session.user.idalways pinned to the Entra subject ID.
| Layer | Technology |
|---|---|
| Frontend | Next.js 16 (App Router), React 19, TypeScript 5, Tailwind CSS |
| Backend | Next.js API Routes on Azure App Service |
| Database | Azure Cosmos DB (SEA region) |
| AI Orchestration | Microsoft Copilot / Azure OpenAI (GPT-class) via Azure AI Foundry |
| Document Extraction | Mistral Document AI via Azure AI Foundry |
| OCR Fallback | Azure AI Vision Read (planned for scanned PDFs) |
| Authentication | NextAuth v5 with Microsoft Entra ID |
| Calendar Integration | Microsoft Graph (Outlook events, free/busy) |
| Messaging Integration | Microsoft Teams (study-block reminders, webhooks) |
| Accuracy Verification | Gold-labeled corpus harness (app/qa/) |
| Hosting | Azure App Service (dev/test on MLSA subscription; commercial migration planned) |
graph TD
subgraph Client ["Client (Next.js 16 + React 19)"]
UI["Mate Web/PWA Dashboard<br/>Upload · Review · Conflicts · Ask Mate · Schedule"]
AUTH["NextAuth (Microsoft Entra ID)"]
end
subgraph Backend ["Backend — Azure App Service (SEA region)"]
API["Next.js API Routes"]
PROP["proposals-store<br/>(ephemeral until approval)"]
DB["Azure Cosmos DB<br/>users · courses · assessments · study_blocks"]
end
subgraph AI ["AI Layer — Azure AI Foundry"]
COPILOT["Microsoft Copilot<br/>(orchestration, lateral language, reasoning)"]
MISTRAL["Mistral Document AI<br/>(syllabus extraction)"]
VISION["Azure AI Vision Read<br/>(OCR fallback)"]
end
subgraph M365 ["Microsoft 365 — Live Integrations"]
GRAPH["Microsoft Graph API"]
OUTLOOK["Outlook Calendar<br/>(events · free/busy)"]
TEAMS["Microsoft Teams<br/>(reminder webhooks)"]
end
UI --> AUTH
AUTH --> API
UI --> API
API --> PROP
API --> DB
API --> COPILOT
API --> MISTRAL
MISTRAL -.fallback.-> VISION
API --> GRAPH
GRAPH --> OUTLOOK
GRAPH --> TEAMS
TEAMS -.reminder action.-> API
The extraction → approval → persistence flow is the load-bearing path. Proposals are ephemeral until the student approves.
graph LR
UP["POST /api/syllabi"] --> PARSE["pdf-extractor<br/>+ ai-foundry"]
PARSE --> STORE["proposals-store<br/>(in-memory)"]
STORE --> REVIEW["GET /api/proposals/:id<br/>PATCH /api/proposals/:id"]
REVIEW --> APPROVE["POST /api/proposals/:id/approve"]
APPROVE --> LOCK["approvingLocks<br/>(double-submit guard)"]
LOCK --> COSMOS[("Cosmos DB<br/>courses + assessments")]
COSMOS --> SURFACE["Dashboard:<br/>conflicts, schedule,<br/>Outlook sync, Teams reminders"]
mate/
├── docs/ Product documentation suite
│ ├── brd-mate.md Business requirements
│ ├── prd-mate.md Product requirements (binding spec, v0.5)
│ ├── dsd-mate.md Design system
│ ├── sdd-mate.md System design
│ ├── rfc-mate-syllabus-ingestion.md Extraction architecture
│ ├── qad-mate.md Quality assurance & accuracy gates
│ ├── clr-mate.md Compliance & legal readiness
│ ├── gtm-mate.md Go-to-market strategy
│ └── DEMO.md Demo video production guide & shot list
│
├── app/ Next.js 16 demo SaaS
│ ├── src/app/
│ │ ├── api/ API routes
│ │ │ ├── syllabi/ Upload & extraction
│ │ │ ├── proposals/ Review & approval
│ │ │ ├── courses/ Approved deadlines (grouped)
│ │ │ ├── assessments/ Per-deadline CRUD
│ │ │ ├── conflicts/ Collision week detection
│ │ │ ├── schedule/ Study block generation + reminders
│ │ │ ├── calendar/ Outlook events + availability sync
│ │ │ ├── teams/ Microsoft Teams reminder dispatch
│ │ │ ├── webhooks/ Inbound study-block lifecycle events
│ │ │ ├── chat/ Lateral-language chat with guardrails
│ │ │ └── auth/ NextAuth (Microsoft Entra ID)
│ │ ├── upload/ Upload page
│ │ ├── review/[id]/ Extraction review page
│ │ └── dashboard/ Tabbed dashboard
│ ├── src/components/ UI components
│ │ ├── ExtractionReview.tsx Review panel with View Metrics toggle
│ │ ├── MateChat.tsx Lateral-language chat (DSD §4)
│ │ ├── ConflictReport.tsx Collision week display
│ │ ├── SchedulePlanner.tsx Study block generator
│ │ ├── DeadlineManager.tsx View/edit deadlines grouped by syllabus
│ │ ├── ManualEntryForm.tsx Fallback when extraction fails
│ │ └── NavBar.tsx
│ ├── src/lib/ Integration clients
│ │ ├── ai-foundry.ts GPT + Mistral wrapper
│ │ ├── pdf-extractor.ts PDF text extraction
│ │ ├── microsoft-graph.ts Outlook calendar + free/busy
│ │ ├── microsoft-teams.ts Teams reminder integration
│ │ ├── cosmos.ts Cosmos DB client (singleton)
│ │ └── proposals-store.ts In-memory proposal store
│ ├── qa/ Accuracy verification harness
│ │ ├── corpus/ Gold-labeled syllabus fixtures
│ │ └── run-accuracy.ts Diff predictions vs gold labels
│ └── README.md App setup, env vars, API reference
│
├── test/ Canonical syllabus PDFs for demo
├── scripts/ Prompt guardrail tooling
├── KPMG.md Official competition brief
├── Mate.md Market research report
├── AGENTS.md Contributor & agent guidance
├── CLAUDE.md Codebase orientation for Claude Code
└── README.md ← You are here
- Node.js 20+ and npm 10+ (enforced in
app/package.jsonengines) - Azure subscription with AI Foundry deployments for GPT-class and Mistral Document AI
- Microsoft Entra ID app registration for NextAuth (sign-in with Microsoft)
- Azure Cosmos DB instance (NoSQL API)
cd app
npm install
npm run devOpen http://localhost:3000.
Verify Cosmos and AI Foundry credentials before running the full app:
cd app
npm run test:connectionsCopy the example and fill in your values (Azure endpoints, deployment names, Entra ID credentials):
cp app/.env.example app/.envRequired keys (full list in app/README.md):
COSMOS_ENDPOINT,COSMOS_KEY,COSMOS_DATABASEAI_FOUNDRY_ENDPOINT,AI_FOUNDRY_KEYGPT5_DEPLOYMENT_NAME,MISTRAL_LARGE_DEPLOYMENT_NAME,MISTRAL_DOCUMENT_DEPLOYMENT_NAMEAZURE_AD_TENANT_ID,AZURE_AD_CLIENT_ID,AZURE_AD_CLIENT_SECRETCONFIDENCE_THRESHOLD(default0.75)
Verify extraction quality against the gold-labeled corpus:
cd app
npx ts-node qa/run-accuracy.tsPass criteria: date-extraction error rate under 2%, zero fabricated dates.
- Hosting: Azure App Service (
southeastasiaregion) - Database: Azure Cosmos DB (NoSQL, SEA region, disposable pilot instance)
- AI: Azure AI Foundry deployments for GPT-class and Mistral Document AI
- Auth: Microsoft Entra ID (Microsoft 365 developer tenant)
- Licensing: Microsoft Learn Student Ambassador Visual Studio Enterprise subscription (dev/test credit) plus M365 developer tenant. This is dev/test-licensed only and not suitable for production or paying users.
Commercial v1 requires migration to a separate, org-owned, commercially-licensed Azure subscription (e.g., Azure for Startups or Microsoft for Founders Hub) and an org-owned tenant before any public or paying user. Production identity and billing must never depend on a personal ambassador account. See docs/sdd-mate.md §1 and docs/clr-mate.md for the full migration register.
The test/ directory ships two real Philippine university syllabus PDFs that the team validates against:
CS-SOCSCI-SocSc12-TANGARA_A-F1-2022-1.pdfLatest_Multimedia_OBEorOBTLP-Format.pdf
These are paired with gold labels at app/qa/corpus/ for the accuracy harness.
- Demo Video: YouTube (5-minute walkthrough)
- Production Guide: docs/DEMO.md (shot list, voice-over, risk register)
- Live App: mate.axonenjin.com
The 5-minute video follows this order to showcase the full pipeline (full shot list in docs/DEMO.md):
- Hook + Stack — Problem framing, then a one-overlay summary: Microsoft Copilot, Azure AI Foundry, Mistral Document AI, Microsoft Graph, Cosmos DB.
- Ingestion + Accuracy Proof — Upload a real PH syllabus. View extraction with confidence scores. Flash the QA harness output showing under 2% error and zero fabrication.
- Conflict Reasoning — Add a second syllabus. Mate names the collision week and suggests when to start each project.
- Lateral Language — Type "help me plan my week" in the Ask Mate panel. Mate asks one clarifying question before answering.
- Adaptive Scheduling — Study blocks render in priority order around stated availability.
- Outlook Calendar Sync (Live) — One click pushes blocks to a real Outlook calendar through Microsoft Graph. Visible in a second browser window.
- Microsoft Teams Reminder (Live) — A native Teams notification arrives before a block starts, with action buttons.
- Outlook Availability Feed — The scheduler respects existing Outlook meetings automatically.
- Close — Zero setup. Zero fabricated dates. Four capabilities, three live Microsoft 365 integrations.
Team Name: Axon Enjin
| Name | Role | GitHub |
|---|---|---|
| Carlos Jerico Dela Torre | Product & Business Architect, Team Lead | @delatorrecj |
| Rhandie Sales Jr. | Full Stack Engineer | @r0undy |
| Aidan Tiu | DevOps Engineer | @aidantiu |
| Phase | Focus | Status |
|---|---|---|
| Phase 1 — Competition Demo | KPMG demo build. Four judged capabilities plus three live M365 integrations on dev/test Azure. | Current |
| Phase 2 — Pilot Cohort | Limited consenting pilot with PH university students. Disposable Cosmos instance. DPA-compliant data handling. | Next |
| Phase 3 — Commercial v1 | Migrate to org-owned Azure subscription. Google Workspace integration. Mobile polish. Production hardening. | Planned |
| Phase 4 — LMS Integration | Canvas and Moodle ICS feeds first. Deep API integration as university partnerships mature. | Future |
| Priority | Item | Rationale |
|---|---|---|
| High | Azure subscription migration to commercial license | MLSA dev/test subscription cannot legally host production or paying users |
| High | Azure AI Vision Read OCR fallback wired in | Scanned and image-only PDFs currently fail extraction silently |
| High | Google Workspace integration (Calendar, Classroom, Drive) | Ecosystem parity with Microsoft 365 was a load-bearing PRD commitment |
| High | DOC/DOCX support beyond PDF | Currently accepted on upload but not reliably processed |
| Medium | Mobile polish at 375px breakpoint | Primary persona (Carlo) uses Android, not desktop |
| Medium | Re-upload deduplication (same filename warning) | Pilot users will accidentally re-upload the same syllabus |
| Medium | DPA-compliant data deletion workflow | RA 10173 applies from pilot stage onward |
| Microsoft Primitive | How Mate Uses It |
|---|---|
| Microsoft Copilot / Azure OpenAI | Orchestrates lateral-language interpretation, clarifying-question generation, and conflict-week reasoning. The brief's "Primary Platform: Copilot Studio" means Copilot is the primary AI engine; Mate is an independent SaaS that calls it via API. |
| Mistral Document AI on Azure AI Foundry | Schema-constrained syllabus extraction. Returns structured JSON with per-item confidence. Returns null rather than fabricating a date when the source is ambiguous. |
| Azure AI Vision Read | OCR fallback for scanned and image-only PDFs (planned). Routed automatically when Mistral confidence is critically low. |
| Microsoft Graph | Two-way Outlook calendar sync for approved study blocks. Free/busy lookups so generated schedules respect existing meetings. |
| Microsoft Teams | Native reminder notifications before each study block begins, with action buttons for done/snooze. The notification meets students inside the tool they already live in. |
| Microsoft Entra ID | Single sign-on for Filipino university students with Microsoft 365 education tenants. session.user.id is always the Entra subject ID, never email. |
| Azure Cosmos DB (SEA region) | NoSQL document model matches the syllabus → assessments shape. SEA region satisfies the PH Data Privacy Act preference for in-country data localization. |
| Azure App Service | Hosts the Next.js 16 SaaS in southeastasia. Same deployment pattern from demo through commercial v1. |
MIT for the application code. Documentation is part of the Mate project repository.