Beta Tester Quick Start¶
Get GoGetEm running locally in ~5 minutes, or deploy to a Raspberry Pi for always-on scraping.
What you get¶
![]() |
![]() |
| Job feed — search, filter, save jobs, auto-scored by match profile | Match profile — configure skills, preferences, deal-breakers |
![]() |
![]() |
| Scrape profiles — manage searches, scheduler, run history | First-time setup — create your account |
Prerequisites¶
| Tool | Version | Install |
|---|---|---|
| Go | 1.25+ | go.dev/dl — grab the latest gotip or RC build |
| Python | 3.10+ | Usually pre-installed on macOS/Linux |
| SQLite | 3.x | Usually pre-installed on macOS/Linux |
| Make | any | Xcode CLI tools (macOS) or sudo apt install build-essential (Debian/Ubuntu) |
Note: Go 1.25 is the latest release. If your distro's package manager only has 1.22/1.23, install from go.dev/dl directly.
Option A: Run locally (Mac or Linux)¶
Best for trying things out or developing. No systemd, no Pi required.
# 1. Clone and enter the repo
git clone https://github.com/rcopra/GoGetEm.git
cd GoGetEm
# 2. Set up Python scraper
python3 -m venv .venv-jobspy
source .venv-jobspy/bin/activate
pip install -r requirements.txt
pip install -e .
deactivate
# 3. Create config (defaults work as-is)
cp .env.example .env
mkdir -p db
# 4. Build and run
make build-all
bin/gogetem-web
Open http://localhost:8080:
1. Create your account at /setup — the setup wizard walks you through profile, scrapes, and first run
2. Or skip the wizard and configure manually: Settings for match profile, Scrapes for scrape profiles
Stop the server with Ctrl-C. Your data persists in db/jobs.sqlite3.
Updating¶
Option B: Deploy to a Raspberry Pi¶
For always-on scraping with automatic scheduling. Tested on Pi 5 (also works on Pi 4 with 2GB+ RAM).
1. Install dependencies on the Pi¶
SSH in and run:
# Debian/Ubuntu (Raspberry Pi OS)
sudo apt install golang python3 python3-venv sqlite3
# Verify Go version — needs 1.25+
go version
# If too old, install from https://go.dev/dl/ (pick linux/arm64)
2. Clone and build¶
sudo mkdir -p /opt/gogetem
sudo chown $USER:$USER /opt/gogetem
git clone https://github.com/rcopra/GoGetEm.git /opt/gogetem
cd /opt/gogetem
# Python scraper
python3 -m venv .venv-jobspy
source .venv-jobspy/bin/activate
pip install -r requirements.txt
pip install -e .
deactivate
# Config
cp .env.example .env
mkdir -p db
# Build
make build-all
3. Install systemd services¶
The unit files assume user gogetem and path /opt/gogetem — adjust for your setup:
cd /opt/gogetem
# Replace username (e.g., "pi")
sed -i 's/User=gogetem/User='"$USER"'/' deploy/systemd/*.service
# If not using /opt/gogetem:
# sed -i 's|/opt/gogetem|/your/path|g' deploy/systemd/*.service
# Install and start
sudo cp deploy/systemd/gogetem-web.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now gogetem-web
4. Verify¶
Visit http://<pi-ip>:8080 and follow the same setup steps as Option A.
Updating on the Pi¶
Automated deploys with GitHub Actions (optional)¶
If you fork the repo and want nightly deploys from dev to your Pi:
The nightly workflow (nightly.yml) runs at 4 AM UTC. It checks if dev has changed since the last run (using a nightly git tag as a marker) and skips entirely if nothing changed. When there are changes, it builds a Docker nightly image and deploys to the Pi. You can also trigger it manually from the Actions tab.
For emergency deploys outside the nightly schedule, use deploy.yml (manual dispatch only).
What you need¶
- Tailscale on the Pi (joined to your tailnet)
- A Tailscale OAuth client (Settings > OAuth clients > Generate) with
tag:ci
GitHub secrets¶
In your fork: Settings > Secrets and variables > Actions:
| Secret | Value |
|---|---|
PI_SSH_KEY |
SSH private key for the Pi (see below) |
PI_HOST |
Pi's Tailscale hostname or IP |
PI_USER |
Linux username on the Pi |
TS_OAUTH_CLIENT_ID |
Tailscale OAuth client ID |
TS_OAUTH_SECRET |
Tailscale OAuth client secret |
Generate a deploy key¶
# On the Pi
ssh-keygen -t ed25519 -f ~/.ssh/deploy_key -N ""
cat ~/.ssh/deploy_key.pub >> ~/.ssh/authorized_keys
# Copy ~/.ssh/deploy_key contents into the PI_SSH_KEY secret
The nightly workflow will cross-compile, SSH to the Pi, deploy, and restart services. Without the secrets above, Pi deploy steps are skipped (the Docker nightly image still publishes).
No Tailscale? Deploy manually¶
# From your local machine
make build-pi build-mcp-pi
scp bin/*-linux-arm64 <user>@<pi-host>:/opt/gogetem/bin/
ssh <user>@<pi-host> "sudo systemctl restart gogetem-web"
# Or pull the nightly Docker image
docker pull ghcr.io/rcopra/gogetem:nightly
Remote MCP access (optional)¶
Let Claude Code on your laptop talk to GoGetEm on the Pi:
# On the Pi — generate a token and add to .env
openssl rand -hex 32
# Add to /opt/gogetem/.env: MCP_TOKEN=<token>
sudo systemctl restart gogetem-web
On your laptop, add to ~/.zshrc (or ~/.bashrc):
The project's .mcp.json picks these up automatically.
Troubleshooting¶
# Check the web server
systemctl status gogetem-web
journalctl -u gogetem-web --no-pager -n 30
# Check scraper logs (scraping is managed by the web server's built-in scheduler)
journalctl -u gogetem-web --no-pager -n 30 | grep -i scrap
# Health check
curl -sf http://127.0.0.1:8080/healthz
# Test MCP endpoint (should return 401 without token)
curl -s -o /dev/null -w "%{http_code}" -X POST http://127.0.0.1:8080/api/mcp
Common issues¶
| Problem | Fix |
|---|---|
go: go.mod requires go >= 1.25 |
Install Go 1.25+ from go.dev/dl |
make scrape fails with import errors |
Activate the venv first: source .venv-jobspy/bin/activate |
| Port 8080 in use | Set LISTEN_ADDR=127.0.0.1:9090 in .env |
| Scraper OOM on Pi | Increase MemoryMax in gogetem-scrape.service (default 384 MB) |
Memory limits (Pi only)¶
Defaults in systemd units are tuned for Raspberry Pi 5: - Web server: 128 MB - Scraper: 384 MB
Increase MemoryMax in the service files if you're on a more capable machine.
Further reading¶
- Scoring Guide — how auto-scoring works, signal breakdown, tuning tips
- Scrape Profiles — full field reference, supported sites, tips for effective profiles
- CV & Cover Letters — CV editor, PDF generation, custom templates
- MCP Instructions — MCP server setup for Claude Code, Desktop, and other clients
- Docker Quickstart — alternative Docker-based deployment



