AISIS
One system for grades, attendance, and compliance - built role-first for a school district pilot, so a teacher, a counsellor, and a SpEd coordinator each see exactly what their role needs.
Client Challenge
AISIS needed a Student Information System MVP that a real school district could pilot - not a single shared admin screen with visibility toggles, but genuinely scoped access per role. Compliance tracking for SpEd/504 cases needed to be a real workflow with an engine behind it rather than a spreadsheet bolted onto a grading tool, attendance records needed to be defensible with a full audit trail, and the platform had to isolate each district's data cleanly by subdomain from day one, with no possibility of cross-tenant leakage as more districts came on board.
Objectives
- Give five distinct roles - District Admin, Teacher, Substitute, Counsellor, SpEd Coordinator - dashboards scoped to exactly what each needs.
- Turn SpEd/504 compliance tracking into a real, engine-backed workflow rather than a spreadsheet.
- Guarantee tenant isolation and a defensible attendance audit trail from the first pilot district onward.
Solution Design
We built the multi-tenant platform underneath the pilot: NestJS and MongoDB on the backend, Next.js 15 and shadcn/ui on the frontend, tied together by a shared contracts package.
A shared Zod DTOs and RBAC matrix package defines permissions once, with Jest tests covering route access and tenant scope directly against it, so access rules can't silently drift between frontend and backend. Every request resolves its tenant from the subdomain and cross-checks it against the JWT's tenant claim - a mismatch is rejected outright, not just filtered out downstream. Four AI features - natural-language search, risk analysis, narrative reports, and compliance review - run through an optional Anthropic API integration, with every output tied back to source-field citations, and a demo-mode fallback when no key is set.
Implementation Process
Phase 1: Discovery & Contracts
Mapped the five roles against every module and encoded the resulting RBAC matrix as shared Zod DTOs.
Phase 2: Backend & Tenant Isolation
Built the NestJS + MongoDB backend with subdomain-based tenant resolution and JWT tenant-matching per request.
Phase 3: Frontend, AI & Launch
Shipped role-scoped Next.js dashboards, wired the cited AI features, and launched via Dockerized services with GitHub Actions CI/CD.
Results & Business Outcomes
Role-First, Not Admin-First
A teacher sees their gradebook and attendance, a SpEd coordinator sees the compliance engine, and a District Admin sees it all - replacing a patchwork of spreadsheets and shared logins.
Verifiable AI, Not Blind Trust
Every AI-assisted read cites the source fields behind it, so staff can verify before acting rather than taking it on faith.
Technology Stack
System Architecture Flow
Mapped five roles against every module to define the RBAC matrix.
Shared Zod DTOs and RBAC matrix used by backend and frontend.
NestJS + MongoDB, tenant resolution via subdomain.
Next.js 15 with shadcn/ui, role-scoped dashboards.
Dockerized services, GitHub Actions CI/CD.
Scope Note
Scheduling, staffing forecast, budget, and substitute coverage are demo-only modules in this build (no persistence) - shown to validate direction with the district, not yet shipped as production features.
Need an AI Strategy Before You Build?
Book a complimentary AI Architecture Review. We'll assess your use case, identify opportunities, evaluate technical feasibility, and provide clear implementation recommendations.