Buckets:
| title: Academic Notes Assistant | |
| emoji: π | |
| colorFrom: indigo | |
| colorTo: purple | |
| sdk: docker | |
| pinned: false | |
| app_port: 7860 | |
| <div align="center"> | |
| # π Autonomous Academic Lecture & Notes Assistant | |
| **Production-ready, local-first & cloud-deployable AI study copilot for graduate-level STEM coursework.** | |
| [](https://www.python.org/) | |
| [](https://ai.google.dev/) | |
| [](https://streamlit.io/) | |
| [](https://telegram.org/) | |
| [](https://obsidian.md/) | |
| [](https://opensource.org/licenses/MIT) | |
| </div> | |
| --- | |
| ## π 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: | |
| ```text | |
| ββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β 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-flash` and typed slides/docs to ultra-fast `gemini-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 `.apkg` flashcard 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 `/menu` button interface. | |
| - Export Anki decks directly to mobile via `/anki`. | |
| - Semantic vector search via `/search`. | |
| - High-res LaTeX math image rendering via `/latex`. | |
| --- | |
| ## π Repository Structure | |
| ```text | |
| . | |
| βββ .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 | |
| ```bash | |
| 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: | |
| ```bash | |
| cp .env.example .env | |
| ``` | |
| ```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 | |
| ```bash | |
| python main.py | |
| ``` | |
| --- | |
| ## π€ Hugging Face Spaces Deployment | |
| Space URL: **[https://huggingface.co/spaces/abaja/notes-taker](https://huggingface.co/spaces/abaja/notes-taker)** | |
| In your Hugging Face Space settings, add the following secrets: | |
| - `GEMINI_API_KEY`: Your Gemini API Key | |
| - `TELEGRAM_BOT_TOKEN`: Your Telegram Bot Token (from @BotFather) | |
| - `GIT_VAULT_REPO_URL`: `https://<GITHUB_PAT>@github.com/yourusername/my-obsidian-notes.git` | |
| - `ENABLE_GIT_SYNC`: `true` | |
| - `STREAMLIT_PASSWORD`: (Optional password gate) | |
| --- | |
| ## π License | |
| This project is licensed under the MIT License - see the [LICENSE](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.