JobFoundryAGPL-3.0
GitHub
Docs/Installation & Setup

LLM API Keys

JobFoundry's core value is fit scoring and resume tailoring. Both require an LLM. Once your server is running, add your API key in the dashboard under Settings → LLM Provider (or in the .env file for manual installs) and you're done.

✓Free tiers available — no credit card required

Free tier options are available from several providers without requiring a credit card. Because terms and quotas can change over time, check each provider's current terms. JobFoundry works with any OpenAI-compatible endpoint — just set the base URL and key in Settings.

Recommended Free Providers

Curated picks from mnfst/awesome-free-llm-apis (CC0 1.0 — public domain). Each is OpenAI SDK-compatible unless noted. Check each provider's Terms of Service — some free tiers restrict commercial use.

ProviderFree TierCard RequiredBase URL for JobFoundryGet Key
Google Gemini1,500 req/day (Gemini Flash)Nohttps://generativelanguage.googleapis.com/v1beta/openaiaistudio.google.com →
Mistral AIFree mode (may train on prompts — opt out available)Nohttps://api.mistral.ai/v1console.mistral.ai →
Cohere1,000 calls/month (non-commercial)Nohttps://api.cohere.com/compatibility/v1dashboard.cohere.com →
Cloudflare Workers AI10,000 neurons/day (60+ models)Nohttps://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1dash.cloudflare.com →
OpenRouter RecommendedFree models available (Llama, Gemma, Mistral, and more)Nohttps://openrouter.ai/api/v1openrouter.ai →

Free tier data sourced from mnfst/awesome-free-llm-apis (CC0 1.0 Universal — public domain). See the full list for all providers and detailed rate limits. OpenRouter not in the source list but included as the recommended multi-provider gateway.

Why OpenRouter?

OpenRouter routes requests to dozens of models (Llama 4, Gemma, Mistral, Command R, and more) through a single API key and base URL. Free models are clearly labelled. It's the easiest way to try multiple models without managing separate keys. JobFoundry's scorer and tailor both work out of the box with it.

How to configure in JobFoundry

Container / Desktop installs (Settings UI)

Open the dashboard at http://localhost:8080, go to Settings → LLM Provider, and enter:

  • Base URL — the provider's OpenAI-compatible endpoint (see table above)
  • API Key — the key you obtained from the provider's dashboard
  • Model — e.g. mistral-small-latest, gemini-2.0-flash, or any model ID the provider supports

Provider-specific examples: Cohere uses command-a-03-2025, Gemini uses gemini-2.0-flash, and Cloudflare Workers AI uses @cf/meta/llama-3.1-8b-instruct. Cloudflare also requires an account ID in the base URL and an API token with Workers AI permissions.

Manual / developer installs (.env file)

Edit your .env file in the repository root:

# For OpenRouter (recommended default in .env.example):
OPENROUTER_API_BASE=https://openrouter.ai/api/v1
OPENROUTER_API_KEY=sk-or-...

# Or for direct OpenAI-compatible providers (e.g. Mistral):
# Note: Comment out or clear OPENROUTER_API_* keys so direct provider variables take effect!
OPENROUTER_API_BASE=
OPENROUTER_API_KEY=
SCORER_API_BASE=https://api.mistral.ai/v1
SCORER_API_KEY=your-mistral-api-key
SCORER_MODEL=mistral-small-latest
OPENAI_BASE_URL=https://api.mistral.ai/v1
OPENAI_API_KEY=your-mistral-api-key
TAILOR_MODEL=mistral-small-latest

Recreate the services after editing: docker compose up -d --force-recreate (or podman compose up -d --force-recreate).

◈Local models via Ollama

If you prefer fully local inference (no API key, no data leaving your machine), JobFoundry also works with Ollama.

  • Endpoint URL: For desktop or bare-metal installs, use http://localhost:11434/v1. For container installs (Docker), use http://host.docker.internal:11434/v1 (or http://host.containers.internal:11434/v1 with Podman) so the container can reach the host.
  • SSRF Guard in Containers: Because JobFoundry blocks requests to private and internal IPs by default, container setups routing to the host must exempt the origin via ALLOWED_LLM_BASES in .env: ALLOWED_LLM_BASES=http://host.docker.internal:11434 (or http://host.containers.internal:11434 for Podman).
  • In Settings UI: Set Base URL to your Ollama endpoint, API Key to ollama (any non-empty value), and Model to your local model name (e.g. llama3.3 or mistral).
  • In .env: Clear OPENROUTER_API_BASE and OPENROUTER_API_KEY, set both SCORER_API_BASE and OPENAI_BASE_URL to the Ollama endpoint, and configure SCORER_MODEL and TAILOR_MODEL.