Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NOVA — AI Voice Assistant (JARVIS)

A fully voice-driven, multi-agent personal assistant built for student developers. One clap wakes it up. Four specialized AI agents brief you on jobs, emails, tasks, and DSA — all spoken aloud, hands-free.


What is NOVA?

NOVA is a Python-based voice assistant system that runs a sequential pipeline of 4 AI agents every morning. It listens for a physical clap sound, wakes up, and hands control to each agent one by one. Each agent fetches real-time data, summarizes it using Groq's ultra-fast LLM inference, and reads the result aloud in a male TTS voice.

Built for a pre-final year CS student managing internship work, job hunting, emails, and competitive programming prep simultaneously.


Demo Flow

👏 Clap detected
    ↓
🔊 "Hello, NOVA systems online."
    ↓
① The Scout     → finds today's best job openings matching your stack
② The Secretary → summarizes unread emails, flags what needs action
③ The Manager   → reads your pending internship tickets
④ The Mentor    → assigns 2 DSA problems based on your weakest topic
    ↓
🔊 Full spoken briefing delivered. Ready for your day.

Tech Stack

Layer Technology
Language Python 3.11+
LLM Engine Groq API — llama-3.3-70b-versatile
STT Groq Whisper API
TTS edge-tts (male voice, strict)
Clap Detection PyAudio + numpy (RMS amplitude)
Orchestration Python asyncio state machine
Job Search JSearch API, Wellfound, RemoteOK, Internshala
Email Gmail API (google-api-python-client)
Task Tracking Notion API / Jira REST API / SQLite (configurable)
DSA Tracking Local JSON (data/progress.json)

The 4 Agents

① The Scout — Job Finder

  • Searches across JSearch (Google Jobs), Wellfound, RemoteOK, Internshala, Unstop
  • Covers all job types: remote, hybrid, onsite, internship, fresher, contract
  • Filters strictly for your tech stack (Flutter, FastAPI, Python, Next.js, LangChain)
  • Auto-discards roles requiring 2+ years of experience
  • Scores jobs by stack overlap → speaks top 3 matches

② The Secretary — Email Manager

  • Fetches all unread Gmail from the last 24 hours
  • Groq categorizes each thread: urgent / reply_needed / fyi / junk
  • Delivers a concise spoken briefing of actionable items only

③ The Manager — Internship Work Tracker

  • Pulls "In Progress" and "To Do" tickets from Notion, Jira, or local SQLite
  • Groq summarizes what must ship today, what is blocked, what can wait
  • Spoken as a 4-sentence daily standup

④ The Mentor — DSA & Placement Prep

  • Tracks completion % across DSA topics (Tree DP, DFS, Graphs, Greedy, etc.)
  • Matches your weakest topic against your target company's FAQ patterns
  • Assigns exactly 2 problems to solve today, spoken aloud with difficulty level

Project Structure

NOVA/
├── main.py                  # Entry point — starts clap listener
├── config.py                # API keys, stack filters, thresholds
├── orchestrator.py          # Async state machine — controls agent flow
├── listener.py              # PyAudio clap detection
├── tts/
│   └── speaker.py           # edge-tts male voice wrapper
├── agents/
│   ├── scout.py             # Agent 1: job finder
│   ├── secretary.py         # Agent 2: Gmail summarizer
│   ├── manager.py           # Agent 3: task tracker
│   └── mentor.py            # Agent 4: DSA advisor
├── data/
│   ├── progress.json        # DSA topic completion state
│   └── company_faq.json     # Target company problem patterns
├── config/
│   └── credentials.json     # ⚠️ Google OAuth — never commit this
├── .env.example             # API key template — copy to .env
├── .gitignore
├── requirements.txt
└── README.md

Setup

1. Clone the repo

git clone https://github.com/ankit071105/NOVA.git
cd NOVA

2. Create virtual environment

python3 -m venv venv
source venv/bin/activate        # macOS/Linux
venv\Scripts\activate           # Windows

3. Install dependencies

pip install -r requirements.txt

4. Configure environment variables

cp .env.example .env

Edit .env and fill in your keys:

GROQ_API_KEY=your_groq_api_key_here
JSEARCH_API_KEY=your_jsearch_key_here
GMAIL_CREDENTIALS_PATH=config/credentials.json
NOTION_TOKEN=your_notion_token_here

5. Set up Gmail API

  1. Go to Google Cloud Console
  2. Create a project → enable Gmail API
  3. Create OAuth 2.0 credentials → download as credentials.json
  4. Place it at config/credentials.json (already in .gitignore)

6. Configure your stack and target company

Edit config.py:

USER_STACK = ["flutter", "fastapi", "python", "next.js", "langchain", "react"]
TARGET_COMPANY = "Google"   # or any company in company_faq.json
CLAP_THRESHOLD = 3000       # adjust for your mic sensitivity

7. Run NOVA

python main.py

Clap once. NOVA wakes up and begins the briefing.


Environment Variables

Variable Description
GROQ_API_KEY From console.groq.com
JSEARCH_API_KEY From RapidAPI JSearch
GMAIL_CREDENTIALS_PATH Path to your Google OAuth credentials JSON
NOTION_TOKEN From Notion integrations settings

Requirements

pyaudio
numpy
groq
edge-tts
google-api-python-client
google-auth
google-auth-oauthlib
notion-client
aiohttp
requests
python-dotenv

⚠️ Security

  • Never commit .env or config/credentials.json — both are in .gitignore
  • Use .env.example as the template for others to fill in
  • If you accidentally commit secrets, rotate them immediately at their respective consoles

Roadmap

  • WhatsApp briefing mode via Twilio
  • Web dashboard to view agent outputs visually
  • Custom wake word instead of clap
  • Voice input for follow-up queries mid-briefing
  • LeetCode API integration for auto-tracking solved problems

Author

Ankit Kumar B.Tech Computer Science, ITER SOA University (2023–2027) Flutter/Backend Intern @ Fastpeer AI Corp | ML Intern @ Celebal Technologies

Portfolio · GitHub · Email


License

MIT License — feel free to fork, extend, and build your own NOVA.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages