MV
Back to projects

Jul 2026 – Present · Live · In progress

Cadent — AI Study Planner for College

Creator and sole developer

AI/MLDesktopEdTech

The problem

Every college student already has a to-do list — it's just scattered across a dozen Canvas pages, buried in announcement threads, and written in prose no calendar can read ("Reading 1 is due Friday by 10am"). The result is a constant, low-grade dread: the sense that something is due and you're not sure what. Existing tools make you do the transcription yourself. Cadent's premise is that the syllabus, the assignments, and the announcements already contain the plan — the software's job is to read them the way a careful student would, and hand back a calm, trustworthy answer to "what should I do today?"

What I built

  • Built a macOS desktop app that connects to a student's Canvas, reads their real coursework — assignments, syllabi, announcements, course pages, and PDFs — and turns it into a daily study plan, entirely on-device.
  • Designed a two-phase planning engine that separates understanding the work (extracting each assignment and its true deadline) from scheduling it (breaking an assignment into a few real steps and placing them on days, capacity-aware, so a small assignment lands as one focused block the day before it's due rather than smeared across the week).
  • Built a grounded extraction layer that dates each assignment only from the claim that actually states its deadline — so a reminder mentioning three due dates can't cross-wire one onto another — and a source-authority model for when a professor's announcement should override a stale Canvas field.
  • Added a conversational layer: a student can say "I'm busy tonight, reschedule everything" or move a single assignment to another day, and Cadent replans — warning first, and letting them confirm, when a move would land past a deadline or overload a day.
  • Built a verification ("guard") layer that reviews every proposed change before it's committed, so the planner can never silently accept lateness or drop work, and a local encrypted store so a student's entire academic profile stays on their own machine.
  • Shipped the gateway that serves the language-model reasoning, with tiered models chosen per task to hold measured cost to a few dollars per student per month — and made the whole thing invite-gated, because the invite count is the spend ceiling.

What I had to learn

  • Grounding an AI system against a source of truth. The hard part of "read the syllabus" isn't reading — it's refusing to invent. Most of the engineering is machinery that forces every deadline, task, and claim back to the exact words a document actually wrote, and treats a missing fact as missing rather than guessing.
  • Designing for calm, not features. A study planner that overwhelms a stressed student has failed regardless of correctness. Decisions like "one focused block, not a scattered week" and "warn-then-confirm instead of hard-refuse" were product-psychology calls that shaped the architecture underneath them.
  • Where to put trust in an AI pipeline. Deadlines and coverage should come from structured provider data whenever it exists; prose should refine, never fabricate. Getting that hierarchy right — and building the reconciliation that decides when several sources describe one assignment — was the difference between a plan a student can rely on and one they have to double-check.
  • Building a correctness-critical AI product solo, end to end: ingestion, extraction, scheduling, a guard layer, encrypted local storage, the desktop client, and the model gateway all have to agree on one model of what an "assignment" is.

Results

  • Working private beta: signed macOS builds, live model gateway, real students onboarding from their own Canvas.
  • Measured cost held to a few dollars per active student per month through tiered model routing.
  • Presented to VCs and mentors who have responded positively to the idea and are advising its direction.

Stack

TypeScriptElectronReactNode.jsSQLiteSQLCiphersqlite-vecFly.ioAnthropic ClaudeZodVitest