37 lines
1.9 KiB
Markdown
37 lines
1.9 KiB
Markdown
# Procyon — Job Hunt Workflow Engine
|
||
|
||
Multi-step job-hunt pipeline with a web GUI, running on a Proxmox LXC (never on the MacBook).
|
||
|
||
## Pipeline
|
||
1. **Discover** — pull jobs from RemoteOK + Indeed RSS (+ optional extra feeds), store in SQLite.
|
||
2. **Score** — fit score (0–1) + a one-line "why" opinion, LLM-first, keyword fallback.
|
||
3. **Tailor** — clone the master resume and reorder/re-emphasize for the role (honest-only:
|
||
no fabricated employers/dates/skills). Draft a tailored cover email.
|
||
4. **Self-Audit** — automatic checklist (employer name, no placeholders, contact info, subject,
|
||
resume targets the job). Every item must PASS.
|
||
5. **Approve (human gate)** — you review and click Approve. Nothing sends without this.
|
||
6. **Send** — SMTP email with tailored resume attached. Send is BLOCKED unless approved AND
|
||
the audit passed AND SMTP is configured.
|
||
7. **Track** — log outcomes (response/interview/offer) and surface response-rate insights.
|
||
|
||
## Design rules
|
||
- Inference runs on the LAN Ollama host (`llm_base_url`), NEVER on this CT (drjones rule).
|
||
- Graceful degradation: if the model is saturated, scoring/tailoring falls back to
|
||
deterministic keyword matching — the pipeline never blocks on inference.
|
||
- Honest resumes only. The LLM system prompt forbids fabricating credentials.
|
||
- Optional outbound proxy (his own Nord proxy CT) for discovery fetches — not an evasion rig.
|
||
|
||
## Setup
|
||
- `systemctl restart procyon` after deploy.
|
||
- Configure SMTP (iCloud app-specific password) in Settings before sending.
|
||
|
||
## Files
|
||
- `app.py` — Flask routes + pipeline orchestration
|
||
- `db.py` — SQLite schema + helpers
|
||
- `scraper.py` — discovery (RSS/JSON + proxy)
|
||
- `llm.py` — Ollama client + keyword fallback
|
||
- `tailor.py` — scoring + resume tailoring + email drafting
|
||
- `audit.py` — pre-send self-audit
|
||
- `emailer.py` — SMTP send
|
||
- `improve.py` — outcome tracking + insights
|