Skip to content

ThangKNguyen/Jobflow-AI

Repository files navigation

πŸš€ JobFlow - AI-Powered Job & Event Discovery Agent

JobFlow is an autonomous AI agent built on the Fetch.ai uAgents framework that helps users discover software engineering jobs, tech events, research people, and generate personalized introduction messages. It combines LangGraph workflows, LLM-powered intelligence, and multi-agent orchestration to deliver a seamless job search and networking experience. Created by Thang Nguyen as an internship project at Fetch.ai, cohort Fall 2025


✨ Features

πŸ’Ό Job Search

  • Intelligent Matching: Finds SWE jobs (internships & new grad) tailored to your resume
  • LLM-Powered Scoring: Uses Gemini to score and rank jobs based on resume fit
  • Smart Shortlisting: Filters jobs by role keywords and requirements
  • Career Insights: Provides skill gap analysis, resume tips, and application strategies
  • Multi-Location Support: Search by location, work mode, and specific roles

πŸŽͺ Event Finder

  • Event Discovery: Search tech events by location or company
  • Smart Ranking: Prioritizes relevant events using LLM-based scoring
  • Rich Details: Shows dates, locations, hosts, registration links, and pricing
  • Company Filtering: Find events hosted by specific companies (Google, Fetch.ai, MongoDB, etc.)

πŸ‘€ People Research

  • Host Information: Research event hosts and speakers
  • AI-Generated Bios: Get concise 4-5 sentence professional bios
  • Credibility Checking: Validates information using multiple sources
  • Context-Aware: Automatically links people to their events

βœ‰οΈ Introduction Generator

  • Personalized Messages: Generate tailored introduction messages to event hosts
  • Multiple Formats: Choose from Email, LinkedIn, or General formats
  • Context-Rich: Uses both person's bio and your background for relevance
  • Professional Tone: Crafted by Gemini for maximum impact

πŸ“… Calendar Integration

  • One-Click Add: Generate Google Calendar URLs for events
  • Pre-Filled Details: Event name, date, time, location automatically populated
  • No API Keys Needed: Uses Google Calendar's URL scheme

πŸ› οΈ Tech Stack

Core Framework

  • uAgents (v0.22.5): Fetch.ai's agent framework for autonomous communication
  • LangGraph (v0.3.20): Stateful multi-agent orchestration
  • Pydantic (v2.x): Data validation and settings management

AI & LLM

  • Google Gemini API: Primary LLM for intent classification, parsing, and content generation
    • gemini-2.5-flash for complex reasoning
    • gemini-2.5-flash-lite for fast classification
  • Tavily Search API: Web search for people research

Data Processing

  • BeautifulSoup4: HTML parsing for job description scraping
  • Pandas: Event data processing from CSV files
  • Requests: HTTP client for API calls

Infrastructure

  • Fetch.ai Agentverse: Agent deployment and mailbox services
  • ASI:One: Chat interface for interacting with the agent
  • Python 3.11+: Core runtime environment

πŸ“ Folder Structure

Jobflow/
β”œβ”€β”€ app/                          # Main application code
β”‚   β”œβ”€β”€ agents/                   # LangGraph agent nodes (fetcher, scorer, ranker, formatter)
β”‚   β”œβ”€β”€ graph/                    # LangGraph workflow definitions (job, event, person, intro)
β”‚   β”œβ”€β”€ integrations/             # External API integrations (Gemini, Tavily)
β”‚   β”œβ”€β”€ prompts/                  # LLM prompt templates
β”‚   β”œβ”€β”€ services/                 # Business logic (scoring, scraping, listings)
β”‚   β”œβ”€β”€ uagent/                   # uAgent orchestrator (main entry point)
β”‚   └── utils/                    # Utility functions (calendar URL generation)
β”‚
β”œβ”€β”€ events/                       # Event data storage
β”‚   β”œβ”€β”€ csv/                      # Raw event CSV files by company
β”‚   └── events.json               # Processed event database
β”‚
β”œβ”€β”€ scripts/                      # Data processing scripts
β”‚   └── process_events.py         # CSV β†’ JSON event processor
β”‚
β”œβ”€β”€ requirements.txt              # Python dependencies
β”œβ”€β”€ .env                          # Environment variables (API keys)
└── README.md                     # This file

