# shivansh19200/jassi architecture

> Architecture diagram of the GitHub repository shivansh19200/jassi, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/shivansh19200/jassi
- Repository: https://github.com/shivansh19200/jassi

## Overview

JASSI takes a student's goal and calendar constraints, checks whether the goal is feasible, builds and verifies a resource-backed schedule, and supports check-ins that update mastery or trigger replanning. The dashboard is the main entry point; LangGraph coordinates LLM and deterministic stages. The README documents image/manual/Calendar imports and replanning; sampled excerpts confirm the core tools and integrations, but not every UI-to-workflow call, so uncertain wiring is omitted.

Main entry points: [`app/streamlit_app.py`](https://github.com/shivansh19200/jassi/blob/main/app/streamlit_app.py) (Streamlit dashboard), [`app/graph.py`](https://github.com/shivansh19200/jassi/blob/main/app/graph.py) (Planning workflow), [`app/nodes/tool_nodes.py`](https://github.com/shivansh19200/jassi/blob/main/app/nodes/tool_nodes.py) (Tool orchestration), [`app/tools/constraint_parser.py`](https://github.com/shivansh19200/jassi/blob/main/app/tools/constraint_parser.py) (Constraint imports)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Student interaction"]
  node_dashboard["Streamlit dashboard<br/>[streamlit_app.py]"]
  node_constraints["Constraint imports"]
end

subgraph group_workflow["Agent workflow"]
  node_planner["Planning workflow<br/>[graph.py]"]
  node_updates["Check-in workflow<br/>[graph.py]"]
  node_llm_nodes["LLM operations<br/>[llm_nodes.py]"]
  node_tool_nodes["Tool orchestration<br/>[tool_nodes.py]"]
end

subgraph group_planning["Planning engine"]
  node_feasibility["Feasibility analysis<br/>[feasibility.py]"]
  node_scheduler["Schedule placement<br/>[scheduler.py]"]
  node_verifier["Plan verification<br/>[verifier.py]"]
end

subgraph group_knowledge["Knowledge and services"]
  node_retriever["Resource retrieval"]
  node_topics["Topic catalog<br/>[topics.json]"]
  node_resources["Resource catalog<br/>[resources.json]"]
  node_student_seed["Seed student state<br/>[demo_student.json]"]
end

node_student(("Student"))
node_groq["Groq API"]
node_calendar["Google Calendar events"]

node_student -->|"sets goal"| node_dashboard
node_dashboard -->|"submits request"| node_planner
node_dashboard -->|"submits check-in"| node_updates
node_dashboard -->|"imports events"| node_constraints
node_calendar -.->|"provides events"| node_constraints
node_constraints -->|"returns constraints"| node_dashboard
node_planner -->|"parses and explains"| node_llm_nodes
node_planner -->|"runs deterministic steps"| node_tool_nodes
node_planner -->|"requests resources"| node_retriever
node_updates -->|"parses and explains"| node_llm_nodes
node_updates -->|"updates and replans"| node_tool_nodes
node_llm_nodes -->|"sends prompts"| node_groq
node_tool_nodes -->|"calculates capacity"| node_feasibility
node_tool_nodes -->|"places sessions"| node_scheduler
node_tool_nodes -->|"checks plan"| node_verifier
node_feasibility -->|"loads topic estimates"| node_topics
node_verifier -->|"reads prerequisites"| node_topics
node_retriever -->|"indexes resources"| node_resources
node_planner -->|"loads topic catalog"| node_topics
node_student_seed -.->|"seeds demo state"| node_dashboard
node_dashboard -->|"shows plan and progress"| node_student

click node_dashboard "https://github.com/shivansh19200/jassi/blob/main/app/streamlit_app.py"
click node_constraints "https://github.com/shivansh19200/jassi/blob/main/app/tools/constraint_parser.py"
click node_planner "https://github.com/shivansh19200/jassi/blob/main/app/graph.py"
click node_updates "https://github.com/shivansh19200/jassi/blob/main/app/graph.py"
click node_llm_nodes "https://github.com/shivansh19200/jassi/blob/main/app/nodes/llm_nodes.py"
click node_tool_nodes "https://github.com/shivansh19200/jassi/blob/main/app/nodes/tool_nodes.py"
click node_feasibility "https://github.com/shivansh19200/jassi/blob/main/app/tools/feasibility.py"
click node_scheduler "https://github.com/shivansh19200/jassi/blob/main/app/tools/scheduler.py"
click node_verifier "https://github.com/shivansh19200/jassi/blob/main/app/tools/verifier.py"
click node_retriever "https://github.com/shivansh19200/jassi/blob/main/app/vectorstore/resource_retriever.py"
click node_topics "https://github.com/shivansh19200/jassi/blob/main/data/topics.json"
click node_resources "https://github.com/shivansh19200/jassi/blob/main/data/resources.json"
click node_student_seed "https://github.com/shivansh19200/jassi/blob/main/data/demo_student.json"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dashboard,node_constraints toneBlue
class node_planner,node_updates,node_llm_nodes,node_tool_nodes toneAmber
class node_feasibility,node_scheduler,node_verifier,node_groq toneMint
class node_retriever,node_topics,node_resources,node_student_seed toneRose
class node_student,node_calendar toneIndigo
```

## Components

### Student interaction

- [Streamlit dashboard](https://github.com/shivansh19200/jassi/blob/main/app/streamlit_app.py): `app/streamlit_app.py`
- [Constraint imports](https://github.com/shivansh19200/jassi/blob/main/app/tools/constraint_parser.py): `app/tools/constraint_parser.py`

### Agent workflow

- [Planning workflow](https://github.com/shivansh19200/jassi/blob/main/app/graph.py): `app/graph.py`
- [Check-in workflow](https://github.com/shivansh19200/jassi/blob/main/app/graph.py): `app/graph.py`
- [LLM operations](https://github.com/shivansh19200/jassi/blob/main/app/nodes/llm_nodes.py): `app/nodes/llm_nodes.py`
- [Tool orchestration](https://github.com/shivansh19200/jassi/blob/main/app/nodes/tool_nodes.py): `app/nodes/tool_nodes.py`

### Planning engine

- [Feasibility analysis](https://github.com/shivansh19200/jassi/blob/main/app/tools/feasibility.py): `app/tools/feasibility.py`
- [Schedule placement](https://github.com/shivansh19200/jassi/blob/main/app/tools/scheduler.py): `app/tools/scheduler.py`
- [Plan verification](https://github.com/shivansh19200/jassi/blob/main/app/tools/verifier.py): `app/tools/verifier.py`

### Knowledge and services

- [Resource retrieval](https://github.com/shivansh19200/jassi/blob/main/app/vectorstore/resource_retriever.py): `app/vectorstore/resource_retriever.py`
- [Topic catalog](https://github.com/shivansh19200/jassi/blob/main/data/topics.json): `data/topics.json`
- [Resource catalog](https://github.com/shivansh19200/jassi/blob/main/data/resources.json): `data/resources.json`
- [Seed student state](https://github.com/shivansh19200/jassi/blob/main/data/demo_student.json): `data/demo_student.json`

### Other components

- **Student**
- **Groq API**
- **Google Calendar events**

## Connections

- Student → Streamlit dashboard: sets goal
- Streamlit dashboard → Planning workflow: submits request
- Streamlit dashboard → Check-in workflow: submits check-in
- Streamlit dashboard → Constraint imports: imports events
- Google Calendar events → Constraint imports: provides events
- Constraint imports → Streamlit dashboard: returns constraints
- Planning workflow → LLM operations: parses and explains
- Planning workflow → Tool orchestration: runs deterministic steps
- Planning workflow → Resource retrieval: requests resources
- Check-in workflow → LLM operations: parses and explains
- Check-in workflow → Tool orchestration: updates and replans
- LLM operations → Groq API: sends prompts
- Tool orchestration → Feasibility analysis: calculates capacity
- Tool orchestration → Schedule placement: places sessions
- Tool orchestration → Plan verification: checks plan
- Feasibility analysis → Topic catalog: loads topic estimates
- Plan verification → Topic catalog: reads prerequisites
- Resource retrieval → Resource catalog: indexes resources
- Planning workflow → Topic catalog: loads topic catalog
- Seed student state → Streamlit dashboard: seeds demo state
- Streamlit dashboard → Student: shows plan and progress
