Skip to content

Dandilyonn/Interview-prep-agent

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

217 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Contributors Forks Stargazers Issues


Logo

Inky - InterviewPrep AI Agents

A modular AI system that automates Interview preparation workflows using specialized agents. Streamlines Interviewer's background discovery, Company finding, roles insights, all contributing to a comprehensive prep guide, display on Streamlit dashboard and choice to edit and send to your own email via Inky bot service.
Explore the docs Β»

View Demo Β· Report Bugs Β· Request Features
Contributions, issues, and feature requests are welcome!
Maintained by: @Kathy331

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. System Architecture Diagram
  5. Contact and Developers
  6. Acknowledgments

About The Project

For more information please refer to the "docs" folder. Inside, there are flowcharts folders, agents folder, guidelines (standard for interview prep guide) folder, and pipeline folder, also include architecture markdown, etc. Which will all help you to understand more about the overall project architecture.

Built With

AI & Machine Learning

  • OpenAI - GPT models for intelligent text processing and generation
  • spaCy - Named Entity Recognition for email parsing and resume analysis
  • scikit-learn - Machine learning utilities and text classification
  • LangChain - LLM application framework

Frontend & Interface

  • Streamlit - Interactive web dashboard and user interface
  • Plotly - Data visualizations and analytics charts

Backend & APIs

  • Python - Core backend language (3.10+)
  • SQLite - Interview data storage with deduplication
  • Pandas - Data manipulation and analysis
  • Tavily API - Web search and company/interviewer research intelligence
  • Google Gmail API - Email fetching and sending automation
  • Google OAuth - Secure authentication and authorization
  • Pydantic - Data validation and settings management

Concepts & Techniques

  • pytest - Testing framework for unit tests and integration tests
  • RAG - Retrieval-Augmented Generation for context enrichment
  • Cache Manager - OpenAI API cache optimization and output file management

(back to top)

Getting Started

Follow these steps to get a local copy up and running:

Prerequisites

Ensure you have Python 3.10+

Setup

  1. Clone the repo:

    git clone https://github.com/Kathy331/resume-ai-agents.git
    cd resume-ai-agents
  2. Create and activate a virtual environment:

    python3 -m venv .venv.  #On Windows: python -m venv .venv
    source .venv/bin/activate #On Windows: .venv\Scripts\activate
  3. Install Python dependencies:

    pip install -r requirements.txt

    make sure to also download spacy model before running workflow_runner.py

     python -m spacy download en_core_web_sm
  4. Copy .env.example to .env and fill in your:

     cp .env.example .env
  5. Set up bot email credentials:

    • Follow the instructions in setup_bot_email.py to authenticate with Gmail API
    • Ensure you have the google_oauth folder with your credentials JSON file
  6. Run the Streamlit app:

    streamlit run ui/testui/app.py
  7. Optional: Use Docker for containerized deployment: Download Docker for Mac or Windows: https://www.docker.com/

    docker compose up --build 
  8. Testing: to run all test you could run:

    pytest

    but please be careful of token limits, to run a single test, run:

    pytest tests/test_agents/test_keyword_extractor.py

    there will be an outputs file generated for you to better see your test results

(back to top)

Usage

demo Once the app is running, you can:

  • View the dashboard: Access the Streamlit interface in your browser (usually at http://localhost:8501)
  • Set up your bot email: Authenticate with Gmail to enable sending emails directly from the app
  • Generate prep guides: Use the provided buttons to trigger different agents:
  • Monitor logs: Check the console output for agent activity and debugging information
  • Send emails: Use the Inky bot service to send personalized application emails directly from the app, you can send all the generated prep guide to your own email or pick a specific email address to send
  • View results: Check the generated prep guide on the dashboard, which includes company insights, role details, and personalized questions
  • Edit and save: Modify the prep guide as needed and save it to your local machine or send it via email
  • Download files: Download any generated files or reports for offline access

(back to top)

System Architecture Diagram

flowchart TB
    subgraph EmailPipeline["πŸ“§ Email Pipeline"]
        direction TB
        InterviewFolder["πŸ“ INTERVIEW_FOLDER<br>β€’ Configurable email source<br>β€’ Individual email processing"]
        EmailClassifier["πŸ“¬ Email Classifier Agent<br>β€’ Interview vs Personal vs Other<br>β€’ OpenAI GPT-4o-mini"]
        EntityExtractor["🎯 Entity Extractor Agent<br>β€’ Company, Role, Interviewer<br>β€’ Custom spaCy NER model"]
        KeywordExtractor["🏷️ Keyword Extractor Agent<br>β€’ Company name extraction<br>β€’ Safe filename generation"]
        MemoryCheck{"🧠 Memory Systems Check<br>β€’ Interview Store lookup<br>β€’ Duplicate prevention"}
    end

    subgraph DeepResearchPipeline["πŸ”¬ Deep Research Pipeline"]
        direction TB
        ResearchCoordinator["πŸ€– Research Coordinator<br>β€’ Multi-agent orchestration<br>β€’ Parallel API calls"]
        CompanyResearch["🏒 Company Research Agent<br>β€’ Tavily API integration<br>β€’ Culture & news analysis"]
        RoleResearch["πŸ’Ό Role Research Agent<br>β€’ Market trends analysis<br>β€’ Skill requirements"]
        InterviewerResearch["πŸ‘€ Interviewer Research Agent<br>β€’ LinkedIn profile search<br>β€’ Professional background"]
        QualityReflection["πŸ€” Research Quality Reflection<br>β€’ Adequacy validation<br>β€’ Additional research loops"]
    end

    subgraph PrepGuidePipeline["πŸ“š Prep Guide Pipeline"]
        direction TB
        GuideGenerator["πŸ“ Personalized Guide Generator<br>β€’ OpenAI GPT-4o integration<br>β€’ Research-driven content"]
        TechnicalPrep["⚑ Technical Prep Section<br>β€’ Role-specific competencies<br>β€’ Sample questions"]
        InterviewerInsights["πŸ‘₯ Interviewer Background Analysis<br>β€’ Professional insights<br>β€’ Connection points"]
        StrategicQuestions["❓ Strategic Questions Generator<br>β€’ Personalized inquiries<br>β€’ Research-backed"]
        CitationEngine["πŸ“„ Citation Engine<br>β€’ Source references<br>β€’ Research credibility"]
    end

    subgraph CacheManagement["πŸ’Ύ Cache Management Systems"]
        direction TB
        TavilyCache["🌐 Tavily Cache<br>β€’ API response caching<br>β€’ Query optimization<br>β€’ cache/tavily/ directory"]
        OpenAICache["πŸ€– OpenAI Cache<br>β€’ Response caching<br>β€’ Cost optimization<br>β€’ .openai_cache/ directory"]
        CacheManager["βš™οΈ Cache Manager CLI<br>β€’ Status monitoring<br>β€’ Cache clearing<br>β€’ Optimization tools"]
    end

    subgraph MemorySystems["🧠 Memory Systems"]
        direction TB
        InterviewStore["πŸ“‹ Interview Store<br>β€’ SQLite database<br>β€’ Deduplication logic<br>β€’ Status tracking"]
        ResumeMemory["πŸ“„ Resume Memory<br>β€’ User profile storage<br>β€’ Skills & experience<br>β€’ Context integration"]
        SharedMemory["πŸŒ‰ Shared Memory Layer<br>β€’ Cross-agent context<br>β€’ State synchronization"]
    end

    subgraph WorkflowOrchestration["🎯 Workflow Orchestration"]
        direction TB
        MainWorkflow["πŸš€ Interview Prep Workflow<br>β€’ Individual email processing<br>β€’ Terminal feedback<br>β€’ workflows/interview_prep_workflow.py"]
        WorkflowRunner["⚑ Workflow Runner<br>β€’ Pipeline coordination<br>β€’ Error handling<br>β€’ workflows/workflow_runner.py"]
    end

    subgraph OutputManagement["πŸ“ Output Management"]
        direction TB
        FileOutput["πŸ“ Individual Company Files<br>β€’ outputs/fullworkflow/<br>β€’ [company_name].txt format<br>β€’ Complete prep guides"]
        TerminalFeedback["πŸ’¬ Real-time Terminal Output<br>β€’ Processing progress<br>β€’ Classification results<br>β€’ Research status"]
    end

    %% Main workflow connections
    MainWorkflow --> InterviewFolder
    InterviewFolder --> EmailClassifier
    EmailClassifier --> EntityExtractor
    EntityExtractor --> KeywordExtractor
    KeywordExtractor --> MemoryCheck
    
    %% Memory check branching
    MemoryCheck -->|"Already Processed"| TerminalFeedback
    MemoryCheck -->|"New Interview"| ResearchCoordinator
    
    %% Research pipeline flow
    ResearchCoordinator --> CompanyResearch
    ResearchCoordinator --> RoleResearch  
    ResearchCoordinator --> InterviewerResearch
    CompanyResearch --> QualityReflection
    RoleResearch --> QualityReflection
    InterviewerResearch --> QualityReflection
    
    %% Quality reflection branching
    QualityReflection -->|"Sufficient"| GuideGenerator
    QualityReflection -->|"Insufficient"| ResearchCoordinator
    
    %% Prep guide pipeline flow
    GuideGenerator --> TechnicalPrep
    GuideGenerator --> InterviewerInsights
    GuideGenerator --> StrategicQuestions
    TechnicalPrep --> CitationEngine
    InterviewerInsights --> CitationEngine
    StrategicQuestions --> CitationEngine
    CitationEngine --> FileOutput
    
    %% Cache integration
    CompanyResearch <--> TavilyCache
    RoleResearch <--> TavilyCache
    InterviewerResearch <--> TavilyCache
    GuideGenerator <--> OpenAICache
    TechnicalPrep <--> OpenAICache
    InterviewerInsights <--> OpenAICache
    StrategicQuestions <--> OpenAICache
    
    %% Memory systems integration
    MemoryCheck <--> InterviewStore
    EntityExtractor <--> ResumeMemory
    ResearchCoordinator <--> SharedMemory
    GuideGenerator <--> SharedMemory
    
    %% Cache management
    CacheManager --> TavilyCache
    CacheManager --> OpenAICache
    
    %% Workflow coordination
    WorkflowRunner --> MainWorkflow
    MainWorkflow --> TerminalFeedback
    FileOutput --> TerminalFeedback

    %% Non-interview email handling
    EmailClassifier -->|"Personal/Other"| TerminalFeedback

    %% Styling
    classDef emailStyle fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#000000
    classDef researchStyle fill:#f1f8e9,stroke:#558b2f,stroke-width:2px,color:#000000
    classDef prepStyle fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px,color:#000000
    classDef cacheStyle fill:#fff3e0,stroke:#f57c00,stroke-width:2px,color:#000000
    classDef memoryStyle fill:#fce4ec,stroke:#c2185b,stroke-width:2px,color:#000000
    classDef workflowStyle fill:#e8f5e8,stroke:#2e7d32,stroke-width:3px,color:#000000
    classDef outputStyle fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px,color:#000000

    class InterviewFolder,EmailClassifier,EntityExtractor,KeywordExtractor,MemoryCheck emailStyle
    class ResearchCoordinator,CompanyResearch,RoleResearch,InterviewerResearch,QualityReflection researchStyle
    class GuideGenerator,TechnicalPrep,InterviewerInsights,StrategicQuestions,CitationEngine prepStyle
    class TavilyCache,OpenAICache,CacheManager cacheStyle
    class InterviewStore,ResumeMemory,SharedMemory memoryStyle
    class MainWorkflow,WorkflowRunner workflowStyle
    class FileOutput,TerminalFeedback outputStyle
Loading

Key Features Highlighted in This Flowchart

3-Pipeline Architecture

  • Email Pipeline: Classification, entity extraction, memory management
  • Deep Research Pipeline: Multi-agent research with Tavily API integration
  • Prep Guide Pipeline: Personalized guide generation with citations

Cache Management Systems

  • Tavily Cache: Research query caching for cost optimization (cache/tavily/)
  • OpenAI Cache: Response caching for guide generation (.openai_cache/)
  • Cache Manager CLI: Centralized cache monitoring and management (workflows/cache_manager.py)

Memory Systems

  • Interview Store: SQLite-based deduplication and status tracking
  • Shared Memory: Cross-agent context synchronization

API Integrations

  • Tavily API: Web search and company intelligence (api/run_tavily.py)
  • OpenAI API: Guide generation and content creation (shared/openai_cache.py)

Main Entry Points

  • Interview Prep Workflow: workflows/interview_prep_workflow.py
  • Cache Manager: workflows/cache_manager.py --status
  • Workflow Runner: workflows/workflow_runner.py

(back to top)

Contact and Developers

Kathy Chen - @Linkedin - email: kathychen331@outlook.com

Grace Chen - @Linkedin - email: chenpgrace1@gmail.com

Julianna Bracamonte - @Linkedin - email: bracamontejulianna@gmail.com

(back to top)

Acknowledgments

  • Dandilyonn SEEDS Program
  • Streamlit for their amazing framework
  • OpenAI for language models powering the agents
  • Tavily for intelligent web search APIs

(back to top)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 86.5%
  • Jupyter Notebook 11.4%
  • HTML 2.1%