Key Directories Explained:

  • app/agents/: Individual LangGraph nodes that perform specific tasks (fetch jobs, score resumes, rank results)
  • app/graph/: Workflow orchestration using LangGraph (job search workflow, event workflow, person research, introduction generation)
  • app/uagent/: The main orchestrator agent that routes queries and communicates with ASI:One
  • events/: Event database with CSV sources and processed JSON output
  • scripts/: Utility scripts for processing event data from CSV to structured JSON

πŸš€ Quick Start

Prerequisites

Before you begin, ensure you have:

  1. Python 3.11+ installed (Download here)
  2. Git for cloning the repository
  3. API Keys from the following services:

πŸ“₯ Installation

1. Clone the Repository

git clone https://github.com/YOUR_USERNAME/Jobflow.git
cd Jobflow

2. Create a Virtual Environment

Windows:

python -m venv .venv
.venv\Scripts\activate

macOS/Linux:

python3 -m venv .venv
source .venv/bin/activate

3. Install Dependencies

pip install -r requirements.txt

4. Set Up Environment Variables

Create a .env file in the project root:

# Windows
copy .env.example .env

# macOS/Linux
cp .env.example .env

Edit .env with your API keys:

# ============================================================================
# Gemini API (Primary LLM)
# ============================================================================
GEMINI_API_KEY=your_gemini_api_key_here

# ============================================================================
# Fetch.ai Agentverse (Agent Deployment)
# ============================================================================
AGENTVERSE_API_KEY=your_agentverse_api_key_here
ASI1_API_KEY=your_asi1_api_key_here
JOB_ORCHESTRATOR_SEED=your_unique_seed_phrase_here

# ============================================================================
# Job Listing Sources
# ============================================================================
NEW_GRAD=https://raw.githubusercontent.com/vanshb03/New-Grad-2026/main/.github/scripts/listings.json
INTERNSHIP=https://raw.githubusercontent.com/vanshb03/Summer2026-Internships/main/.github/scripts/listings.json

# ============================================================================
# Tavily Search API (People Research)
# ============================================================================
TAVILY=your_tavily_api_key_here

How to Get Your API Keys:

  • GEMINI_API_KEY: Visit Google AI Studio β†’ Sign in β†’ "Get API Key"
  • AGENTVERSE_API_KEY: Sign up at Agentverse β†’ Profile β†’ API Keys
  • ASI1_API_KEY: Log in to Agentverse β†’ Navigate to ASI:One settings β†’ Generate API Key
  • JOB_ORCHESTRATOR_SEED: Create a unique passphrase (e.g., "my unique jobflow agent seed 2024")
  • TAVILY: Sign up at Tavily β†’ Dashboard β†’ Copy API Key

5. Set Up Event Data (Required for Event Finder)

For the Event Finder feature to work, you need to download event data and process it:

Download Event CSV Files

  1. Visit the Cerebral Valley Events Spreadsheet:

  2. Export as CSV:

    • Open each tab (2025 Events, 2025 Hackathons)
    • Click File β†’ Download β†’ Comma Separated Values (.csv)
    • Save the files as descriptive names (e.g., cerebralvalley-2025-events.csv, cerebralvalley-2025-hackathons.csv)
  3. Place CSV files in the events/csv/ directory:

    events/
    β”œβ”€β”€ csv/
    β”‚   β”œβ”€β”€ cerebralvalley-2025-events.csv
    β”‚   β”œβ”€β”€ cerebralvalley-2025-hackathons.csv
    β”‚   └── ... (add more CSV files as needed)
    └── events.json  # This will be generated
    

Process Event Data

Run the event processor script to convert CSV files into a structured JSON database:

python scripts/process_events.py

Expected Output:

Loading events from CSVs...
βœ… Loaded X events from cerebralvalley-2025-events.csv
βœ… Loaded X events from cerebralvalley-2025-hackathons.csv
Processing events with Gemini...
βœ… Processed X events
πŸ’Ύ Saved to events/events.json

This will populate events/events.json with all processed event data. The Event Finder feature queries this database.

Note: You can add more event CSV files to events/csv/ and re-run the processor to update the database. The script automatically filters out past events and removes duplicates.


▢️ Running the Orchestrator

Start the JobFlow Agent

python -m app.uagent.job_orchestrator

Expected Terminal Output

You should see logs similar to this:

======================================================================
πŸš€ JobFlow Orchestrator - Local Agent Inspector Mode
======================================================================
Agent Address: agent1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Port: 8002
======================================================================
βœ… Agent funding checked
Starting agent... Look for 'Agent inspector available at' URL in logs!

INFO:     [jobflow_orchestrator]: Starting agent with address: agent1qtur8...
INFO:     [jobflow_orchestrator]: ======================================================================
INFO:     [jobflow_orchestrator]: πŸš€ JobFlow Orchestrator uAgent Starting Up
INFO:     [jobflow_orchestrator]: ======================================================================
INFO:     [jobflow_orchestrator]: Agent Name: jobflow_orchestrator
INFO:     [jobflow_orchestrator]: Agent Address: agent1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
INFO:     [jobflow_orchestrator]: Port: 8002
INFO:     [jobflow_orchestrator]: Mailbox: Enabled (ready for ASI:One)
INFO:     [jobflow_orchestrator]: ======================================================================
INFO:     [jobflow_orchestrator]: πŸ“‘ Waiting for ChatMessages from ASI:One...
INFO:     [jobflow_orchestrator]: πŸ‘€ Watch the Local Agent Inspector for message flow!
INFO:     [jobflow_orchestrator]: ======================================================================
INFO:     [jobflow_orchestrator]: Agent inspector available at https://agentverse.ai/inspect/?uri=http%3A//127.0.0.1%3A8002&address=agent1qtur8...
INFO:     [jobflow_orchestrator]: Starting server on http://0.0.0.0:8002 (Press CTRL+C to quit)

Connect to ASI:One

  1. Copy the Agent Inspector URL from the terminal logs (starts with https://agentverse.ai/inspect/...)

  2. Open the URL in your browser - This opens the Local Agent Inspector

  3. Navigate to ASI:One:

    • Click on Agent Profile
    • Once you get to the Agent Profile, click on Chat with Agent
    • OR go directly to ASI:One and enter your agent address
  4. Start Chatting! Try these example queries:

    Link to example chat: https://asi1.ai/shared-chat/96fbce02-5074-4d72-bb5a-04c8c1f742d0

    πŸ’Ό Job Search:
    "Find intern ML Engineer roles, remote, show me 5 jobs. Resume: CS student at SJSU with Python, TensorFlow, PyTorch..."
    
    πŸŽͺ Event Search:
    "Find tech events in the Bay Area"
    "Show me events Google is hosting"
    
    πŸ‘€ People Research:
    "Who is Sana Wajid from Fetch.ai?"
    
    βœ‰οΈ Introduction:
    "I want to introduce myself to Sana Wajid"
    
    πŸ“… Calendar:
    "Add event 2 to my calendar"
    

🎯 Example Workflow

You: "Find events hosted by Google"
Agent: [Returns list of Google events with dates, locations, hosts]

You: "Who is Alexis LΓͺ-QuΓ΄c from the event?"
Agent: [Provides AI-generated bio of Alexis]

You: "I want to introduce myself to Alexis"
Agent: "Please share your background..."

You: [Paste your resume/background]
Agent: "Which format? A) Email B) LinkedIn C) General"

You: "A"
Agent: [Generates personalized email introduction]

You: "Add event 1 to my calendar"
Agent: [Provides Google Calendar URL]

πŸ› Troubleshooting

Common Issues

1. Agent Not Responding

  • Ensure your AGENTVERSE_API_KEY is valid
  • Check that the agent is running (look for "Starting server" in logs)
  • Try refreshing the ASI:One chat interface

2. "No jobs found"

  • Verify job listing URLs are accessible
  • Check your resume is included in the query
  • Try broadening your search criteria

3. API Key Errors

  • Confirm all API keys in .env are correct
  • Make sure .env is in the project root directory
  • Restart the agent after updating .env

4. Python Version Issues

  • JobFlow requires Python 3.11 or higher
  • Check version: python --version

πŸ“ License

This project is open source and available under the MIT License.


πŸ™ Acknowledgments


πŸ“§ Contact

For questions, issues, or contributions, please open an issue on GitHub or contact the maintainer.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages