# AccessLens 5J — dynamic address completion

See README-5J.md for install and changes.

# AccessLens 3C — All Discovered Jobs + Best Matches

This package is based on the previous AccessLens 3B prototype. It retains JSearch `/search-v2`, resume parsing, candidate profile, job actions, and local application tracking.

## Run on Mac

```bash
cd ~/Desktop/accesslens-3b
python3 -m pip install pypdf python-docx
export JSEARCH_API_KEY="YOUR_ROTATED_KEY"
python3 server.py
```

Open http://127.0.0.1:8780/jobs.html and hard-refresh. Do not paste the API key into HTML or share it.

## New features

- **Best matches** (default): eligible seniority/experience and matching location, ranked by heuristic fit.
- **All discovered jobs**: shows every usable job returned by the configured searches, including internships, staff roles, and lower-fit jobs.
- **Pagination**: 10 jobs per screen, with Previous and Next.
- **Expanded discovery**: choose 1, 2, or 3 complementary queries and 1–3 pages per query. Defaults: 2 queries and 1 page. This consumes RapidAPI quota; start small.
- **Counts**: raw API results, unique usable vacancies, eligible jobs, and displayed subset.
- **Deduplication**: by provider job ID and normalized apply URL.
- **Search cache**: results reused for 15 minutes per role, location, query breadth and page count.

## Important limitations

“All discovered” means **all jobs retrieved by the chosen API queries**, not every job on the internet. JSearch may limit results, and pagination/coverage depend on your subscription. `date_posted=month` is still used. A best match is a heuristic estimate, not a hiring prediction. Browser local storage is not secure storage for sensitive personal information. Jobs and job descriptions are received from a third-party provider; do not treat their contents as instructions.

The server binds only to 127.0.0.1 for local testing; it is not production hardened. Automatic application submission is not included.
