Skip to content

Latest commit

Β 

History

86 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧭 ZhituCareer+

AI-powered career planning and job-hunting assistant

A one-stop career analysis platform built on Flask + multi-agent collaboration (LLM + Playwright real-time market analysis), offering career path analysis, intelligent job matching, and course learning recommendations.

Python Flask ModelScope Playwright License PRs Welcome Tests Docker


⭐ If this project helps you, feel free to give it a Star!


✨ Features

Feature Description
🎯 Career Path Analysis Generates a personalized career direction based on your profile and real-time market data
πŸ’Ό Smart Job Matching Matches the most suitable jobs from the job pool based on your skills and search preferences
πŸ“Š Market Trend Insights Playwright scrapes job market dynamics in real time, and the AI summarizes industry trends
πŸ“š Course Recommendations Recommends courses and learning paths aligned with your career goals
🎀 AI Mock Interview Generates interview questions from your profile and target position, scores each answer and gives a full-session summary
πŸ—ΊοΈ Long-term Career Planning Builds a 5-year, three-phase roadmap (foundation β†’ deepening β†’ leap) with goals, actions, milestones and quantified KPIs
πŸš€ Scalable Hybrid Retrieval TF-IDF + inverted-index retrieval pre-filters thousands of records before the LLM re-ranks, so matching stays fast and bounded as data grows
πŸ›Ÿ Offline Fallback Engine If the LLM is unavailable (no key / quota / network), rule-based analysis and matching keep every feature working with the same response format
πŸ“Š Data Insights Dashboard Interactive ECharts widgets (salary distribution, hot cities, top skills) driven by a live stats API
πŸ•˜ Analysis History Every career analysis is saved; reload or delete past results anytime
πŸ›’ Self-service Registration Users can register their own accounts with phone + password (rate-limited)
πŸ” Searchable Admin Panel Admin panel with keyword search and pagination; add / edit / delete items by id
πŸ” Role-based Access Control User / admin dual roles with a dedicated admin panel
🐳 One-command Docker Ship the whole platform with docker compose up
πŸš€ Out of the Box Built-in demo accounts and sample data; deployable within minutes

πŸ“Έ Interface Preview

Login Page

Login page

User Career Analysis Dashboard

User dashboard

Admin Panel

Admin panel

🧠 Core Concept: Multi-Agent Collaboration Architecture

ZhituCareer+ uses a modular agent collaboration architecture in which multiple agents each do their part and work in sequence:

  • User Profile Agent: parses education / major / skills / experience / goals and outputs a personal capability profile
  • Market Analysis Agent: scrapes job market dynamics in real time with Playwright, combined with LLM to produce industry trends
  • Job Recommendation Agent: combines the personal profile and market analysis to generate structured job-hunting advice
  • Job Matching Agent: filters the most suitable positions from the job pool by match score
  • Course Matching Agent: recommends the most relevant courses based on career goals
  • Interview Agent: generates targeted interview questions and evaluates candidate answers with scores and feedback
  • Career Planning Agent: produces a structured 5-year, three-phase long-term career roadmap
  • Hybrid Retrieval Engine: TF-IDF + inverted-index search with Chinese bigram tokenization and English↔Chinese alias expansion pre-filters thousands of records down to a bounded candidate set (≀ 20) before any LLM call
  • Fallback Engine: deterministic rule-based analysis / matching that guarantees the app stays fully usable when the LLM is unreachable

πŸš€ Quick Start

Requirements

Installation

# 1. Create and activate a virtual environment
conda create -n zhitu_career python=3.9
conda activate zhitu_career

# 2. Clone the repository
git clone https://github.com/NoahIsARider/ZhituCareer.git
cd ZhituCareer

# 3. Install dependencies
pip install -r requirements.txt

Configure Environment Variables

Copy .env.example to .env and fill in your API key:

cp .env.example .env
# Required: ModelScope / SiliconFlow API Key
OPENAI_API_KEY=your_api_key_here

# Optional: custom model and API base URL
# LLM_BASE_URL=https://api-inference.modelscope.cn/v1/
# LLM_MODEL=LLM-Research/Meta-Llama-3.1-8B-Instruct

# Optional: change the session secret key in production
# SECRET_KEY=your-secret-key

πŸ’‘ All model names and API base URLs can be overridden via environment variables β€” no code changes needed. The app still starts normally without an API key: the rule-based fallback engine takes over, so career analysis, job matching, and course recommendations keep working in fully offline mode (results are tagged with a source marker).

Start the Application

python app.py

Visit http://localhost:5000 and log in with a demo account:

Role Phone Password
πŸ‘‘ Admin 13800000000 admin123
πŸ‘€ Regular user 13900000000 user123

🐳 Docker (recommended)

# One command, everything included
docker compose up --build

# Or run without API key to try the offline fallback engine right away
OPENAI_API_KEY= docker compose up

Visit http://localhost:5000. Your data lives in ./data and persists across restarts.


πŸ“– Usage Guide

Regular Users

  1. After logging in, the dashboard immediately shows live market insights (salary distribution, hot cities, top skills) from the built-in data
  2. Fill in your education / major / skills / experience / career goals on the dashboard
  3. Click "Get Career Analysis" and the AI will generate career direction, job-hunting advice, a skill improvement checklist, and recommended positions β€” every result is saved to your analysis history for later review
  4. Use "Job Search" to match positions by keyword and city
  5. Use "Course Recommendations" to get a learning path aligned with your career goals
  6. Use "AI Mock Interview" to run a simulated interview: enter a target position, answer the generated questions one by one, and get per-answer scores plus a final session summary
  7. Use "Long-term Career Planning" to generate a 5-year, three-phase roadmap with goals, actions, milestones and KPIs; every plan is saved to your plan history

Admins

  1. After logging in, view real-time statistics for courses and positions in the "Admin Panel"
  2. Use the search box to filter by keyword and the pagination controls to browse large datasets
  3. Use the card actions to add / edit / delete individual course and position records by id
  4. Data is saved to data/course.json and data/jobs.json (atomic writes, so the files can never be left half-written)

πŸ—‚οΈ Project Structure

ZhituCareer/
β”œβ”€β”€ app.py                  # Flask main app (routing, auth, session management)
β”œβ”€β”€ career_model.py         # Career analysis orchestration (multi-agent pipeline)
β”œβ”€β”€ career_plan.py          # Long-term career planning (LLM β†’ fallback)
β”œβ”€β”€ mock_interview.py       # AI mock interview engine (LLM β†’ fallback)
β”œβ”€β”€ job_matching.py         # Job matching service (retrieve β†’ LLM β†’ fallback)
β”œβ”€β”€ course_matching.py      # Course matching service (retrieve β†’ LLM β†’ fallback)
β”œβ”€β”€ retrieval.py            # Hybrid retrieval: inverted index + TF-IDF pre-filtering
β”œβ”€β”€ fallback_matcher.py     # Rule-based fallback analysis & matching (offline mode)
β”œβ”€β”€ data_store.py           # Atomic JSON persistence, file locks, schema validation
β”œβ”€β”€ cache.py                # Thread-safe TTL cache
β”œβ”€β”€ stats.py                # Dashboard stats (salary / city / skills aggregates)
β”œβ”€β”€ agent/                  # Multi-agent collaboration layer
β”‚   β”œβ”€β”€ llm_client.py       # LLM client, robust JSON parsing, and retry
β”‚   β”œβ”€β”€ user_profile_agent.py
β”‚   β”œβ”€β”€ market_analysis_agent.py   # Playwright market scraping
β”‚   β”œβ”€β”€ job_recommendation_agent.py
β”‚   β”œβ”€β”€ job_matching_agent.py
β”‚   β”œβ”€β”€ course_matching_agent.py
β”‚   β”œβ”€β”€ interview_agent.py        # Mock-interview question generation & answer evaluation
β”‚   └── career_planning_agent.py  # 5-year roadmap generation
β”œβ”€β”€ data/                   # Data storage (JSON)
β”‚   β”œβ”€β”€ users.json          # Users and roles
β”‚   β”œβ”€β”€ jobs.json           # Job data
β”‚   β”œβ”€β”€ course.json         # Course data
β”‚   β”œβ”€β”€ interviews.json     # Mock interview sessions
β”‚   └── plans.json          # Long-term career plans
β”œβ”€β”€ templates/              # Frontend pages (Bootstrap 5)
β”‚   β”œβ”€β”€ login.html          # Login / register page
β”‚   β”œβ”€β”€ index.html          # User dashboard (ECharts insights + history)
β”‚   └── admin.html          # Admin panel
β”œβ”€β”€ tests/                  # 165 pytest cases incl. 5,000-record scale tests
β”œβ”€β”€ Dockerfile              # One-command container build
β”œβ”€β”€ docker-compose.yml      # `docker compose up` β†’ running platform
└── requirements.txt

