Skip to content

hrtechifyed/smartcompanalyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🌍 Global Compensation Benchmark Tool

A self-contained, single-file web tool to benchmark total compensation across countries — including fixed salary, variable pay, and equity — against market medians adjusted for role, seniority, tenure, and job family.

No build step. No dependencies. No backend required. Drop index.html anywhere and it works.


✨ Features

  • Home market benchmarking — compares your Fixed, Variable, and Equity against estimated market benchmarks for your country, role, and experience level
  • Component breakdown — shows whether each comp element (fixed / variable / equity) is below, within, or above market, with the full calculation explained
  • Multi-country mobility advisor — for each target country, analyses that country's own salary benchmarks and cost-of-living (via PPP when available) to recommend whether a move makes financial sense
  • No direct currency translation — target country analysis uses local market medians, not a conversion of your home salary
  • Explainable scoring — every recommendation shows the arithmetic: factors applied, ratios computed, points awarded
  • Auto currency mapping — detects currency from country selection (180+ countries)
  • Alias resolution — accepts UAE, USA, UK, South Korea, etc.
  • Demo fallback — works fully offline with realistic demo data if no backend is connected
  • PPP / COL integration — optionally connects to a /api/ppp endpoint for purchasing-power-parity-based affordability signals
  • Fully responsive — works on desktop and mobile

🚀 Quick Start

Option 1 — Open locally (zero setup)

# Just open index.html in your browser
open index.html          # macOS
start index.html         # Windows
xdg-open index.html      # Linux

Option 2 — GitHub Pages (recommended)

  1. Fork or push this repo to GitHub
  2. Go to Settings → Pages
  3. Set source to main branch, root /
  4. Your tool will be live at https://<username>.github.io/<repo-name>/

Option 3 — Any static host

Upload index.html to Netlify, Vercel, Cloudflare Pages, or any web server. No configuration needed.


🔌 Backend Integration (Optional)

The tool works in demo mode without a backend. To connect real benchmark data, implement two endpoints:

POST /api/benchmark

Request body:

{
  "home": {
    "country": "India",
    "city": "Bengaluru",
    "currency": "INR"
  },
  "role": {
    "jobFamily": "Engineering",
    "jobTitle": "Senior Engineer",
    "industry": "Technology",
    "yearsExperience": 10
  },
  "comp": {
    "fixed": 4000000,
    "variable": 800000,
    "equity": 500000,
    "total": 5300000
  },
  "targets": ["United States", "Singapore", "United Arab Emirates"]
}

Expected response:

{
  "homeMarket": {
    "medianTotal": 4800000,
    "medianFixed": 2976000,
    "medianVariable": 1104000,
    "medianEquity": 720000,
    "currency": "INR",
    "adjustedForExperience": true,
    "sources": ["Mercer 2024", "Aon Radford"]
  },
  "targets": [
    {
      "country": "United States",
      "currency": "USD",
      "medianTotal": 160000,
      "medianFixed": 120000,
      "medianVariable": 28000,
      "medianEquity": 12000,
      "adjustedForExperience": true,
      "sources": ["Levels.fyi", "Radford"]
    }
  ],
  "notes": "Data as of Q1 2025"
}

Note: medianFixed, medianVariable, medianEquity are optional — the tool estimates them from market-norm splits (62% / 23% / 15%) if not provided.


GET /api/ppp?country=India (optional)

Used to compute purchasing-power-parity signals for the Mobility Advisor.

Expected response:

{
  "ok": true,
  "country": "India",
  "ppp": 24.5,
  "fx": 83.5,
  "pli": 0.29
}

Where ppp = LCU per international dollar (World Bank PPP conversion factor). If this endpoint is absent, the tool degrades gracefully with directional-only mobility recommendations.


📊 How Benchmarking Works

Market median adjustment

The raw market median is adjusted using three multiplicative factors:

Adjusted Median = Base Median × Experience Factor × Title/Seniority Factor × Job Family Factor
Factor Example values
Experience (0–35 yrs) 0.70 → 1.45 (curve flattens after ~15 yrs)
Title / Seniority Intern 0.55 · Junior 0.80 · Senior 1.15 · Director 1.55 · C-suite 2.10
Job Family Engineering 1.08 · R&D 1.06 · IT 1.05 · Marketing 0.98 · Support 0.92

Positioning thresholds

Your comp vs median Label
< 90% Below market
90% – 110% Within market
> 110% Above market

Mobility scoring (per target country)

The advisor scores a move out of ~100 points across three signals:

Signal Max points Source
Home market positioning ±18 Are you below/at/above home median?
Real pay uplift (PPP-normalized) ±28 Target median vs your current in Int$
Affordability / COL delta ±22 Annual salary ÷ estimated annual COL

Score → Recommendation:

  • ≥ 35 → ✅ Logical move
  • 10–34 → ⚠️ Potentially logical
  • < 10 → ❌ Not logical (pay/COL)

Target country medians are the target country's own benchmark, not a currency conversion of your current salary.


🗂 Project Structure

comp-benchmark/
├── index.html        # Complete self-contained tool (HTML + CSS + JS)
├── README.md         # This file
├── LICENSE           # MIT
└── .github/
    └── workflows/
        └── deploy.yml  # Auto-deploy to GitHub Pages on push to main

⚙️ GitHub Actions — Auto Deploy

The included workflow (.github/workflows/deploy.yml) automatically publishes the tool to GitHub Pages whenever you push to main. No manual steps needed after the first setup.

To activate:

  1. Push this repo to GitHub
  2. Go to Settings → Pages → Source → select GitHub Actions
  3. Every push to main will redeploy automatically

🛠 Customisation

Since everything is in one HTML file, customisation is straightforward:

What Where in index.html
Add countries COUNTRIES array (line ~666)
Add currency mappings CURRENCY_BY_COUNTRY object (line ~759)
Adjust title/seniority multipliers titleLevelFactor() function
Adjust job family multipliers FAMILY_FACTOR object
Add industries to dropdown <select id="industry"> in HTML
Change positioning thresholds (90/110%) positionTag() function
Change mobility score thresholds mobilityDecision() function
Change demo market base medians BASE_MEDIAN_BY_COUNTRY object

📋 Required Inputs

Field Required Notes
Home Country Supports aliases (UAE, USA, UK…)
Job Family 11 families available
Job Title Free text — drives seniority detection
Industry 10 industries available
Fixed Salary Annual, in home currency
Variable Salary Annual bonus/incentive
Equity (Annualized) Enter 0 if no equity
Tenure (Years) Used in experience curve
Target Countries Optional Add for mobility analysis
Home City Optional Passed to backend if connected

📄 License

MIT — free to use, modify, and deploy commercially.

About

smart compensation analysis and guidance

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages