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
- 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 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.)
- 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
- 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
- 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
- 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
- Google Gemini API: Primary LLM for intent classification, parsing, and content generation
gemini-2.5-flashfor complex reasoninggemini-2.5-flash-litefor fast classification
- Tavily Search API: Web search for people research
- BeautifulSoup4: HTML parsing for job description scraping
- Pandas: Event data processing from CSV files
- Requests: HTTP client for API calls
- Fetch.ai Agentverse: Agent deployment and mailbox services
- ASI:One: Chat interface for interacting with the agent
- Python 3.11+: Core runtime environment
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
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:Oneevents/: Event database with CSV sources and processed JSON outputscripts/: Utility scripts for processing event data from CSV to structured JSON
Before you begin, ensure you have:
- Python 3.11+ installed (Download here)
- Git for cloning the repository
- API Keys from the following services:
- Gemini API: Get your API key
- Fetch.ai Agentverse Account: Sign up here
- Tavily API: Get your API key
git clone https://github.com/YOUR_USERNAME/Jobflow.git
cd JobflowWindows:
python -m venv .venv
.venv\Scripts\activatemacOS/Linux:
python3 -m venv .venv
source .venv/bin/activatepip install -r requirements.txtCreate a .env file in the project root:
# Windows
copy .env.example .env
# macOS/Linux
cp .env.example .envEdit .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_hereHow 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
For the Event Finder feature to work, you need to download event data and process it:
-
Visit the Cerebral Valley Events Spreadsheet:
-
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)
-
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
Run the event processor script to convert CSV files into a structured JSON database:
python scripts/process_events.pyExpected 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.
python -m app.uagent.job_orchestratorYou 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)
-
Copy the Agent Inspector URL from the terminal logs (starts with
https://agentverse.ai/inspect/...) -
Open the URL in your browser - This opens the Local Agent Inspector
-
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
-
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"
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]
1. Agent Not Responding
- Ensure your
AGENTVERSE_API_KEYis 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
.envare correct - Make sure
.envis 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
This project is open source and available under the MIT License.
- Fetch.ai for the uAgents framework and Agentverse platform
- Google for Gemini API
- Tavily for web search capabilities
- Job listing data sourced from SimplifyJobs and (https://github.com/vanshb03) repositories
- Events from https://cerebralvalley.ai/events --> https://docs.google.com/spreadsheets/d/1P6ut7vL-gXKbeDeh3nuPqBjoCupjIt87Sw7TnhumBSU/edit?gid=1781893986#gid=1781893986
For questions, issues, or contributions, please open an issue on GitHub or contact the maintainer.