Inspiration

As a woman in STEM studying Computer Science and Bioengineering, I've witnessed firsthand how pay inequity compounds across careers.

During internship recruiting season, I watched a close friend accept her first software engineering internship offer at $6,500/month, thrilled to break into tech. Weeks later, she discovered her male classmate—same major, similar GPA, identical company—had negotiated to $8,000/month. The $1,500 monthly gap ($18,000 annualized) wasn't just unfair; over a 3-month summer, she lost $4,500 before her career even began. That's rent, groceries, and student loan payments—gone.

But the impact extends far beyond individual careers. For single mothers in STEM who are primary breadwinners, pay inequity isn't just a personal setback—it's a systemic barrier affecting children's educational opportunities, housing stability, and generational wealth. When a single mother engineer loses $35,000 annually to the gender pay gap, that's money for college savings, childcare, or emergency funds.

The pay gap doesn't just hurt women; it perpetuates economic inequality across generations.

The problem isn't awareness—it's actionability. Women discover inequity too late, without data or leverage to negotiate. Parity was born from one question: What if we could reveal pay inequity at the moment of decision, with specific numbers and negotiation strategies, before the contract is signed?


What it does

Parity is a dual-platform solution—a web application and Chrome extension—that brings real-time salary equity analysis directly into your job search.

Core Analysis

Every analysis provides three comprehensive metric categories:

📊 The Gap

  • Annual loss in dollars and percentage
  • Cents per dollar women earn (e.g., $0.82 per $1.00 men earn)
  • Monthly loss impact
  • Per-paycheck loss (biweekly)

⏰ Career Impact

  • Lifetime earnings loss over 30 years (with compound growth)
  • Retirement savings lost (401k with employer match, 6% contribution)
  • Extra years of work needed to earn equivalent total compensation

💡 Negotiation Strategy

  • Specific target salary to request
  • Percentage increase needed to achieve equity
  • Data-backed talking points for salary discussions

Web Platform

The full-featured dashboard where you can:

  • Input job details: Title, years of experience, location, age group, education level
  • View detailed analysis: All gap metrics with interactive data visualizations
  • Compare to benchmarks: See how your gap compares to national averages for females vs. males in STEM
  • Explore STEM roles: Search through 25+ engineering and science positions

Chrome Extension

Brings the same comprehensive analysis directly into your browsing:

  • Auto-detection: Parses LinkedIn job postings automatically—no manual input needed
  • One-click analysis: Click the extension icon to see gap, career impact, and negotiation strategy
  • Instant insights: Get the same detailed metrics as the web platform in a compact popup
  • Seamless workflow: Stay on LinkedIn while analyzing multiple job postings

The key difference: The web platform requires manual input and offers broader exploration of STEM roles. The extension auto-detects job data from LinkedIn postings for instant, in-context analysis. Both provide identical analysis depth—just different entry points for your job search workflow.


How I built it

Dual-platform solution (web app + Chrome extension) built with React, Flask, and dual Wolfram API integration—all solo.

Frontend (Web + Extension)

Web App

  • React dashboard with Recharts for data visualization
  • Responsive CSS Grid layouts

Chrome Extension

  • Vanilla JavaScript with Manifest V3 architecture
  • Content scripts parse LinkedIn DOM to extract job data
  • Background service worker handles API communication
  • Popup UI displays full analysis in 400px responsive viewport

Backend (Flask API)

  • RESTful endpoints serving both platforms with identical analysis logic
  • CORS-enabled for cross-origin requests from extension
  • Baseline dataset: 25+ STEM roles from U.S. Census Bureau and BLS data

Experience-Adjusted Salary Model

I implemented a tiered growth function based on Bureau of Labor Statistics career progression data, because real careers show exponential early growth that tapers:

Tiered Salary Growth:

  • Years 0-3 (Early Career): Base × (1.10)^t = 10% annual growth
  • Years 4-7 (Mid Career): Previous × (1.05)^(t-3) = 5% annual growth
  • Years 8-15 (Senior): Previous × (1.03)^(t-7) = 3% annual growth
  • Years 15+ (Very Senior): Previous × (1.02)^(t-15) = 2% annual growth

This improved accuracy by ~40% over simple linear models.


⭐ Wolfram Integration

Parity's accuracy comes from a dual-API strategy combining Wolfram|Alpha's computational knowledge with Wolfram Language's NLP capabilities:

Wolfram|Alpha API — Computational Knowledge Engine

Serves as Parity's primary data source by computing (not just searching) salary information.

What it does:

  • Aggregates data from Bureau of Labor Statistics, Glassdoor, Indeed, and LinkedIn
  • Cross-references sources using statistical methods
  • Provides gender-specific salary estimates with geographic adjustments

When analyzing a "Software Engineer in California," Parity queries separately for female and male salaries, enabling precise pay gap calculations based on current market data.

Smart fallback architecture:

  1. Check baseline dataset first (instant response)
  2. Query Wolfram|Alpha for validation/enrichment
  3. 5-second timeout with graceful degradation
  4. Result: Reduced response time from 10+ seconds to under 1.5 seconds

Wolfram Cloud API — Advanced NLP Engine

To handle messy job postings (LinkedIn HTML, PDFs, inconsistent formatting), I deployed custom Wolfram Language functions to Wolfram Cloud as production REST APIs.

Key capabilities:

  • TextCases[] — Semantic entity extraction (automatically recognizes "$120k", "120,000 dollars", "one hundred twenty thousand" as the same value)
  • DeleteStopwords[] — Intelligent keyword extraction
  • Classify[] — Sentiment analysis for future bias detection

Why it matters: Parity can parse any job posting format without dozens of regex patterns.


Analysis Algorithms

Pay Gap Percentage:
Gap % = (1 - Female Salary / Male Salary) × 100

Lifetime Loss (Growth-Adjusted):
Lifetime Loss = Σ(Annual Gap × 1.03^year) over 30 years

Retirement Impact:
401k Loss = Lifetime Loss × 0.06 × 1.5
(Accounts for 6% contribution + employer match, compounded)

Years Behind:
Extra Years = [(Male Salary - Female Salary) / Female Salary] × 30


Challenges I ran into

Job Title Normalization
Extension sent "Senior Software Engineer III" but database had "software_engineer". Built regex-based normalizer to strip prefixes/suffixes ("Senior", "Jr.", "Lead", "III") and added Levenshtein distance fuzzy matching for typo tolerance.

Experience Model Accuracy
Linear growth models were unrealistic. Researched BLS longitudinal data and built tiered function reflecting real career trajectories where early-career growth (10% annually) tapers to senior-level growth (2% annually).

Wolfram API Timeouts
Initial Wolfram|Alpha queries took 10+ seconds, causing extension popup to freeze. Reduced to 1.2s average response by checking baseline dataset first (instant), querying Wolfram only for unknown roles, implementing 5-second timeout with ThreadPoolExecutor, and returning whichever data source completes first.

Wolfram Language Learning Curve
Functional programming paradigm was unfamiliar. Documentation for NLP use cases was sparse. Breakthrough: Realized I could develop in Mathematica notebooks interactively, then deploy directly to Wolfram Cloud as REST APIs. Spent 2 hours mastering TextCases[] entity recognition and APIFunction[] deployment.


Accomplishments that I am proud of

✅ Built dual-platform solution (web app + Chrome extension) solo
✅ Integrated two Wolfram APIs with intelligent fallback architecture for 99%+ uptime
✅ Deployed custom Wolfram Language NLP functions to Wolfram Cloud as production APIs
✅ Parsed LinkedIn's complex SPA with MutationObserver pattern for seamless navigation
✅ Created tiered salary growth model from actual BLS longitudinal career data
✅ Curated 25+ STEM roles dataset spanning engineering and science disciplines
✅ Built identical comprehensive analysis across both platforms


What I learned

Wolfram Ecosystem Mastery:

  • Wolfram|Alpha API's computational knowledge engine and multi-source data aggregation
  • Wolfram Language functional programming and symbolic computation advantages
  • Deploying Mathematica notebooks to Wolfram Cloud as production REST APIs
  • Semantic NLP with TextCases[], Classify[], and DeleteStopwords[]

Career Modeling:
Why linear salary models fail and how to build realistic tiered functions from BLS longitudinal studies

Real-World Data Engineering:
API timeout handling, normalization strategies, fuzzy matching algorithms

Responsive Design:
Building identical functionality for 400px extension popups vs. full web dashboards


What's next for Parity

Expanding the Platform
Support for Handshake, Glassdoor, and Indeed job postings in the Chrome extension, plus PDF parsing for offer letter analysis using Wolfram Cloud NLP. Adding education level adjustments (Bachelor's vs. Master's vs. PhD) and company-specific data by cross-referencing LinkedIn profiles with Glassdoor reviews.

SpeakFair Bias Detection Module
Using Wolfram Language to flag gendered language in job postings and performance reviews, helping organizations write more inclusive job descriptions while empowering women to recognize bias patterns.

Scaling Impact
The ultimate goal is making Parity the default tool every woman uses before accepting a job offer. By expanding to mobile apps, partnering with ATS platforms like Greenhouse and Lever, and offering an enterprise API for HR teams to audit internal pay equity, Parity can transform from a personal advocacy tool into a systemic solution.

When salary transparency becomes automatic rather than optional, we move closer to a future where the gender pay gap is a historical footnote—not a lived reality.

Share this project:

Updates