CL

chozzc/lujie-careerkit

Developer tools
313 stars Quality 71 Trend 71

An AI-powered career workspace from resume editing to offer acceptance, covering resume editing, JD matching, application tracking, mock interviews, and review. English · 简体中文

Overview

An AI-powered career workspace from resume editing to offer acceptance, covering resume editing, JD matching, application tracking, mock interviews, and review. English · 简体中文

README

LuJie CareerKit

An AI-powered career workspace from resume editing to offer acceptance, covering resume editing, JD matching, application tracking, mock interviews, and review.

English · 简体中文

Overview

LuJie CareerKit is built for internships, campus recruiting, and career job searches. It brings resume editing, job-description matching, application tracking, interview preparation, mock practice, and AI review into one agent-powered career workspace. You can maintain different resume versions for different roles, use job descriptions to generate resume wording and role-specific interview prep guides that better match role requirements, track every application, and keep refining knowledge, answers, feedback, and review notes.

Online Preview

Try the live preview at https://lujie.chozzc.dev.

Preview

Control Center Resume Library
Resume Editor JD Matching
JD-Optimized Resume Interview Assistant
Mock Interview AI Review
Application Tracking Pipeline Status

Highlights

  • Structured resume editing: maintain multiple resume versions, create an independent copy of any resume for experimental edits, edit education, internship, project, skill, and custom sections, switch templates and themes, and export PDF, PNG, or editable DOCX files.
  • AI resume analysis: diagnose action-result structure, evidence, clarity, and organization first; let the user choose which issues and directions to address; then create an independent optimized version while preserving the original.
  • Cover letters and recruiter greetings: combine the current resume, a complete JD, and user-provided availability details to generate a formal cover letter or a concise recruiter-chat opener, then edit, copy, or regenerate the result.
  • JD matching: paste a complete JD with the company, full role title, requirements, and responsibilities, then let AI diagnose evidence, reorder emphasis, improve wording, and save a role-specific version without inventing experience.
  • Role-specific interview prep: combine a selected resume with a complete JD to generate and save a guide with an overview, capability profile, evidence gaps, core knowledge, experience deep dives, targeted questions, and a preparation plan, then export the complete guide as an editable Word document or print-ready PDF.
  • Application tracking: record companies, roles, sources, stages, deadlines, follow-up dates, notes, JD text, and linked resume versions.
  • Mock interviews and review: generate interview questions from a resume and JD, save answer drafts, and create an AI review report you can revisit.
  • Job-search Agent Skills: reuse LuJie’s refined workflows for resume improvement, interview preparation, mock interviews, and job application writing in coding agents such as Codex and Claude Code.
  • Data and privacy controls: resumes, jobs, applications, interview prep guides, mock sessions, and settings are stored in a local SQLite database for long-term personal use.

Agent Skills

LuJie provides more than an application interface. Four of its refined job-search workflows are also packaged as Agent Skills for coding agents. Each skill includes a complete workflow, research requirements, factual boundaries, and quality checks rather than a single prompt.

Skill Purpose
resume-improvement Diagnose and improve a resume, with optional JD-specific tailoring
prepare-job-interview Research a company and role, then build a structured interview preparation guide
mock-interview-coach Run an interactive mock interview with adaptive follow-ups and evidence-based review
job-application-writer Write cover letters, recruiter greetings, emails, referrals, and follow-up messages

After cloning the repository, launch Codex from the project directory and describe the task directly. Codex can select the relevant skill automatically, or you can explicitly name one such as $resume-improvement. Claude Code and other coding agents can also read the corresponding SKILL.md and follow the same workflow.

For example:

  • Use $resume-improvement to review this resume for a backend engineering role.
  • Use $prepare-job-interview with my resume and this JD to build an interview preparation guide.

For company- or role-specific tasks, the skills proactively research current information when search tools are available and the user has not disabled web access. They require sources, distinguish facts from inference, and prohibit inventing candidate experience, skills, or outcomes.

Data and Privacy

  • Resume content, resume versions, jobs, applications, interview prep guides, mock sessions, and settings are stored in prisma/dev.db.
  • API keys are configured from the in-app Settings page. They are encrypted before being saved to SQLite.
  • LUJIE_SETTINGS_SECRET is the local encryption secret for saved AI keys. Use a long random value in .env.local.

Quick Start

Requirements

  • Node.js 20.9 or later
  • npm
  • Chrome or Edge for the best browser speech experience
docker run -d --name lujie-careerkit \
  -p 3000:3000 \
  -v lujie-data:/data \
  -e LUJIE_SETTINGS_SECRET="replace-with-a-long-random-string" \
  ghcr.io/chozzc/lujie-careerkit:latest

Open http://localhost:3000. SQLite data is stored in the Docker volume lujie-data. API keys are configured from the in-app Settings page.

LUJIE_SETTINGS_SECRET encrypts locally saved settings secrets. Replace the example value with a long random string.

Use latest to follow the newest main build. After v0.2.5 is published, use v0.2.5 to pin that release.

Local Development

git clone https://github.com/Chozzc/Lujie-Careerkit.git
cd Lujie-Careerkit
npm ci

Create a local environment file and generate an encryption secret:

cp .env.example .env.local
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

On Windows PowerShell:

Copy-Item .env.example .env.local
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Put the generated value into .env.local as LUJIE_SETTINGS_SECRET, then start the app:

npm run dev

Open http://localhost:3000. The app creates the local schema and demo workflow data on first use.

Environment Variables

DATABASE_URL="file:./dev.db"
LUJIE_SETTINGS_SECRET="change-me-to-a-long-random-string"
OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
OPENAI_MODEL="qwen3.6-flash"

OPENAI_BASE_URL and OPENAI_MODEL only set first-run defaults. Configure the actual API key from the in-app Settings page.

AI Provider Setup

  1. Open the Settings page in the app.
  2. Choose an OpenAI-compatible provider.
  3. Enter the Base URL, model name, and API key.
  4. Save and run the connection test.

AI features stay disabled until the settings are saved and the connection test succeeds.

Release Notes

v0.2.5

Turn refined job-search workflows into Agent Skills

  • Packaged LuJie’s refined workflows for resume improvement, interview preparation, mock interviews, and job application writing as four Agent Skills.
  • The skills live under .agents/skills, where Codex can discover them inside the repository and other coding agents such as Claude Code can read and reuse the same workflows.

v0.2.4

Interview preparation export

  • Added an “Export guide” action to generated interview preparation materials, with Word and PDF export options.

Review and selectively accept AI resume changes

  • AI resume optimization now opens a step-by-step review screen. Changes are grouped by resume section and show the original text beside an editable AI suggestion.
  • Each change can be accepted, rejected, or edited independently. The live preview follows the current choices, and only accepted content is saved to a new general-optimization version while the original resume remains unchanged.
  • The resume library distinguishes general-optimization versions from JD-optimized versions. GPA, dates, missing facts, and other information that AI should not infer are directed back to the editor for confirmation or completion.

v0.2.3

AI resume analysis

  • Renamed the resume-editor action from “AI Optimize Resume” to “Analyze resume.” AI first reads the sanitized current editor content and returns a diagnosis overview, existing strengths, and concrete issues without modifying or replacing the original resume.
  • STAR is used only as a diagnostic aid to check whether actions, methods, and results are clear. The analysis does not produce a mechanical overall score or fake STAR completion rate, and returns at most 12 issues tied to a resume section and source evidence.
  • Issues are grouped into collapsible “Address first,” “Recommended,” and “Optional improvement” sections. Important issues are selected by default, while users can inspect the reason and suggestion before changing the selection.

User-controlled optimization

  • Users can choose clarity, impact, concision, or ATS readability and add optional instructions to correct the diagnosis, limit the scope, or specify the desired tone.
  • AI changes only the selected issues and cannot expand the scope on its own, invent experience, skills, metrics, or results, or treat missing resume evidence as proof that the candidate lacks a capability.
  • Confirmation creates an independent optimized version while preserving the original. Diagnosis controls are locked during generation, and both analysis and optimization validate request input, sanitized snapshots, and structured model output.

FAQ

1. Do I need an API key to use it?

No. Resume editing and application tracking work locally. AI features such as JD matching, interview prep guides, mock interviews, and AI review require an API key from an OpenAI-compatible provider.

2. Where is my data stored?

By default, data is stored on your machine in prisma/dev.db. This is local runtime data and should not be committed to GitHub.

3. How are Dashboard metrics calculated?

  • Applications: roles that have entered the application tracking board, excluding JD matching drafts that have not been submitted.
  • Active flows: roles still in progress, including applied, assessment, and interview stages.
  • Due follow-ups: active flows only. LuJie first uses the manually set next follow-up date; applied roles without one use seven days after applying as the suggested follow-up date; assessment and interview roles use the current stage date.
  • Offers: roles marked as Offer.

4. What is LUJIE_SETTINGS_SECRET?

It is the local encryption secret used to encrypt API keys saved in SQLite. If you change it, API keys already saved in the old database may no longer decrypt, so you may need to save the key again in Settings.

5. Can I use another model provider?

Yes. Any OpenAI-compatible provider can be configured by entering its Base URL, model name, and API key in Settings.

Project Structure

.github/workflows/      GitHub Actions workflows, including GHCR image publishing
Dockerfile              Production container image definition
docker-compose.yml      Local Docker startup with persistent SQLite volume
prisma/                 Prisma schema and local SQLite runtime data
src/app/                Next.js pages and API routes
src/components/         Workspace, resume, interview, and shared UI
src/hooks/              Browser hooks such as speech recognition
src/lib/                Repository, AI, export, parsing, and domain logic
src/stores/             Resume editor state
src/types/              Shared TypeScript declarations
public/brand/           Brand mark and cover assets
public/images/          README screenshots
third-party/            Third-party license notices

Credits

The resume editor reuses and adapts design ideas and implementation concepts from JadeAI. JadeAI is licensed under Apache License 2.0; a copy is kept in third-party/JadeAI-LICENSE.txt.

License

LuJie CareerKit is released under the Apache License 2.0. Third-party notices are listed in NOTICE.

View this README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add chozzc/lujie-careerkit