Procrastinator
Team consisting of Univ. of Arizona CS full‑stack dev (FastAPI, React, OpenAI), Enerpact data scientist/PhD Econ (Python, R, SQL), and Cornell AI engineer (LLMs).
YouTube Video
Project Description
Students and professionals tend to have full folders of lecture slides, PDFs, and notes, but little time to convert them into actionable study materials.
Procrastinator (Study Partner) turns raw documents into structured knowledge points, personalized quizzes, and progress reports. This all happens from the command line - using Gemini CLI.
Goal: Provide a local-first, reproducible tool that helps learners digest their own notes quickly and interactively, while showcasing practical Gemini CLI integration.
User flows:
- Have notes/pdfs in your local files
- Extract knowledge points:
Gemini CLI analyzes chunks of text to produce structured JSON knowledge points. (python app.py summarize test_data/)
- Quiz yourself:
Generate multiple-choice questions from those knowledge points. (python app.py quiz –subject “Crypto” –n 5)
- Review mistakes:
Record answers, track wrong ones, and build reports to focus revision. (python app.py report –out demo/report.md)
- Find notes automatically:
The find-notes command scans your filesystem for likely study files and asks
- Gemini to propose study sessions and practice questions.
Reproduction Steps:
git clone https://github.com/siyansw/study_partner.git
cd study_partner
Python setup
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Authenticate with Gemini CLI
touch .env
nano .env
GEMINI_API_KEY=AIzaSyC-your-actual-api-key-here-dont-share-this
DB_PATH=study.db
Demo:
python app.py import test_data
python app.py summarize
python app.py quiz –num 2
python app.py report
Architecture & Components
● CLI Interface:
Typer powers the app.py command-line UX.
● Database Layer:
SQLite stores documents, chunks, knowledge points, quiz questions, and user answers. (db.py)
● Parsing:
PDF and text parsing into normalized chunks. (parser.py)
● Knowledge Extraction:
Calls Gemini CLI to summarize notes into JSON knowledge points. (kp_extractor.py, llm.py)
● Quiz Generation:
Uses Gemini to write multiple-choice questions from stored knowledge points. (quizzer.py)
● Reports:
Builds Markdown reports of mistakes and study focus areas. (report.py)
● MCP Server (Optional):
Exposes a protocol interface for multi-agent integrations. (mcp_server.py)
Technologies & Tools:
● Python (Typer, Rich, PyPDF2, SQLite, python-dotenv)
● Gemini CLI
● Google Generative AI SDK (fallback if API key is provided)
● Node.js + npx for CLI execution
● Github
Gemini Integration
● Depth:
Gemini CLI is called for summarization, knowledge extraction, and quiz generation. Prompts are explicit, asking Gemini to return JSON arrays that the app ingests directly into SQLite.
● Flexibility:
Users can authenticate via:
● API Key (.env file with GEMINI_API_KEY)
● Creativity: The find-notes command leverages Gemini to scan local files and propose study sessions/quiz outlines, turning unstructured file directories into structured study plans.