# 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