Skip to content

cashce/AICoursePlanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Syllabize πŸ“š

Your AI-powered academic calendar assistant

Syllabize helps students stay organized by automatically extracting key dates (assignments, exams, readings) from course syllabi and populating their digital calendar with reminders and deadlines.

πŸ“ Project Files

This project consists of two main components:

  1. NLP_AI_reader.py - Python backend for PDF parsing and keyword extraction
  2. SyllabizePrototype2.dart - Flutter mobile application frontend

🐍 Backend: NLP_AI_reader.py

Overview

Python script that uses PyMuPDF to extract text and tables from PDF syllabus files, identifying key information through keyword matching.

Features

  • Text Extraction: Searches entire PDF for lines containing specified keywords
  • Table Detection: Identifies tables within PDFs and extracts rows where keywords appear in any cell
  • Keyword Matching: Case-insensitive keyword search across both regular text and table data
  • Structured Output: Returns page numbers, line/row content, and table indices

Installation

pip install PyMuPDF

Usage

# Define your keywords
keywords = ["assignment", "exam", "due date", "midterm", "quiz"]

# Specify PDF path
pdf_file = "syllabus.pdf"

# Extract lines with keywords
matched_lines = extract_lines_with_keywords(pdf_file, keywords)

# Extract table rows with keywords
table_results = extract_table_rows_with_keywords(pdf_file, keywords)

Functions

extract_lines_with_keywords(pdf_path, keywords)

Extracts full text lines containing any of the specified keywords.

Returns: List of tuples (page_number, line_text)

extract_table_rows_with_keywords(pdf_path, keywords)

Detects tables and extracts entire rows when keywords are found in any cell.

Returns: List of tuples (page_number, table_index, row_data)

Example Output

EXTRACTING LINES WITH KEYWORDS
==============================================================
Found 3 matching lines:

Page 2: Assignment 1 due October 15th
Page 3: Midterm exam scheduled for November 3rd
Page 5: Final project submission deadline: December 10th

EXTRACTING TABLE ROWS WITH KEYWORDS
==============================================================
Found 2 matching table rows:

Page 4, Table 1:
  Row: Week 5 | October 15 | Assignment 1 Due | 20% of grade

Page 4, Table 1:
  Row: Week 8 | November 3 | Midterm Exam | Chapters 1-5

πŸ“± Frontend: SyllabizePrototype2.dart

Overview

Flutter mobile application providing a user-friendly interface for syllabus upload, event review, and calendar synchronization.

Features

Landing Page

  • Welcome screen with app branding
  • Feature highlights (Upload, AI Extraction, Calendar Sync)
  • Get Started and Sign In buttons

Upload Screen

  • Drag-and-drop syllabus upload interface
  • Supports PDF, DOCX, and TXT formats
  • File picker integration

Review Screen

  • Display AI-extracted events (assignments, exams, readings)
  • Color-coded event types:
    • πŸ”΄ Exams (Red)
    • 🟠 Assignments (Orange)
    • 🟒 Readings (Green)
  • Checkbox selection for events to sync
  • Edit functionality for individual events
  • "Sync All" button for calendar integration

Dashboard

  • Upcoming deadlines with countdown
  • Course overview with task counts
  • Quick access to all activities

Settings

  • Calendar integration options (Google, Outlook, Apple)
  • Notification preferences
  • Reminder customization
  • Version and privacy information

Installation

Prerequisites

  • Flutter SDK (3.0+)
  • Dart 3.0+
  • Android Studio or Xcode

Setup

# Clone repository
git clone https://github.com/yourusername/syllabize.git
cd syllabize

# Install dependencies
flutter pub get

# Run the app
flutter run

Screen Navigation

LandingPage
    ↓
HomeScreen (Bottom Navigation)
    β”œβ”€β”€ UploadScreen β†’ ReviewScreen
    β”œβ”€β”€ DashboardScreen
    └── SettingsScreen

UI Components

Sample Event Data Structure:

{
  'title': 'Essay 1: Critical Analysis',
  'date': DateTime(2025, 10, 15),
  'type': 'Assignment',
  'description': '5-7 pages on selected topic',
  'selected': true,
}

πŸ”— Integration Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Flutter App (UI)   β”‚
β”‚  SyllabizePrototype β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚
           β”‚ File Upload
           ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Backend API       β”‚
β”‚   (To be built)     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚
           β”‚ PDF Processing
           ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  NLP_AI_reader.py   β”‚
β”‚  PyMuPDF + Keywords β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚
           β”‚ Extracted Data
           ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Calendar APIs      β”‚
β”‚  Google/Outlook/    β”‚
β”‚  Apple Calendar     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸš€ Quick Start

1. Test the Python Parser

# Edit keywords in NLP_AI_reader.py
keywords = ["assignment", "exam", "quiz", "project"]

# Run the script
python NLP_AI_reader.py

2. Run the Flutter App

# Start the app
flutter run

# Or for specific platform
flutter run -d ios      # iOS
flutter run -d android  # Android
flutter run -d chrome   # Web (testing)

🎯 Roadmap

Phase 1: Core Functionality

  • Python PDF parser with keyword extraction
  • Table detection and row extraction
  • Flutter UI with all screens
  • Landing page and navigation
  • Backend API development (Flask/FastAPI)
  • Connect Flutter to Python backend

Phase 2: AI Enhancement

  • Advanced NLP for date parsing
  • Event type classification
  • Course name detection
  • Assignment weight extraction

Phase 3: Calendar Integration

  • Google Calendar API
  • Microsoft Outlook API
  • Apple Calendar sync
  • iCal export option

Phase 4: Polish

  • File upload functionality
  • Push notifications
  • Progress tracking
  • Multi-course management
  • Cloud storage integration

πŸ› οΈ Tech Stack

Backend:

  • Python 3.8+
  • PyMuPDF (fitz) for PDF processing
  • Future: Flask/FastAPI for REST API

Frontend:

  • Flutter 3.0+
  • Material Design 3
  • Dart 3.0+

APIs (Planned):

  • Google Calendar API
  • Microsoft Graph API (Outlook)
  • Apple Calendar

πŸ“ File Structure

syllabize/
β”œβ”€β”€ NLP_AI_reader.py              # Backend PDF parser
β”œβ”€β”€ SyllabizePrototype2.dart      # Flutter app
β”œβ”€β”€ README.md                     # This file
└── (future)
    β”œβ”€β”€ backend/
    β”‚   β”œβ”€β”€ api/
    β”‚   β”œβ”€β”€ models/
    β”‚   └── services/
    └── frontend/
        β”œβ”€β”€ lib/
        β”œβ”€β”€ assets/
        └── test/

🀝 Contributing

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ”’ Privacy & Security

  • Secure file handling with automatic deletion after processing
  • No permanent storage of syllabus content
  • Calendar access only with explicit user permission
  • Data encryption in transit
  • Local processing when possible

πŸ“„ License

This project is licensed under the MIT License.

πŸ“§ Contact

For questions or support, please open an issue on GitHub


Made with ❀️ for students by students

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors