Buckets:
metadata
title: Academic Notes Assistant
emoji: ๐
colorFrom: indigo
colorTo: purple
sdk: docker
pinned: false
app_port: 7860
๐ Autonomous Academic Lecture & Notes Assistant
Production-ready, local-first & cloud-deployable AI study copilot for graduate-level STEM coursework.
๐ Overview
The Autonomous Academic Lecture Assistant automates the entire lifecycle of lecture ingestion, transcription, structured academic synthesis, LaTeX mathematical derivation, exam preparation, and cross-device synchronization:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Audio Recording / PDF / Slides / Word โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ ./incoming_audio โ โ ๐ค Telegram Bot โ โ ๐ป Streamlit Web UI โ
โ (Watcher Daemon) โ โ (@note_taker_bot) โ โ (Direct Upload) โ
โโโโโโโโโโโโฌโโโโโโโโโโโ โโโโโโโโโโโโฌโโโโโโโโโโโ โโโโโโโโโโโโฌโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Gemini Flash Engine โ
โ (Auto-fallback Architecture) โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
โ Generates structured Markdown & LaTeX
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ Obsidian Vault Vault โ
โ (./lectures/*.md) โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโ
โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Obsidian on Your Mac โ โ GitHub Vault Repository โ
โ (Auto-sync via Git Engine) โ โ (my-obsidian-notes.git) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โจ Key Features
- Multi-Format Ingestion: Supports
.m4a,.mp3,.wav,.aac,.ogg,.flac,.pdf,.docx,.doc,.pptx,.ppt,.txt,.md, and Live Browser Mic. - Tiered Model Routing: Routes audio and dense math proofs to
gemini-3.6-flashand typed slides/docs to ultra-fastgemini-3.1-flash-lite. - Obsidian Native Integration: Automatically attaches YAML frontmatter,
[[Wikilinks]],#course/...tags, and> [!WARNING]callouts. - Obsidian Maps of Content (MOC): Auto-compiles chronological syllabus tables, master theorem indexes, and exam pitfalls.
- Anki Flashcard Deck Exporter: Auto-compiles native
.apkgflashcard decks for spaced repetition. - Semester-Wide ChromaDB Vector Search: Semantic RAG queries across all past course notes and proofs.
- Automated Git Sync Engine: Commits and pushes notes to your remote GitHub vault automatically.
- Streamlit Web Dashboard:
- Live in-browser microphone recording.
- Multi-subject daily briefings.
- Date-filtered syllabus exam tutor & semester semantic search.
- Asynchronous Telegram Bot:
- Send audio/PDFs on-the-go.
- Interactive
/menubutton interface. - Export Anki decks directly to mobile via
/anki. - Semantic vector search via
/search. - High-res LaTeX math image rendering via
/latex.
๐ Repository Structure
.
โโโ .github/workflows/ # CI/CD auto-sync workflow for Hugging Face Spaces
โโโ .env.example # Environment variables configuration template
โโโ .gitignore # Standard Python, Obsidian, and IDE ignore rules
โโโ Dockerfile # Container image specification (UID 1000, Port 7860)
โโโ LICENSE # MIT License
โโโ README.md # Project documentation with HF Spaces metadata
โโโ anki_exporter.py # Anki .apkg deck generation engine
โโโ app.py # Streamlit web dashboard with mic & password gate
โโโ audio_optimizer.py # 32kbps mono AAC audio compressor
โโโ bot.py # Telegram bot service
โโโ core_engine.py # Shared reasoning, date filtering, and LaTeX repair
โโโ docker-compose.yml # Container orchestration configuration
โโโ git_sync.py # Automated Git synchronization engine
โโโ incoming_audio/ # Watched folder for recordings/documents
โโโ ingest_audio.py # Universal audio and document ingestion pipeline
โโโ lectures/ # Generated structured Markdown study notes
โโโ main.py # Unified launcher with startup vault hydration & GC
โโโ metadata_db.py # Offline SQLite metadata database
โโโ requirements.txt # Pinned project dependencies
โโโ vector_store.py # ChromaDB vector store & semantic search
โโโ watcher.py # File system watcher daemon
๐ ๏ธ Quick Start (Local Setup)
1. Clone & Setup Virtual Environment
git clone https://github.com/AkhilBaja3005/notes-taker.git
cd notes-taker
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
2. Configure .env
Copy .env.example to .env and fill in your credentials:
cp .env.example .env
GEMINI_API_KEY=your_gemini_api_key_here
AUDIO_MODEL=gemini-3.6-flash
DOC_MODEL=gemini-3.1-flash-lite
TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here
ALLOWED_TELEGRAM_USER_IDS=
WATCH_DIR=./incoming_audio
LECTURES_DIR=./lectures
# Obsidian Git Sync Configuration
ENABLE_GIT_SYNC=true
GIT_VAULT_REPO_URL=https://<GITHUB_PAT>@github.com/yourusername/my-obsidian-notes.git
GIT_BRANCH=main
STREAMLIT_PASSWORD=
3. Launch All Services
python main.py
๐ค Hugging Face Spaces Deployment
Space URL: https://huggingface.co/spaces/abaja/notes-taker
In your Hugging Face Space settings, add the following secrets:
GEMINI_API_KEY: Your Gemini API KeyTELEGRAM_BOT_TOKEN: Your Telegram Bot Token (from @BotFather)GIT_VAULT_REPO_URL:https://<GITHUB_PAT>@github.com/yourusername/my-obsidian-notes.gitENABLE_GIT_SYNC:trueSTREAMLIT_PASSWORD: (Optional password gate)
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
Xet Storage Details
- Size:
- 9.17 kB
- Xet hash:
- 83a7f83795d089eb7be3962e5c56039c68344d85e59953507e93e1b312307334
ยท
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.