peregrine/environment.yml
pyr0ball db127848a1 fix: resume CID glyphs, resume YAML path, PyJWT dep, candidate voice & mission UI
- resume_parser: add _clean_cid() to strip (cid:NNN) glyph refs from ATS PDFs;
  CIDs 127/149/183 become bullets, unknowns are stripped; applied to PDF/DOCX/ODT
- resume YAML: canonicalize plain_text_resume.yaml path to config/ across all
  references (Settings, Apply, Setup, company_research, migrate); was pointing at
  unmounted aihawk/data_folder/ in Docker
- requirements/environment: add PyJWT>=2.8 (was missing; broke Settings page)
- user_profile: add candidate_voice field
- generate_cover_letter: inject candidate_voice into SYSTEM_CONTEXT; add
  social_impact mission signal category (nonprofit, community, equity, etc.)
- Settings: add Voice & Personality textarea to Identity expander; add
  Mission & Values expander with editable fields for all 4 mission categories
- .gitignore: exclude CLAUDE.md, config/plain_text_resume.yaml,
  config/user.yaml.working
- search_profiles: add default profile
2026-02-26 12:32:28 -08:00

74 lines
3.3 KiB
YAML

name: job-seeker
# Recreate: conda env create -f environment.yml
# Update pinned snapshot: conda env export --no-builds > environment.yml
channels:
- conda-forge
- defaults
dependencies:
- python=3.12
- pip
- pip:
# ── Web UI ────────────────────────────────────────────────────────────────
- streamlit>=1.35
- watchdog # live reload
- reportlab>=4.0 # PDF cover letter export
- pandas>=2.0
- pyarrow # streamlit data tables
- streamlit-paste-button>=0.1.0
# ── Job scraping ──────────────────────────────────────────────────────────
- python-jobspy>=1.1
- playwright # browser automation (run: playwright install chromium)
- selenium
- undetected-chromedriver
- webdriver-manager
- beautifulsoup4
- requests
- curl_cffi # Chrome TLS fingerprint — bypasses Cloudflare on The Ladders
- fake-useragent # company scraper rotation
# ── LLM / AI backends ─────────────────────────────────────────────────────
- openai>=1.55.0,<2.0.0 # >=1.55 required for httpx 0.28 compat; <2.0 for langchain-openai
- anthropic>=0.80 # direct Anthropic API fallback
- ollama # Python client for Ollama management
- langchain>=0.2
- langchain-openai
- langchain-anthropic
- langchain-ollama
- langchain-community
- langchain-google-genai
- google-generativeai
- tiktoken
# ── Resume matching ───────────────────────────────────────────────────────
- scikit-learn>=1.3
- rapidfuzz
- lib-resume-builder-aihawk
# ── Notion integration ────────────────────────────────────────────────────
- notion-client>=3.0
# ── Document handling ─────────────────────────────────────────────────────
- pypdf
- pdfminer-six
- pyyaml>=6.0
- python-dotenv
# ── Auth / licensing ──────────────────────────────────────────────────────
- PyJWT>=2.8
# ── Utilities ─────────────────────────────────────────────────────────────
- sqlalchemy
- tqdm
- loguru
- rich
- tenacity
- httpx
# ── Testing ───────────────────────────────────────────────────────────────
- pytest>=9.0
- pytest-cov
- pytest-mock
# Documentation
- mkdocs>=1.5
- mkdocs-material>=9.5