Skip to content

Repository files navigation

JarvisOS: A Personal AI Command Center

A personal operating system for thoughts, memory, and action. Dump messy thoughts into one inbox — JarvisOS organizes them into tasks, reminders, events, ideas, reflections, follow-ups, and searchable memory.

Stanford CS 153 Final Project · June 2026


The Problem

Modern productivity tools force you to decide where something belongs before you capture it. A thought might be a Reminder, a Calendar event, a task in your task manager, a note in Notion, or a follow-up in a CRM. This decision overhead creates friction — so many useful thoughts, obligations, and ideas are simply lost.

JarvisOS reverses this. You capture first. The system organizes afterward.


Product Overview

JarvisOS is a universal capture layer that:

  1. Captures any unstructured thought via text or voice
  2. Understands the intent using a deterministic local parser
  3. Organizes items into structured categories
  4. Routes them to the right section (Tasks, Reminders, Calendar, Ideas, etc.)
  5. Lets you Review — approve, act on, archive, or delete
  6. Lets you Retrieve — search your full memory later
Capture → Understand → Organize → Review → Retrieve

Example

Input: "Remind me to email Rao next Friday, and I had an idea that Skyline should focus more on AI diligence for operational businesses"

Output (2 structured items):

Type Title Date People Project
Reminder Email Rao next Friday morning next Friday Rao
Idea Skyline should focus on AI diligence Skyline

How to Run Locally

# Clone the repo
git clone <repo-url>
cd jarvisos

# Install dependencies (no external API keys needed)
npm install

# Start the dev server
npm run dev

Open http://localhost:5173 in your browser. That's it. No backend. No API keys. No accounts.


Architecture

jarvisos/
├── index.html
├── package.json
├── vite.config.ts
├── src/
│   ├── main.tsx            Entry point
│   ├── App.tsx             Root layout + view router
│   ├── index.css           Global styles (dark theme, design tokens)
│   ├── types/
│   │   └── index.ts        MemoryItem, ItemType, ItemStatus, Urgency
│   ├── lib/
│   │   ├── parser.ts       Deterministic parser (regex + keyword heuristics)
│   │   ├── storage.ts      localStorage CRUD helpers
│   │   └── sampleData.ts   Pre-built demo items (10 items, all 7 types)
│   ├── components/
│   │   ├── Sidebar.tsx     Navigation sidebar
│   │   └── ItemCard.tsx    Card component for MemoryItems
│   └── pages/
│       ├── Capture.tsx     Hero capture screen
│       ├── FilteredView.tsx Reusable filtered list (Inbox, Tasks, etc.)
│       ├── AllMemory.tsx   Full memory with search + stats
│       ├── DailyBriefing.tsx Deterministic daily summary
│       └── Evaluation.tsx  Built-in evaluation suite

Parser Architecture

The parser (src/lib/parser.ts) is purely local with no external calls:

  1. Split — Breaks multi-intent input on "; ", "and also", "idea:", mid-sentence "remind me", mid-sentence "follow up"
  2. Classify — Scores each segment against 7 keyword sets (contact_followup > reminder > calendar_event > reflection > idea > task > note)
  3. Extract — Pulls date/time, people (capitalized nouns after trigger words), project names, and urgency signals
  4. Generate — Creates title, summary, and suggested next action from templates

Data Model

interface MemoryItem {
  id: string;
  type: 'task' | 'reminder' | 'calendar_event' | 'idea' | 'reflection' | 'contact_followup' | 'note';
  title: string;
  summary: string;
  original_text: string;
  date_or_time: string | null;
  people: string[];
  project: string | null;
  urgency: 'low' | 'medium' | 'high';
  confidence: number;         // 0–1
  status: 'inbox' | 'approved' | 'done' | 'archived';
  suggested_next_action: string;
  created_at: string;         // ISO timestamp
}

All items persist in localStorage under the key jarvisos_items.


Features

Feature Description
Capture screen Large input + voice input (Web Speech API) + example chips
Multi-intent parsing Splits compound inputs into multiple structured items
7 item types task, reminder, calendar_event, idea, reflection, contact_followup, note
Field extraction Dates, people, projects, urgency, confidence scores
Inbox All new items pending review
Category views Dedicated pages for each item type
Card actions Approve, Mark Done, Archive, Delete, Reopen
All Memory Full search across all fields + stats dashboard
Daily Briefing Deterministic daily summary from stored items
Evaluation page 10 built-in test cases with pass/fail + score
Sample data Load 10 realistic demo items instantly
localStorage All data persists locally, zero backend

Demo Flow (3–5 min)

  1. Explain the problem — productivity fragmentation
  2. Open Capture — show the clean input screen
  3. Type a multi-intent input — e.g., "Remind me to email Rao next Friday; and I had an idea that Skyline should focus on AI diligence"
  4. Click Process — watch it split into 2+ structured items
  5. Show routing — navigate to Reminders, Ideas to see items there
  6. Approve an item — click Approve on a card
  7. Search memory — go to All Memory, type "Rao"
  8. Show Daily Briefing — summary of open tasks + follow-ups + ideas
  9. Show Evaluation — 10 test cases, live score, limitations section
  10. Discuss — limitations and what LLM-powered v2 would look like

Evaluation

The app includes a built-in evaluation suite at /evaluation. It runs 10 handpicked test cases covering all 7 item types and edge cases:

# Input Expected Notes
1 "Remind me to email Rao next Friday morning" reminder Explicit trigger + date
2 "I need to finish my CS 153 video tonight" task "need to" + urgency
3 "Meeting with Mike about Skyline on June 11 at 2pm" calendar_event Calendar keyword + date
4 "Idea: Skyline should focus on AI diligence…" idea "Idea:" prefix
5 "I felt distracted today but realized I need better systems" reflection "felt" + "realized"
6 "Follow up with Ann after her Europe trip in July" contact_followup "follow up with"
7 "Take notes on the project rubric" task "take notes" keyword
8 "Dinner with family tomorrow at 7" calendar_event Calendar + date boost
9 "What if this became a personal CRM for weak ties?" idea "what if"
10 "Remember that I parked in the garage on level 3" note No action → fallback

Limitations

  • No true NLP — keyword/regex matching; unusual phrasing can fail
  • Date parsing is lexical — dates stay as strings (no normalization to ISO timestamps)
  • People extraction — only finds capitalized proper nouns after trigger words
  • Plain "and" doesn't split — requires "and also", semicolons, or typed "idea:"
  • No calendar/reminder execution — local only, no real notifications
  • No mobile PWA — optimized for desktop browser

Future Work

  • LLM-powered parsing via OpenRouter / Claude API for better accuracy
  • Google Calendar integration — write approved events directly
  • Real notifications — browser Notification API for reminders
  • Vector memory search — semantic search via embedding model
  • Mobile app — PWA or React Native
  • Proactive daily planning — AI-generated briefing with suggestions
  • Team / shared memory — collaborative capture for small teams

AI Usage Disclosure

This project was built with AI assistance, disclosed fully:

  • ChatGPT (GPT-4) was used for: initial project scoping, product framing, architecture planning, README structure, and debugging strategy brainstorming.
  • Claude Code (claude-sonnet-4-6) was used to: generate and iterate on the implementation, including the parser, components, pages, and CSS.
  • Final decisions, testing, product design, and submission review were performed by the student.
  • No external proprietary codebase was copied.
  • No external APIs or LLMs are required to run the project. The parser is fully deterministic and local.

This disclosure is provided in the spirit of CS 153's integrity policy and to demonstrate honest AI-assisted development.


CS 153 Rubric Alignment

Category Points How JarvisOS satisfies it
Problem & Insight 3 Universal capture addresses real cognitive friction; reverses the "organize first" problem; combines capture + parsing + routing + review + memory
Execution & Technical Work 5 Working local web app; clean capture UI; voice input; deterministic multi-type parser; localStorage persistence; 11 pages/views; search + stats; daily briefing; evaluation; demo data
Evaluation & Evidence 3 Built-in evaluation page with 10 test cases, live pass/fail, overall score, and honest limitations section
Communication & Presentation 2 Clear README; demo flow; plain-English architecture; runnable with 2 commands
Process, Integrity & Disclosure 2 Full AI usage disclosure; student-reviewed and tested; honest about what is and isn't working
Total 15

JarvisOS — Stanford CS 153 · June 2026

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages