Spaces:
Sleeping
Sleeping
| # 📄 PRD — AI-powered Resume & Cover Letter Generator | |
| ## 1. Product Overview | |
| This tool helps users **automatically generate a Resume and Cover Letter** tailored to a given **Job Description (JD)**. | |
| Frontend: **Streamlit** for simple, interactive UI. | |
| Backend: **Python + LiteLLM** for multi-provider LLM integration. | |
| 目标: | |
| * 快速生成个性化简历 & 求职信 | |
| * 用户可反复迭代修改,直到满意 | |
| * 一键导出 PDF | |
| --- | |
| ## 2. User Flow | |
| 1. **输入阶段** | |
| * 用户粘贴 **Job Description (JD)** | |
| * 用户粘贴 **个人信息**(简历内容、项目介绍、其他说明) | |
| 2. **分析 & 生成阶段** | |
| * 点击 **Analyse** → LLM 解析 JD + 用户信息,产出分析总结(关键技能、岗位要求、匹配点、差距、建议、短 Pitch) | |
| * 随后基于总结触发一次 **生成**:输出 **Resume (Markdown)** 与 **Cover Letter (Text)** | |
| * UI 在同一屏内立即预览两份文档(无单独“预览阶段”) | |
| 3. **Refine 阶段** | |
| * 用户在 **Feedback InputBox** 输入反馈(例如“强调 CI/CD 和 DevOps”) | |
| * 点击 **Refine** → 基于反馈更新分析总结,并再次 **生成** 两份文档 | |
| * UI 始终预览最新的 Resume & Cover Letter | |
| 4. **导出阶段** | |
| * 用户点击 **Export PDF** | |
| * 系统导出 Resume PDF + Cover Letter PDF | |
| --- | |
| ## 3. Core Features | |
| * **Frontend (Streamlit)** | |
| * InputBox: Job Description | |
| * InputBox: User Info | |
| * Button: **Analyse** | |
| * InputBox: 用户反馈 | |
| * Button: **Refine** | |
| * Preview Resume (Markdown) & Cover Letter (Text) | |
| * Button: **Export PDF** | |
| * **Backend (LLM)** | |
| * **Analyse Prompt** → 输出 JSON summary | |
| * **Refine Prompt** → 基于用户反馈更新 summary | |
| * **Generate Prompt (Single)** → 同时生成 Resume (Markdown) + Cover Letter (Text) | |
| * **Export** | |
| * Markdown → PDF | |
| * Text → PDF | |
| --- | |
| ## 3.1 UI Spec | |
| - **Layout:** 单页 Streamlit;左侧输入与控制,右侧结果与预览。 | |
| - **Inputs:** | |
| - `Job Description` 文本域(必填) | |
| - `User Info` 文本域(可包含简历要点、项目、加分项) | |
| - `Feedback` 文本域(可选,用于强调或修正分析方向) | |
| - **Actions:** | |
| - `Analyse`:解析 JD+User,生成/更新总结;随后立即生成并预览两份文档 | |
| - `Refine`:基于反馈更新总结;随后重新生成并预览两份文档 | |
| - `Export PDF`:导出两份 PDF(Resume、Cover Letter) | |
| - **Outputs:** | |
| - `Analyse Summary`(关键技能、匹配点、差距、建议、短 Pitch) | |
| - `Resume (Markdown 渲染预览)` | |
| - `Cover Letter (纯文本预览)` | |
| --- | |
| ## 3.2 Button Actions | |
| - **Analyse:** | |
| - 前置校验:`JD` 和 `User Info` 不为空。 | |
| - 生成总结:`services/analyse_service.analyse(jd, user)`。 | |
| - 生成文档:`services/generation_service.generate_both(summary, user)`。 | |
| - UI 更新:展示 `Analyse Summary` 与两份文档预览。 | |
| - 错误处理:捕获 LLM/解析错误,展示可重试提示;记录结构化日志。 | |
| - **Refine:** | |
| - 前置校验:存在有效 `summary` 且 `Feedback` 非空。 | |
| - 更新总结:`services/analyse_service.refine(summary, feedback)`。 | |
| - 重新生成:`services/generation_service.generate_both(updated_summary, user)`。 | |
| - UI 更新:覆盖预览为最新版本。 | |
| - **Export PDF:** | |
| - 前置校验:已生成 `Resume` 与 `Cover Letter`。 | |
| - 调用 `services/pdf_service.md_to_pdf(resume_md, path)` 与 `txt_to_pdf(cover_letter_txt, path)` 生成两份 PDF。 | |
| - 提供下载:通过 `st.download_button` 返回二者(或打包 zip)。 | |
| - 默认命名:`exports/{timestamp}_resume.pdf` 与 `exports/{timestamp}_cover_letter.pdf`。 | |
| --- | |
| ## 4. 技术实现概览 | |
| ### 4.1 项目结构 | |
| ``` | |
| apply-helper/ | |
| ├── pyproject.toml # 项目依赖与配置 | |
| ├── README.md # 项目说明文档 | |
| ├── app.py # Streamlit 前端主入口 | |
| ├── docs/ | |
| │ ├── prd.md # 产品需求文档 | |
| │ └── spec.md # 技术规格说明 | |
| ├── services/ | |
| │ ├── analyse_service.py # JD/用户信息分析与总结 | |
| │ ├── generation_service.py # 简历与求职信生成 | |
| │ ├── pdf_service.py # PDF 导出功能 | |
| │ └── llm_service.py # LLM/LiteLLM 统一封装与调用 | |
| ├── llm/ | |
| │ ├── litellm_client.py # LiteLLM API 封装 | |
| │ └── prompt_templates.py # LLM Prompt 模板管理 | |
| ├── exports/ # 导出 PDF 文件目录 | |
| └── tests/ # 单元测试 | |
| ``` | |
| ### 4.2 主要技术实现 | |
| - **前端**:Streamlit 单页应用,左侧输入与控制,右侧结果与预览。 | |
| - **后端服务**: | |
| - `analyse_service.py`:负责 JD/用户信息分析与总结。 | |
| - `generation_service.py`:负责简历与求职信生成。 | |
| - `pdf_service.py`:负责 PDF 导出。 | |
| - `llm_service.py`:统一封装 LLM 调用,底层通过 `llm/litellm_client.py` 对接 LiteLLM。 | |
| - `llm/prompt_templates.py`:管理各类 Prompt 模板。 | |
| - **依赖管理**:推荐使用 uv 管理 Python 依赖。 | |
| - **LLM 接入**:LiteLLM 支持多云模型,密钥通过 .env 配置。 | |
| - **扩展性**:各服务模块解耦,便于未来扩展多语言、社交信息抓取等。 | |
| --- | |
| ## 5. Example Workflow | |
| * 输入 JD: "Looking for a React developer with AI integration experience..." | |
| * 输入 Resume/Project info | |
| * 点击 **Analyse** → 输出关键技能、匹配点、差距,并生成 Resume(MD) + Cover Letter(TXT) 预览 | |
| * 用户输入反馈 "强调 CI/CD 和 DevOps" | |
| * 点击 **Refine** → 更新总结并重新生成两份文档(即时预览) | |
| * **导出 PDF** | |
| --- | |
| ## 6. Future Extensions | |
| * 多语言支持 (EN/DE) | |
| * 自动建议改进点 | |
| * GitHub/LinkedIn 自动抓取信息 | |
| * ATS 优化模式 | |
| --- | |