Project Info
Real problems. Guided learning. Proof that lasts. Pluto is a teacher-controlled learning workspace that connects schools with local community organisations. A partner brings a real challenge. Pluto shapes it into a safe learning mission. A teacher reviews the scope and safeguards, proposes balanced student teams, and controls every release. Students research, collaborate, create useful work, and document their contribution. The partner validates the outcome. Pluto brings the mission, evidence, assessment, consent, and community response together in a shareable Pluto Proof record. Why Pluto Schools want learning to feel useful beyond the classroom. Community organisations have meaningful local problems but rarely have a safe, structured way to work with students. Existing AI tools can generate content quickly, but they do not automatically understand school policy, student identity, evidence quality, or who should be allowed to make a decision. Pluto is built around a different contract: AI helps structure complex work, but it does not silently decide what is true, who is assigned, or how a student is graded. Teachers remain responsible for mission approval, student access, assessment, and publication. Students see clear next steps, grounded sources, and an honest explanation of what the coach can and cannot do. Partners validate usefulness, never individual student grades. How it works A partner submits a local challenge by text or voice note. Pluto drafts a mission with curriculum links, roles, milestones, deliverables, sources, a rubric, and safeguards. A teacher reviews and approves the mission before students can access it. The teacher imports the roster and reviews editable, balanced team proposals. Students work through checkpoints, research sources, attach evidence, collaborate, and reflect. The teacher assesses individual contribution. The partner validates whether the result is useful. Pluto creates a consent-aware Pluto Proof snapshot. Honest AI Pluto clearly labels every AI state: Live AI uses the configured OpenAI model. Template mode uses deterministic local structures when live generation is unavailable. Restricted policy is enforced server-side and limits the coach to safety and reflection prompts. The coach receives approved evidence only. It cites that evidence when possible and says when the available material is insufficient. AI mode, policy, model, and evidence provenance are recorded in the audit path. The assignment engine Pluto does not make a black-box student assignment. It proposes balanced, editable teams using: interests and strengths preferred roles availability and availability windows accessibility needs and accommodations team size and role coverage distribution of strong role matches The teacher approves the final assignment, with approval history and undo. What is implemented Partner challenge intake and delivery validation Teacher mission review and safety gate Roster import and assignment proposals Student mission, workspace, research, artefacts, reflection, and submission flows Source checks, evidence linking, consent, publication controls, and audit history Per-student assessment and gradebook export Pluto Proof verification record Responsive product design for partners, teachers, students, and administrators Template, Live AI, and Restricted policy states Built with Next.js, React, TypeScript, OpenAI, Codex, SQLite, Zod, Vercel, and GitHub Actions. How Codex and GPT-5.6 were used Codex was used throughout the build to consolidate duplicated interface layers, implement the teacher approval and assignment workflows, enforce AI-policy boundaries, connect approved evidence to coaching, fix deployment issues, refine the design system, and run typecheck, lint, tests, and production builds. GPT-5.6 powers the live mission-generation and coaching path when configured. The product remains usable in Template mode when a live model is unavailable, and Restricted mode prevents the server from returning live coaching where school policy does not allow it. Try the pilot The public repository includes a seeded Kochi waste-separation mission so judges can explore every role without real school data. Pilot password for every account: pluto-demo Partner: partner@pluto.local Teacher: teacher@pluto.local Student: student@pluto.local School admin: admin@pluto.local Production boundary This is an open pilot foundation, not an approved production system for real student data. Before school-wide deployment, Pluto still needs managed identity, managed relational and object storage, retention and deletion controls, malware scanning, monitoring, accessibility validation, localisation, LMS/SIS integrations, and operational support. OpenAI Build Week Pluto is submitted to the Education category. The project demonstrates a working product, a coherent design system, a specific education problem, accountable AI, and a non-trivial implementation with server-side authorization, migrations, evidence handling, and assignment constraints.
Pluto
Real problems. Guided learning. Proof that lasts.
Teacher-controlled AI for community-connected learning
EDUCATION AI WITH GUARDRAILS NEXT.JS OPEN SOURCE PILOT
Pluto is a teacher-controlled learning workspace that connects schools with local community organisations.
A partner brings a real challenge. Pluto shapes it into a safe learning mission. A teacher reviews the scope and safeguards, proposes balanced student teams, and controls every release. Students research, collaborate, create useful work, and document their contribution. The partner validates the outcome. Pluto brings the mission, evidence, assessment, consent, and community response together in a shareable Pluto Proof record.
Project status — Pluto is an open pilot foundation for demos, judging, and continued development. It is not approved for real student data or school-wide production use.
Contents
| Why Pluto | Product flow | AI contract |
| Assignment engine | Architecture | Run locally |
| Build Week | Production boundary | Contributing |
Why Pluto exists
Schools want learning to feel useful beyond the classroom. Community organisations have meaningful local problems but rarely have a safe, structured way to work with students. Existing AI tools can generate content quickly, but they do not automatically understand school policy, student identity, evidence quality, or who should be allowed to make a decision.
Pluto is built around a different contract:
- AI can help structure complex work, but it does not silently decide what is true, who is assigned, or how a student is graded.
- Teachers remain responsible for mission approval, student access, assessment, and publication.
- Students see clear next steps, grounded sources, and an honest explanation of what the coach can and cannot do.
- Partners validate usefulness, never individual student grades.
[!IMPORTANT] Pluto is not an AI chatbot placed in front of a classroom. It is a supervised workflow where every important decision has a person, a policy, and an evidence trail.
The product flow
flowchart LR
A["Partner shares a local need"] --> B["Pluto drafts a safe mission"]
B --> C["Teacher reviews and approves"]
C --> D["Roster import + team proposal"]
D --> E["Teacher approves assignments"]
E --> F["Students create and link evidence"]
F --> G["Teacher assesses contribution"]
G --> H["Partner validates usefulness"]
H --> I["Pluto Proof snapshot"]
classDef human fill:#baf36d,stroke:#64864e,color:#171b18;
classDef system fill:#ece9ff,stroke:#7770b8,color:#171b18;
classDef proof fill:#1a211a,stroke:#baf36d,color:#ffffff;
class A,C,E,G,H human;
class B,D,F system;
class I proof;
| Stage | Owner | Decision |
|---|---|---|
| Challenge | Community partner | What local problem is worth solving? |
| Mission | Pluto + teacher | Is the work safe, useful, and teachable? |
| Assignment | Teacher | Which students and roles are appropriate? |
| Evidence | Student + teacher | What supports the claim and contribution? |
| Outcome | Partner | Was the result useful to the community? |
What is implemented
Partner workspace
- Challenge intake by text or voice note
- Locality, audience, grade, subject, language, and outcome context
- Mission progress and delivery review
- Partner validation without access to private student assessment
Teacher workspace
- Mission review with curriculum links, safety controls, sources, milestones, deliverables, and rubric
- Server-gated mission approval before student access
- Roster import with interests, strengths, availability, role preferences, and accommodations
- Balanced, editable team proposals with approval history and undo
- Team monitoring, check-ins, assessment, consent, and publication controls
Student workspace
- Mission context, role, checkpoint, and next action
- Team workspace, research log, evidence links, artefacts, and comments
- Individual reflection and contribution evidence
- Source-aware coaching with approved evidence only
- Final submission and Proof preview
School administration
- School-scoped programme overview
- AI policy and Restricted mode controls
- Consent and safeguarding records
- Partner directory and verification
- Impact analytics and gradebook export
Honest AI by design
Pluto makes the AI state visible instead of presenting every response as if it came from a live model.
| State | Behaviour |
|---|---|
| Live AI | Uses the configured OpenAI model for mission drafting, bounded coaching, or transcription. |
| Template mode | Uses deterministic local structures when no API key is configured or a live response is unavailable. |
| Restricted policy | Enforced server-side. The coach is limited to safety and reflection prompts, even if a client requests live generation. |
The coach receives teacher-approved evidence only. When possible, it returns citations to that evidence; when the material is insufficient, it says so. AI mode, policy, model, and evidence provenance are recorded in the audit path.
flowchart TD
R["AI request"] --> P{"School policy"}
P -->|"Restricted"| S["Safety and reflection prompts only"]
P -->|"Teacher reviewed"| K{"OpenAI key available?"}
K -->|"Yes"| L["Live AI + model provenance"]
K -->|"No"| T["Template mode + honest label"]
L --> E["Approved evidence context"]
T --> E
S --> O["Bounded coach response"]
E --> O
classDef decision fill:#fff6df,stroke:#9a6c24,color:#171b18;
classDef safe fill:#e8f6ec,stroke:#3a8b62,color:#171b18;
classDef ai fill:#ece9ff,stroke:#7770b8,color:#171b18;
class P,K decision;
class S,O safe;
class L,T,E ai;
Assignment engine
Pluto does not make a black-box student assignment. It creates a proposal that a teacher can inspect and edit.
The proposal considers:
- interests and strengths
- preferred mission roles
- availability and availability windows
- accessibility needs and accommodations
- team size and role coverage
- distribution of strong role matches across teams
The teacher approves the final assignment, and the approval becomes part of the workflow history.
Pluto Proof
Pluto Proof is a shareable mission record that connects:
- the original community challenge
- the teacher-approved mission
- student contribution and evidence
- source and citation context
- individual assessment and reflection
- consent and publication state
- partner validation
The current pilot creates an immutable-style snapshot for verification. A production release will add stronger cryptographic signing, managed storage, and retention controls.
Technical architecture
| Layer | Implementation |
|---|---|
| Application | Next.js App Router, React, TypeScript |
| UI system | One responsive Pluto design system in app/pluto-system.css |
| Validation | Zod contracts at API boundaries |
| AI | OpenAI integration with explicit Live, Template, and Restricted states |
| Storage | Migration-backed relational SQLite pilot store |
| Authorization | Server-side session checks and school/resource-level access rules |
| Evidence | Approved source links, citations, consent, publication state, and audit records |
| Verification | Typecheck, ESLint, Node tests, and production build in GitHub Actions |
Core boundaries
flowchart TB
UI["Responsive React workspaces"] --> API["Validated Next.js API routes"]
API --> AUTH["Session + resource authorization"]
API --> POLICY["AI policy + provenance boundary"]
API --> DATA["Relational pilot store + migrations"]
API --> RECORDS["Audit · consent · evidence · Proof"]
POLICY --> OPENAI["OpenAI integration"]
POLICY --> FALLBACK["Template fallback"]
DATA --> SQLITE["SQLite pilot database"]
classDef ui fill:#baf36d,stroke:#64864e,color:#171b18;
classDef api fill:#ece9ff,stroke:#7770b8,color:#171b18;
classDef boundary fill:#fff6df,stroke:#9a6c24,color:#171b18;
classDef data fill:#e8f6ec,stroke:#3a8b62,color:#171b18;
class UI ui;
class API api;
class AUTH,POLICY,RECORDS boundary;
class DATA,OPENAI,FALLBACK,SQLITE data;
[!TIP] The diagrams are written in Mermaid inside this README, so they remain editable, versioned, and useful to contributors instead of becoming another unmaintained image asset.
Repository map
app/ Next.js routes, pages, API endpoints, and global CSS
components/ Pluto shell, marketing experience, workspaces, and assignment UI
features/missions/ Mission schemas, demo challenge, and generation contracts
features/platform/ Contracts, authorization, relational store, assignments, Proof
db/ Relational migration support
docs/ Product, UX, frontend, backend, and delivery specifications
tests/ Contract and migration tests
public/ Public application assets
Run Pluto locally
Requirements
- Node.js
22.5+ - pnpm
11.7+
Install and start
pnpm install
pnpm dev
Open http://127.0.0.1:3000.
The seeded demo uses a Kochi waste-separation mission so every role can be explored without creating real school data.
Demo accounts
All pilot accounts use the password pluto-demo:
| Role | |
|---|---|
| Community partner | partner@pluto.local |
| Teacher | teacher@pluto.local |
| Student | student@pluto.local |
| School admin | admin@pluto.local |
These accounts are for local demonstration only. They are not production authentication and must never be used with real student information.
Environment variables
Create .env.local only when you need live AI or a production-like session:
# Optional: enables live mission drafting, coaching, and transcription.
OPENAI_API_KEY=
OPENAI_MISSION_MODEL=gpt-5.6
OPENAI_MENTOR_MODEL=gpt-5.6
OPENAI_TRANSCRIPTION_MODEL=gpt-4o-mini-transcribe
# Required when NODE_ENV=production.
PLUTO_SESSION_SECRET=
# Optional local path for the pilot SQLite store.
PLUTO_DATA_DIRECTORY=
Without OPENAI_API_KEY, Pluto remains usable in clearly labelled Template mode.
Generate a session secret locally with:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Keep secrets in .env.local or your hosting provider. Never commit them to GitHub or place them in screenshots.
Verification
Run the same checks used by the project workflow before opening a pull request:
pnpm typecheck
pnpm lint
pnpm test
pnpm build
Vercel deployment
- Import the GitHub repository into Vercel.
- Add
PLUTO_SESSION_SECRETunder Settings → Environment Variables for Production and Preview. - Redeploy after saving the variable.
- Check
/api/healthon the deployed domain.
The Vercel demo uses its writable /tmp directory for the pilot SQLite store. This keeps the demo functional, but data can reset when a serverless instance is recycled. Use a hosted relational database and object store before treating Pluto as a durable production system.
API surface
| Capability | Main routes |
|---|---|
| Mission and AI | /api/missions/generate, /api/coach, /api/challenges/transcribe |
| Identity and programme | /api/platform/session, /api/platform/program, /api/platform/audits |
| Roster and assignment | /api/platform/roster, /api/platform/assignments |
| Evidence and collaboration | /api/platform/research/check, /api/platform/files, /api/platform/comments |
| Assessment and governance | /api/platform/assessment, /api/platform/consents, /api/platform/notifications |
| Proof and exports | /api/platform/proof/verify/:id, /proof/:id, /api/platform/exports/grades |
OpenAI Build Week
Pluto is submitted to the Education category for OpenAI Build Week.
The submission story focuses on four judging dimensions:
- Technological implementation — a working multi-role product with server-side policy, authorization, assignment constraints, evidence handling, and migrations.
- Design — a coherent product experience that uses large visual context for mission overviews and compact task-first surfaces for real work.
- Potential impact — a specific workflow for schools, teachers, students, and local organisations.
- Quality of the idea — accountable AI that supports learning without replacing teacher judgement.
Codex was used throughout the build to consolidate the product, implement the assignment and evidence workflows, refine API contracts, fix deployment issues, improve the design system, and verify the project. GPT-5.6 powers the live AI path when configured; Template and Restricted modes keep the experience honest when live generation is unavailable or not allowed.
Production boundary
Before real school use, Pluto still needs:
- managed identity, SSO, and school directory integration
- managed relational storage and object storage
- explicit retention, deletion, export, and backup controls
- malware scanning and secure file processing
- production monitoring, alerting, and background workers
- independent accessibility and localisation validation
- LMS/SIS integrations and operational support processes
The current pilot is intentionally transparent about this boundary.
Documentation
The docs/ directory is the product source of truth:
- Product brief
- Experience and UI specification
- Frontend architecture
- Backend and AI architecture
- Delivery plan
Contributing and security
Read CONTRIBUTING.md before opening a pull request. Read SECURITY.md before handling any sensitive data or reporting a vulnerability.
Please do not upload real student records, private school information, or sensitive partner data to this pilot repository.
License
Pluto is released under the MIT License.
Analysis
View
Metric
- 8
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- Next.jsIn code
- OpenAIIn code
- ReactIn code
- SQLIn code
- TypeScriptIn code
- VercelClaimed
6 of 7 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
576 KB
Source files
80
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
koushiknoah77/pluto
90 files · 5.3 MB · @ c0280f3
Structure
Interface
19 files · 21%Screens, components and styles rendered to the user.
+2 moreAPI & routing
24 files · 27%Request entry points: routes, handlers and controllers.
Application logic
18 files · 20%Domain rules, services and shared utilities.
+1 moreData & schema
1 file · 1%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript57%
- YAML24%
- CSS11%
- Markdown7%
- SQL1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 13- @codesandbox/sandpack-react
- lucide-react
- next
- openai
- react
- react-dom
- zod
- +6 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.