An AI-powered career workspace from resume editing to offer acceptance, covering resume editing, JD matching, application tracking, mock interviews, and interview review.
English · 简体中文
LuJie CareerKit is built for internships, campus recruiting, and career job searches. It brings resume editing, job-description matching, application tracking, interview practice, and AI review into one AI-powered career workspace. You can maintain different resume versions for different roles, turn a JD into sharper role-specific wording, track every application, and keep refining answers, feedback, and review notes before and after interviews.
Try the live preview at https://lujie.chozzc.dev.
| Control Center | Resume Library |
|---|---|
![]() |
![]() |
| Resume Editor | JD Matching |
![]() |
![]() |
| JD-Optimized Resume | Interview Assistant |
![]() |
![]() |
| Mock Interview | AI Review |
![]() |
![]() |
| Application Tracking | Pipeline Status |
![]() |
![]() |
- Structured resume editing: maintain multiple resume versions, edit education, internship, project, skill, and custom sections, switch templates and themes, and export PDF, PNG, or editable DOCX files.
- JD matching: paste a target job description and let AI reorder emphasis and improve wording without inventing experience.
- Application tracking: record companies, roles, sources, stages, deadlines, follow-up dates, priorities, 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.
- Data and privacy controls: resumes, jobs, applications, interviews, and settings are stored in a local SQLite database for long-term personal use.
- OpenAI-compatible setup: configure Base URL, model, API key, and generation parameters from the Settings page.
- Voice input: use browser speech recognition where available for JD fields and interview answers.
- Resume content, resume versions, jobs, applications, interviews, 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_SECRETis the local encryption secret for saved AI keys. Use a long random value in.env.local.
- Node.js 20.9 or later
- npm
- Chrome or Edge for the best browser speech experience
git clone https://github.com/Chozzc/Lujie-Careerkit.git
cd Lujie-Careerkit
npm ciCreate 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.
Start the app:
npm run devOpen http://localhost:3000. The app creates the local schema and demo workflow data on first use.
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.7-max"OPENAI_BASE_URL and OPENAI_MODEL only set first-run defaults. Configure the actual API key from the in-app Settings page.
- Open the Settings page in the app.
- Choose an OpenAI-compatible provider.
- Enter the Base URL, model name, and API key.
- Save and run the connection test.
AI features stay disabled until the settings are saved and the connection test succeeds.
- Unified resume-import setup prompts and local fallback messaging across the Resume Editor, JD Matching, and Interview Assistant.
- Improved external resume import with clearer button states, parsing progress, completion notice, and parsed-name based resume naming.
- Fixed Aliyun Bailian / Qwen defaults after data reset, preserved AI test status after saving unchanged settings, and diversified demo job sources.
- Fixed the setup dialog footer layout so action buttons stay inside the dialog.
- Initial open-source release with the resume library, structured resume editor, JD matching, application tracking, mock interviews, AI review, and local SQLite storage.
No. Resume editing and application tracking work locally. AI features such as JD matching, mock interviews, and AI review require an API key from an OpenAI-compatible provider.
By default, data is stored on your machine in prisma/dev.db. This is local runtime data and should not be committed to GitHub.
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.
Yes. Any OpenAI-compatible provider can be configured by entering its Base URL, model name, and API key in Settings.
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
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.
LuJie CareerKit is released under the Apache License 2.0. Third-party notices are listed in NOTICE.










