核心亮点:AI 解析求职邮箱。
绑定你的邮箱(IMAP)并配置 AI 模型后,OfferFlow 会自动读取笔试 / 面试 / Offer 等邮件,抽取公司、岗位、时间与状态,并回填到投递表——不用再手动抄邮件内容。
在此之外,它还是一套本地优先的实习 / 校招投递管理工具:表格跟踪进度、面试倒计时与日历视图,数据存在本机 SQLite,无需注册登录。
- AI 邮箱解析:IMAP 拉取求职邮件 → AI 提取关键信息 → 自动创建 / 更新投递记录
- 实习 / 校招投递:状态流转、优先级、面试轮次、倒计时、拖拽排序与批量操作
- 工作台:投递总量、待处理事项与 Offer 概览
- 日历视图:集中查看笔试 / 面试安排
- 本地存储:默认 SQLite,数据完全在你自己的机器上
- 一键启动:支持本地 Python 与 Docker Compose
| Layer | Stack |
|---|---|
| Backend | FastAPI · SQLAlchemy · SQLite |
| Frontend | Jinja2 · 原生 JS / CSS |
| Runtime | Python 3.10+ · Uvicorn |
- Python 3.10+
- 或 Docker / Docker Compose
git clone https://github.com/Xiangyahaian/offerflow.git
cd offerflow
python -m venv .venv
# Windows
.\.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate
pip install -r requirements.txt
cp env.example .env # Windows: copy env.example .env
# optional: load sample applications
python scripts/seed_demo.py
python run.pydocker compose up -d --buildApp: http://localhost:8001
Database file: ./data/offerflow.db
Copy env.example to .env and adjust as needed:
| Variable | Default | Description |
|---|---|---|
PORT |
8001 |
Server port |
DATABASE_URL |
sqlite:///./offerflow.db |
SQLite path |
ENV |
development |
Use production to disable reload and /docs |
SECRET_KEY |
(example) | Used to encrypt IMAP / AI API keys |
启用 AI 邮箱解析(核心功能): 在侧边栏打开邮箱 / AI 助手页面,填写 IMAP 账号与 AI 模型 API Key;之后即可自动拉取并解析求职邮件。SECRET_KEY 用于加密这些凭据。
offerflow/
├── run.py # entrypoint
├── requirements.txt
├── env.example
├── Dockerfile
├── docker-compose.yml
├── backend/ # FastAPI app, models, routers
├── frontend/ # templates + static assets
├── scripts/seed_demo.py # sample data
└── docs/screenshots/ # README screenshots
With ENV=development, interactive docs are available at /docs.
| Endpoint | Description |
|---|---|
/api/campus |
Campus applications |
/api/internships |
Internship applications |
/api/dashboard/stats |
Dashboard stats |
/api/mail |
Mailbox / IMAP |
/api/ai-assistant |
Mail AI parsing |
Contributions are welcome. See CONTRIBUTING.md for guidelines.
- Fork the repository
- Create your branch (
git checkout -b feature/awesome) - Commit your changes
- Open a Pull Request
Released under the MIT License.
