Skip to content
gargikallaPublic

About

Browser extension that scans a job posting for visa sponsorship, clearance, and citizenship requirements and flags eligibility for F-1 students.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

Repository files navigation

🔎 F1-Filter

CI

A Chrome extension that instantly analyzes job postings and identifies visa sponsorship and work authorization eligibility for F-1 international students.

Instead of manually searching every job description for phrases like "unable to sponsor" or "OPT/CPT welcome", F1-Filter scans the page in seconds and highlights the relevant information directly inside your browser.

Built with Chrome Manifest V3, a modular analysis engine, and a domain-agnostic content scanning pipeline.

The Problem

International students spend countless hours opening job postings only to discover, after reading the entire description, that the company does not sponsor work authorization.

The eligibility information is often:

  • buried deep within long job descriptions
  • written using inconsistent wording
  • sometimes even omitted entirely
  • different across every job board

This turns finding eligible positions into a repetitive manual process.

The Solution

F1-Filter automatically scans the text of any job posting and classifies it into one of three categories:

Result Meaning
✅ Eligible Language indicates sponsorship or OPT/CPT acceptance
❌ Not Eligible Posting explicitly states sponsorship is unavailable
⚠️ Uncertain No clear eligibility information was found

Rather than just producing a verdict, the extension also highlights the exact phrases responsible for the classification so users can verify the result themselves.


📝 Documentation

The sections below cover the essentials — installing, testing, and a quick tour of the codebase. For an in-depth look at any part of the project, see:

Doc Covers
PRD Problem statement, goals/non-goals, user stories, functional & non-functional requirements, technical requirements + design rationale, roadmap
Architecture System design, the manual vs. auto-run scan paths, every component's responsibilities, storage schema, and the messaging contract between scripts
User Guide Installing, scanning a posting, setting up auto-run, managing keyword lists, backup/reset, privacy, and troubleshooting
Classification Engine How the matching algorithm and verdict decision logic work, the full default keyword lists, accuracy, and known limitations
Development Guide Local dev loop, running/adding tests, CI, coding conventions, and how to add a new job board or tune keywords
Resources Documentation, tutorials, and tools referenced while building this project

✨ Features

  • Chrome Extension built with Manifest V3
  • Works across different job boards using a domain-agnostic scanning pipeline
  • Pure JavaScript eligibility analysis engine
  • Configurable keyword rules
  • Site-specific configuration support
  • Background service worker architecture
  • Unit-tested classification logic
  • Lightweight with no external backend

🎬 Demo

Full Walkthrough Demo


🧩 Architecture at a glance

Job Posting
      │
      ▼
Content Script
(DOM Scanner)
      │
      ▼
Text Extraction
      │
      ▼
Analysis Engine
(Pure Functions)
      │
      ▼
Classification

Eligible
Not Eligible
Uncertain
      │
      ▼
Popup UI

A scan can be triggered manually (click Check eligibility) or automatically on job boards you've opted into — both paths share the same analysis engine and DOM-highlighting logic. For the full breakdown of every component, the storage schema, and the messaging contract, see docs/architecture.md.

Sequence Diagram for F1-Filter

Sequence Diagram


🎯 Accuracy

The current rule-based engine achieved approximately 90–92% classification accuracy during manual validation using real-world job descriptions.

Automated tests cover edge cases including compound terms (OPT/CPT, F-1), punctuation variations, overlapping keywords, and false-positive prevention (e.g. ensuring "opt" does not match "adopt"). Full details in docs/classification.md.


🛠️ Tech Stack

JavaScript HTML5 CSS3

Chrome Extension Chrome APIs

Node.js npm


📁 Project Structure

f1-filter
├── icons/                     Extension icons (16/32/48/128px)
├── docs/                      In-depth documentation (see table above)
├── src/                       Extension source (analyzer, content scripts, popup, settings)
├── test/                      Unit tests for the analysis engine
├── manifest.json
├── package.json
└── .github/workflows/ci.yml

See docs/development.md for the fully annotated file tree.


⚙️ Installation

  1. Clone the repository.
git clone https://github.com/gargikalla/f1-filter.git
  1. Open Chrome and navigate to:
chrome://extensions
  1. Enable Developer Mode.

  2. Click Load unpacked.

  3. Select the project folder.

The extension is now ready to use. You can click on the extension icon to open the settings, update keywords list, update site permissions, turn on/off auto-scan for specific job boards, and access other tools like reset. See the User Guide for a full walkthrough.


🧪 Running Tests

npm test

This runs test/analyzer.test.js, validating the analyzer independently from Chrome APIs, making it fast, deterministic, and easy to extend. See docs/development.md for how to add new test cases.


🔒 Privacy & Security

  • No permissions on install. host_permissions is empty in the manifest — the extension can't read any page until you either click Scan this page for that one tab, or explicitly opt a specific site into auto-run.
  • Auto-run permissions are per-site and revocable. Each toggle in Settings triggers Chrome's own permission prompt for exactly one origin. Turning a site off calls chrome.permissions.remove immediately.
  • Zero network requests anywhere in the code. No analytics, no telemetry, no external fonts or scripts, no server of any kind.
  • Storage stays on-device. Keyword lists live in chrome.storage.local; the last scan result per tab lives in chrome.storage.session, which Chrome clears automatically and never writes to disk.

🚀 Future Improvements

  • Company sponsorship history integration
  • Confidence scoring instead of rule-only classification
  • Support for additional work authorization categories
  • Enhanced keyword management UI
  • Browser support beyond Chrome

Copyright © 2026 gargikalla. All rights reserved. This project is provided for personal use only. You may download and use F1 Filter locally, but you may not redistribute, modify, or republish the source code or derivative works without prior written permission.

About

Browser extension that scans a job posting for visa sponsorship, clearance, and citizenship requirements and flags eligibility for F-1 students.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages