Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/SudharakaA/ai-job-search/llms.txt

Use this file to discover all available pages before exploring further.

Salary benchmarking is an optional step in the /apply workflow. When salary_data.json is present in the repository root, the workflow looks up the target company’s compensation data and includes it in the fit evaluation. When the file is absent, the salary step is simply skipped with no effect on the rest of the application. You supply the data from whatever source you have: union statistics, Glassdoor exports, salary surveys, networking contacts, or personal research. The tool is source-agnostic.
Salary benchmarking is entirely optional. If you do not have salary data or choose not to set it up, /apply continues to work normally.

Setup options

Create salary_data.json in the repository root with your data in the expected format:
{
  "metadata": {
    "source": "My Union Statistics 2025",
    "index_baseline": 100,
    "index_label": "Index",
    "baseline_description": "Index 100 = median salary for private sector"
  },
  "companies": [
    {
      "company": "Novo Nordisk A/S",
      "city": "Bagsværd",
      "categories": {
        "all_employees": { "count": 500, "index": 108.5 },
        "engineering": { "count": 120, "index": 112.3 }
      }
    },
    {
      "company": "Ørsted A/S",
      "city": "Fredericia",
      "categories": {
        "all_employees": { "count": 200, "index": 105.2 }
      }
    }
  ]
}
The format supports both index-based data (where a baseline of 100 represents the market median, for example) and absolute values (monthly salary figures, annual totals, or any custom metric). Set index_label and baseline_description to describe your data accurately.
FieldPurpose
metadata.sourceWhere the data comes from, for your own reference
metadata.index_baselineThe baseline value (e.g. 100 for index-based data)
metadata.index_labelLabel for the index column in the tool’s output
metadata.baseline_descriptionHuman-readable explanation of the baseline
companies[].companyCompany name, required
companies[].cityCity or location, optional, used for filtering
companies[].categoriesNamed salary categories, each with count and/or index
You can also build the file incrementally as you research companies. Start with a minimal template and add entries over time:
{
  "metadata": {
    "source": "Personal research",
    "index_baseline": 0,
    "index_label": "Monthly salary (DKK)",
    "baseline_description": "Approximate monthly salary before tax"
  },
  "companies": [
    {
      "company": "Example Corp",
      "city": "Copenhagen",
      "categories": {
        "entry_level": { "index": 42000 },
        "senior": { "index": 55000 }
      }
    }
  ]
}

CLI usage

The salary_lookup.py script lets you query your salary data directly from the command line, independently of /apply.
# Look up a company by name
python salary_lookup.py "Novo Nordisk"

# Filter by city when a company has multiple locations
python salary_lookup.py "Ørsted" --city "Fredericia"

# Output as JSON for scripting
python salary_lookup.py "COWI" --json

# List all companies in the dataset
python salary_lookup.py --list-all

Fuzzy matching

The lookup tool uses fuzzy matching to handle real-world company name variations. You do not need to type the exact name as it appears in your data file. The matcher handles:
  • Legal suffixes: A/S, ApS, I/S, P/S, K/S, IVS, AMBA, A.M.B.A. are stripped before comparing, so searching for "Novo Nordisk" matches "Novo Nordisk A/S"
  • Danish and Nordic characters: ø matches o, æ matches ae, å matches aa, and their equivalents for ö, ä, ü, so "Ørsted" matches "Orsted" and vice versa
  • Parentheticals and sub-entities: text in parentheses and everything after a comma is stripped, so "Novo Nordisk (DK)" and "Novo Nordisk, Manufacturing" both match "Novo Nordisk"
  • Group and holding suffixes: denmark, nordic, group, holding, and scandinavia noise words are stripped
  • Partial word matches: searching for a single distinctive word in a multi-word company name returns a match if the overlap is unambiguous
Results are scored and sorted by match quality. If multiple companies match your query, all are returned in order of confidence. If nothing matches at a threshold of 30, the tool suggests trying a shorter name and reminds you that legal suffixes may be present in the dataset.
If a company is not found, try the shortest distinctive part of its name. "Novo" will find "Novo Nordisk A/S" where a longer query with a typo might not.

Data privacy

salary_data.json is excluded from git via .gitignore. Salary data from unions or commercial surveys is often proprietary or confidential, and the gitignore exclusion prevents accidental commits. If you are using only publicly available data and want to track the file in your fork, you can remove the exclusion from .gitignore.

Build docs developers (and LLMs) love