Snapshot: full project state
This commit is contained in:
36
README.md
Normal file
36
README.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user