Project Info
This project did not submit a demo video on Devpost.
Inspiration
Climate tech is a complex ecosystem of sectors, but career discovery within it is fragmented and unclear. Students and professionals want to work in climate but struggle to understand where their skills fit. We were inspired to bridge the gap between climate innovation and climate talent.
What it does
C3 is an AI-powered Climate Career Explorer that connects structured climate taxonomy with real job listings. It parses resumes, extracts skills, and semantically matches users to categorized climate roles. Users receive personalized job recommendations with percentage-based compatibility scores.
How we built it
We structured the Climate Tech Map dataset into a domain-specific skills and sector database. We scraped LinkedIn climate jobs using Bright Data and ingested them into Supabase. Using RAG, embeddings, GPT-4, and a Fetch.ai agent, we built a conversational job-matching system.
Challenges we ran into
Normalizing messy climate skill data into a clean taxonomy was difficult. Resumes vary significantly, making structured extraction challenging. Ensuring accurate retrieval without hallucination required careful RAG grounding.
Accomplishments we're proud of
We built an end-to-end climate-focused AI job intelligence pipeline. We successfully connected structured innovation data with real job listings. We implemented transparent resume-to-job percentage matching.
What we learned
Structured domain data dramatically improves AI retrieval quality. Semantic matching is far more effective than keyword-based job searches. AI systems are most powerful when grounded in clean, explainable data models.
What's next
for Untitled We plan to enable real-time job updates and skill gap recommendations. We aim to expand into employer dashboards and personalized learning pathways. Our long-term vision is a scalable AI engine for impact-driven career alignment.
Climate Tech Career Explorer π
AI-powered platform connecting students to climate tech opportunities. Built for TreeHacks 2026.
π― Overview
A comprehensive job discovery and career coaching platform with 4 integrated components:
- Automated Aggregation - Scrapes climate tech jobs using Browserbase/Stagehand
- Smart Categorization - AI-powered job categorization using Perplexity Sonar
- Career Coach Chatbot - Personalized guidance using Fetch.ai uAgents
- Resume Matcher - PDF parsing and job matching with Modal
ποΈ Architecture
climate-tech-career-explorer/
βββ frontend/ # Next.js + React + TypeScript
βββ backend/ # FastAPI orchestration layer
βββ agents/ # Fetch.ai career advisor agent
βββ components/
β βββ 1-scraper/ # Browserbase job scraper
β βββ 2-categorizer/ # Perplexity categorization
β βββ 4-resume-parser/ # Modal PDF parser
βββ database/ # Supabase schema
βββ shared/ # Shared resources (taxonomy)
βββ docs/ # Documentation
π Quick Start
Prerequisites
- Node.js 18+
- Python 3.10+
- npm/yarn
- Git
1. Clone & Setup
# Clone repository
git clone <your-repo-url>
cd climate-tech-career-explorer
# Install root dependencies
npm install
# Install frontend & scraper dependencies
cd frontend && npm install
cd ../components/1-scraper && npm install
cd ../..
2. Setup Python Environments
# Backend
cd backend
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
cd ..
# Agents
cd agents
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cd ..
# Categorizer
cd components/2-categorizer
pip install -r requirements.txt
cd ../..
# Resume Parser
cd components/4-resume-parser
pip install -r requirements.txt
cd ../..
3. Configure Environment
# Copy environment template
cp .env.example .env
# Edit .env with your API keys
# Required:
# - Supabase credentials
# - Browserbase API key
# - Perplexity API key
# - Fetch.ai agent config
# - Modal credentials
4. Setup Database
- Create Supabase project at https://supabase.com
- Run the schema:
# Copy schema contents from database/schema.sql
# Run in Supabase SQL Editor
- Update
.envwith Supabase credentials
5. Run Development Servers
Option A: Run all services concurrently
npm run dev
Option B: Run services individually
# Terminal 1: Backend API
cd backend
source venv/bin/activate
uvicorn main:app --reload --port 8000
# Terminal 2: Frontend
cd frontend
npm run dev
# Terminal 3: Agents (HTTP Server)
cd agents
source venv/bin/activate
python http_server.py
# Terminal 4: Scraper (when ready)
cd components/1-scraper
npm run scrape
# Terminal 5: Categorizer (when ready)
cd components/2-categorizer
uvicorn main:app --reload --port 3002
π Documentation
API Endpoints
Backend API (Port 8000)
GET /api/v1/jobs- List jobs with filtersGET /api/v1/jobs/{id}- Get job detailsGET /api/v1/categories- Get climate tech taxonomyPOST /api/v1/resume/upload- Upload resumePOST /api/v1/chat/session- Create chat sessionPOST /api/v1/chat/message- Send message to bot
Full API docs: http://localhost:8000/docs
Components
Component 1: Scraper
cd components/1-scraper
npm run scrape # Run scraper
Scrapes jobs from ClimateBase and other sources, uploads to backend.
Component 2: Categorizer
cd components/2-categorizer
uvicorn main:app --reload --port 3002
Categorizes jobs using Perplexity Sonar API and shared taxonomy.
Component 3: Chatbot Agent
cd agents
source venv/bin/activate
python http_server.py
Fetch.ai agent HTTP server providing conversational career guidance.
Component 4: Resume Parser
cd components/4-resume-parser
modal deploy modal_app.py
Deploys Modal function for PDF parsing and job matching.
ποΈ Database Schema
Tables:
jobs- Job listings with categoriesresumes- Uploaded resumes and parsed datacategories- Climate tech taxonomychat_sessions- Chat session trackingchat_messages- Conversation history
See database/schema.sql for complete schema.
π Frontend Pages
/- Landing page with stats/jobs- Browse jobs with filters/chat- Career coach chatbot/upload- Resume upload
π§ Tech Stack
Frontend:
- Next.js 14 (App Router)
- React 18
- TypeScript
- Tailwind CSS
- Supabase Client
Backend:
- FastAPI
- Python 3.10+
- Supabase (PostgreSQL)
- httpx (async HTTP)
AI/ML:
- Fetch.ai uAgents
- Perplexity Sonar API
- OpenAI (optional)
Infrastructure:
- Browserbase (scraping)
- Modal (serverless functions)
- Supabase (database + storage)
π₯ Team Workflow
Branch Strategy
main # Production
βββ dev # Integration branch
βββ feature/frontend # Your work
βββ feature/scraper # Teammate 1
βββ feature/categorizer # Teammate 2
βββ feature/resume # Teammate 3
Development Workflow
- Create feature branch from
dev - Work on your component
- Test locally
- Push and create PR to
dev - Team lead merges after review
Testing Integration
# Test backend
curl http://localhost:8000/health
# Test frontend API client
cd frontend && npm run dev
# Test scraper -> backend flow
cd components/1-scraper && npm run scrape
# Test chatbot
cd agents && source venv/bin/activate && python http_server.py
π Climate Tech Taxonomy
8 main categories from Climate Tech Map:
- Energy - Solar, Wind, Storage, Nuclear
- Mobility - EVs, Public Transit, Aviation
- Built Environment - Green Buildings, HVAC
- Food & Agriculture - Alt Proteins, AgTech
- Carbon Management - Capture, Credits, MRV
- Circular Economy - Recycling, Materials
- Climate Finance - Impact Investing, VC
- Nature-Based - Forestry, Ocean, Restoration
See shared/climate-tech-taxonomy.json for full taxonomy with subcategories and keywords.
π― Demo Checklist
- 50+ jobs scraped and in database
- Jobs categorized into taxonomy
- Resume upload working
- Resume matching functional
- Chatbot responding conversationally
- Frontend UI polished
- End-to-end flow tested
π Troubleshooting
Backend won't start:
- Check
.envhas correct Supabase credentials - Verify venv is activated
- Check port 8000 is available
Frontend errors:
- Ensure backend is running on port 8000
- Check
NEXT_PUBLIC_BACKEND_URLin.env.local - Clear
.nextfolder and rebuild
Database errors:
- Verify schema.sql ran successfully
- Check Supabase project is active
- Confirm service key has correct permissions
Agent not responding:
- Check agent port 8001 is available
- Verify Fetch.ai dependencies installed
- Check agent logs for errors
π License
MIT License - Built for TreeHacks 2026
π Acknowledgments
- TreeHacks 2026
- Climate Tech Map
- Sponsor APIs: Browserbase, Perplexity, Fetch.ai, Modal, Supabase
Built with π for climate action
Analysis
View
Metric
- 20
- 6
- 2
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FastAPIIn code
- JavaScriptIn code
- LangChainIn code
- Next.jsIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- SQLIn code
- StreamlitIn code
- SupabaseIn code
- Tailwind CSSIn code
- TypeScriptIn code
13 of 13 appear in the indexed code.
AI coding agents
- Claude CodeConfig Β· Commits
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
742 KB
Source files
76
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
sahajpatel008/C3
139 files Β· 5.6 MB Β· @ 5268d6f
Structure
Interface
58 files Β· 42%Screens, components and styles rendered to the user.
Application logic
25 files Β· 18%Domain rules, services and shared utilities.
+5 moreData & schema
15 files Β· 11%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here β open the file browser to check anything the diagram implies.
Languages
- Python43%
- SQL38%
- Markdown13%
- TypeScript6%
- CSS0%
- JavaScript0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
backend/requirements.txt
pypi Β· 25- email-validator
- fastapi
- gotrue
- httpx
- lancedb
- langchain
- langchain-community
- langchain-core
- langchain-openai
- openai
- pdfplumber
- postgrest
- pydantic
- pydantic-settings
- python-docx
- python-dotenv
- python-multipart
- realtime
- +7 more
components/2-categorizer/requirements.txt
pypi Β· 15- beautifulsoup4
- lancedb
- langchain
- langchain-community
- langchain-openai
- openai
- openpyxl
- pdfplumber
- plotly
- PyPDF2
- python-docx
- python-jobspy
- requests
- sentence-transformers
- streamlit
frontend/package.json
npm Β· 14- @supabase/supabase-js
- axios
- next
- react
- react-dom
- +9 more
agents/requirements.txt
pypi Β· 8- fastapi
- httpx
- openai
- pydantic
- python-dotenv
- uagents
- uvicorn
- websockets
components/1-scraper/requirements.txt
pypi Β· 7- certifi
- charset-normalizer
- idna
- python-dotenv
- requests
- supabase
- urllib3
components/4-resume-parser/requirements.txt
pypi Β· 7- pdfplumber
- python-docx
- python-dotenv
- requests
- striprtf
- supabase
- tabulate
components/1-scraper/package.json
npm Β· 6- @browserbasehq/stagehand
- axios
- dotenv
- +3 more
package.json
npm Β· 11 development-only dependencies.
Declared in the repositoryβs manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This projectβs features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.