Skip to content

Configuration

ThePlator edited this page Oct 8, 2026 · 1 revision

Configuration

JobRadar reads three files. All of them are checked at start-up; a typo, an unknown setting or an out-of-range value stops it with a message naming the exact setting.

File Holds In git?
.env secrets only never (git-ignored)
config/config.yaml what to watch and how to behave no (git-ignored); start from config.example.yaml
config/profile.yaml your education, skills, projects (for match scores and resumes, from v0.2 B / v0.3) no; start from profile.example.yaml

.env

TG_API_ID=123456
TG_API_HASH=xxxxxxxx
NOTION_TOKEN=ntn_xxx
NOTION_DATABASE_ID=xxxxxxxx
GEMINI_API_KEY=xxxxxxxx
GROQ_API_KEY=                # only if you switch models to Groq
EMAIL_ADDRESS=               # email alerts and forwards (v0.4)
EMAIL_APP_PASSWORD=
NOTIFY_TO=
GDRIVE_FOLDER_ID=            # resumes (v0.3)
# NOTION_DATA_SOURCE_ID=     # only if your database has several data sources

An empty value (KEY=) counts as not set. No spaces, no quotes. A Gmail app password is shown with spaces: remove them.

config/config.yaml

sources.telegram

sources:
  telegram:
    enabled: true
    chats: [-1001234567890, "@somepublicchannel"]   # ids from `jobradar chats`, or @usernames
    backfill_days: 3       # how far back the very first run reads (0-30)

llm

llm:
  extract_model: "gemini/gemini-flash-lite-latest"   # reads job pages; about ₹0.10 per job
  writer_model: "gemini/gemini-pro-latest"           # resumes and answers (later)
  daily_budget_inr: 15       # estimated at list prices; LLM work pauses until midnight when reached
  requests_per_minute: 10    # stay under your key's limit (free Gemini tier: about 10-15)
  usd_to_inr: 88             # for the budget estimate

Any LiteLLM model name works, e.g. groq/llama-3.1-8b-instant with GROQ_API_KEY set. Without a key for the configured provider, jobs are still listed in Notion but not read.

links

links:
  extra_shorteners: ["go.somejobs.in"]     # a channel's own redirect domain: expanded before use
  deny:
    - acciojob.com/full-stack-development-courses   # host/path prefix: never a job
    - ads.example.com                               # whole host, including subdomains

JobRadar already ignores t.me, YouTube, Instagram, WhatsApp, X/Twitter, Facebook, topmate, app stores, Discord, and LinkedIn profile and company pages. It also hides channel ads automatically: any link attached to posts about three or more different jobs. Use deny for the few it can't spot, such as an app link that only ever appears next to the same posts. After changing deny, restart jobradar run; the start-up sweep hides matching rows that are already in Notion.

filters and scoring (used from v0.2 part B)

filters:
  batch_years: [2025, 2026]
  degrees: ["B.Tech", "BE", "MCA"]
  locations: ["Bengaluru", "Hyderabad", "Pune", "Remote"]
  max_experience_years: 1
  exclude_companies: []

scoring:
  hide_below: 40        # below → Hidden
  alert_above: 85       # at or above → email alert (v0.4)
  auto_resume_above: 85 # at or above → resume built automatically (v0.3); null = only when Shortlisted

notify

notify:
  timezone: Asia/Kolkata         # also decides when the daily LLM budget resets
  digest_times: ["09:00", "19:00"]
  alerts: true
  alert_batch_minutes: 10

The resume, storage and email sections are read but only used by later releases.

Clone this wiki locally