13-task implementation covering: - UserProfile wizard fields (wizard_complete, wizard_step, tier, dev_tier_override, dismissed_banners, effective_tier) + params column in background_tasks - Tier system: FEATURES gate, can_use(), tier_label() (app/wizard/tiers.py) - Six pure validate() step modules (hardware, tier, identity, resume, inference, search) - Resume parser: PDF (pdfplumber) + DOCX (python-docx) extraction + LLM structuring - Integration base class + auto-discovery registry (scripts/integrations/) - 13 integration drivers (Notion, Google Sheets, Airtable, Google Drive, Dropbox, OneDrive, MEGA, Nextcloud, Google Calendar, Apple Calendar, Slack, Discord, Home Assistant) + config/integrations/*.yaml.example files - wizard_generate task type with 8 LLM generation sections + iterative refinement (previous_result + feedback support) - step_integrations module: validate(), get_available(), is_connected() - Wizard orchestrator rewrite (0_Setup.py): 7 steps, crash recovery, LLM polling - app.py gate: checks wizard_complete flag in addition to file existence - Home page: 13 dismissible contextual setup banners (wizard_complete-gated) - Settings: Developer tab — tier override selectbox + wizard reset button 219 tests passing. |
||
|---|---|---|
| app | ||
| config | ||
| data/survey_screenshots | ||
| docker | ||
| docs | ||
| scripts | ||
| tests | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| compose.yml | ||
| Dockerfile | ||
| environment.yml | ||
| Makefile | ||
| pytest.ini | ||
| README.md | ||
| requirements.txt | ||
| setup.sh | ||
Peregrine
AI-powered job search pipeline — by Circuit Forge LLC
Automates the full job search lifecycle: discovery → matching → cover letters → applications → interview prep. Privacy-first, local-first. Your data never leaves your machine.
Quick Start
1. Install dependencies (Docker, Docker Compose, NVIDIA toolkit if needed):
git clone https://git.circuitforge.io/circuitforge/peregrine
cd peregrine
bash setup.sh
2. Start Peregrine:
make start # remote profile (no GPU)
make start PROFILE=single-gpu # with GPU
3. Open http://localhost:8501 — the setup wizard guides you through the rest.
macOS: Docker Desktop must be running before
make start. Windows: Not supported — use WSL2 with Ubuntu.
Inference Profiles
| Profile | Services | Use case |
|---|---|---|
remote |
app + searxng | No GPU; LLM calls go to Anthropic/OpenAI |
cpu |
app + ollama + searxng | No GPU; local models on CPU (slow) |
single-gpu |
app + ollama + vision + searxng | One GPU for cover letters + research + vision |
dual-gpu |
app + ollama + vllm + vision + searxng | GPU 0 = Ollama, GPU 1 = vLLM |
Set the profile in .env:
# .env
DOCKER_COMPOSE_PROFILES=single-gpu
Or select it during the setup wizard.
First-Run Wizard
On first launch, the app shows a 5-step setup wizard:
- Hardware Detection — auto-detects NVIDIA GPUs and suggests a profile
- Your Identity — name, email, career summary (used in cover letters and prompts)
- Sensitive Employers — companies masked as "previous employer (NDA)" in research briefs
- Inference & API Keys — Anthropic/OpenAI keys (remote), or Ollama model (local)
- Notion Sync — optional; syncs jobs to a Notion database
Wizard writes config/user.yaml. Re-run by deleting that file.
Email Sync (Optional)
Peregrine can monitor your inbox for job-related emails (interview requests, rejections, survey links) and automatically update job stages.
Configure via Settings → Email after setup. Requires:
- IMAP access to your email account
- For Gmail: enable IMAP + create an App Password
License
Core discovery pipeline: MIT AI features (cover letter generation, company research, interview prep): BSL 1.1
© 2026 Circuit Forge LLC