πŸ—ΊοΈ Roadmap

  • Hybrid retrieval for large catalogs (retrieve β†’ LLM β†’ fallback)
  • Offline rule-based fallback engine
  • Dashboard data insights (ECharts)
  • Career analysis history
  • AI mock interview (question generation + answer scoring + session summary)
  • Long-term career planning (5-year, three-phase roadmap)
  • Docker one-command deployment
  • 165 automated tests
  • SQLite migration for concurrent multi-worker writes
  • Resume (PDF/Word) parsing
  • Job application tracking (favorites / status)
  • LLM streaming output (SSE)

πŸ› οΈ Tech Stack

Layer Technology
Backend Flask 3 Β· Python 3.9+
AI Engine OpenAI-compatible API (ModelScope / SiliconFlow) Β· Meta-Llama-3.1-8B-Instruct Β· offline rule-based fallback
Data Collection Playwright (headless Chromium, optional)
Retrieval Inverted index + TF-IDF hybrid search (Chinese bigram tokenization, English↔Chinese aliases)
Frontend Bootstrap 5 Β· Bootstrap Icons Β· vanilla ES6
Data Storage Atomic JSON files (seamlessly migratable to SQLite / MySQL, see the data_base branch)
Testing pytest Β· 165 cases Β· 5,000-record scale benchmarks (see docs/TEST_REPORT.md)

πŸ”§ Configuration

The system is highly configurable, entirely through environment variables:

Variable Default Description
OPENAI_API_KEY empty Required, ModelScope / SiliconFlow API Key
LLM_BASE_URL ModelScope v1 Custom LLM API base URL
LLM_MODEL Llama-3.1-8B Custom inference model
SECRET_KEY dev placeholder Flask session key; must be changed in production
HOST / PORT 0.0.0.0 / 5000 Service listen address
FLASK_DEBUG 0 Enable debug mode

🀝 Contributing

Any form of contribution is welcome!

  • πŸ› Found a bug β†’ submit an Issue
  • ✨ New feature / improvement β†’ fork and submit a Pull Request
  • πŸ“– Improve documentation β†’ help more people get started quickly

Before submitting a PR, please make sure the code passes basic checks and follows the existing code style.


πŸ“„ License

This project is open-sourced under the MIT License; see the LICENSE file for details.


πŸ“Ž Appendix: Feature Screenshots

More screenshots of the new full-chain career features.

Career Analysis Result

Career analysis result

AI Mock Interview β€” Questions

Mock interview questions

AI Mock Interview β€” Answer Scoring

Mock interview scoring

Long-term Career Planning Roadmap

Career planning roadmap

About

ZhiTuCareer+ is a web-based career analysis and job recommendation system designed to assist users in evaluating their career paths and discovering suitable job opportunities based on their profiles. The system offers features such as career path analysis, job recommendations, market trend analysis, and course match functionality.

Topics

Resources

Stars

31 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages