Javis OS
Javis OS is an Agentic AI that assists entrepreneurs in business tasks, helping them grow their work.
AI translation
Find daily refreshed endpoint engineering jobs across macOS, Windows, MDM, UEM, Jamf, Intune, SCCM, client platform, digital workplace, and endpoint security roles.
Translation pending
BusinessTypeScript · JavaScriptGitHub @jorgeasaurusOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Focused job board for Endpoint Engineering, macOS, Windows, MDM, UEM, client platform, and endpoint security roles.
Taken from the repository README
Loading the full README.
Read the full README ↗Focused job board for Endpoint Engineering, macOS, Windows, MDM, UEM, client platform, and endpoint security roles.
Live site: https://endpointjobs.dev
SEO routing: job URL decision.
Backlink planning: strategy, known links, opportunity tracker, and referral metrics.
Public API: GET /api/jobs · usage guide · OpenAPI 3.1
MCP: connect a Streamable HTTP client to https://endpointjobs.dev/api/mcp for search_jobs, get_job, and get_filter_options. Public, read-only, no API key; connection and tool examples.
| Desktop | Mobile |
|---|---|
Endpoint Jobs is a static Next.js app backed by src/data/jobs.json. The first screen is the job board, not a marketing page.
Users can:
Remote and Salary shown for high-signal narrowing.Report / request to open a GitHub issue for bugs or feature requests.The feed is generated by npm run jobs:refresh.
GitHub Action or local command
-> scripts/refresh-jobs.ts
-> provider adapters in scripts/job-refresh/providers
-> endpoint relevance filtering, normalization, dedupe, salary extraction
-> src/data/jobs.json
-> Next.js static build
-> Vercel deployment
The refresh script keeps the site cheap to host: there is no database, queue, or runtime job API dependency for visitors. It writes normalized jobs into src/data/jobs.json, and the page imports that JSON at build time.
Broader aggregator scanning includes Endpoint/UEM/security vendors and enterprise employers such as Kandji, Fleet, NinjaOne, Addigy, Mosyle, CrowdStrike, SentinelOne, Palo Alto Networks, 1Password, Bitwarden, BeyondTrust, Apple, Microsoft, Adobe, Salesforce, ServiceNow, Block, Capital One, Bloomberg, and Netflix. Search defaults also include client platform, client infrastructure, employee experience, digital workplace, corporate engineering, enterprise engineering, device trust, zero-touch, IT systems engineer, and tech operations language.
Current default public providers: Remotive, Arbeitnow, Jobicy, Remote OK, Greenhouse, Lever, The Muse, Ashby, Workable, Amazon Jobs, Workday, Oracle HCM, Jibe, Activate, SmartRecruiters, Recruitee, SchoolJobs, Curated Jobs, Himalayas, and 4 Day Week.
Optional configured providers: Techmap RSS, Adzuna, TheirStack, SerpAPI Google Jobs, RapidAPI Daily International Jobs, RapidAPI LinkedIn Job Search, USAJOBS, and AI Dev Board.
The official linkedin-api-client package was evaluated but is intentionally not used. It is a beta Node.js Rest.li/OAuth helper for approved LinkedIn APIs, not a public LinkedIn job-search feed. LinkedIn's documented Job Posting API is restricted to approved Talent Solutions partners and is for publishing jobs to LinkedIn. For discovery, this repo uses the separate optional RapidAPI LinkedIn Job Search provider when configured.
The normalizer:
JOB_EXCLUDED_SOURCE_URLS.npm install
npm run dev
Browser checks run with npx playwright test. Playwright starts that dev server on 127.0.0.1:3000 with E2E_FIXTURES=1 so the platform-chip spec has a known card. CI always starts its own server. A server already on port 3000 is reused and does not receive the flag, so stop it or start it with E2E_FIXTURES=1. The fixture stays off unless that variable is exactly 1 outside a production build or server. A normal npm run dev does not set it.
npm run jobs:refresh
Use JOB_PROVIDERS=remotive,arbeitnow,jobicy,remoteok,greenhouse,lever,muse,ashby,workable,amazon,workday,oraclehcm,jibe,activate,smartrecruiters,recruitee,schooljobs,curated,techmaprss,adzuna,theirstack,serpapi,rapidapi,rapidapilinkedin,usajobs,aidevboard,himalayas,fourdayweek to choose sources.
Single-provider legacy mode still works with JOB_PROVIDER=remoteok and JOB_API_URL=https://remoteok.com/api.
Override individual URLs with JOB_REMOTIVE_API_URL, JOB_ARBEITNOW_API_URL, JOB_JOBICY_API_URL, JOB_REMOTEOK_API_URL, JOB_GREENHOUSE_API_URL, JOB_LEVER_API_URL, JOB_MUSE_API_URL, JOB_ASHBY_API_URL, JOB_WORKABLE_API_URL, JOB_AMAZON_API_URL, JOB_WORKDAY_API_URL, JOB_ORACLEHCM_API_URL, JOB_JIBE_API_URL, JOB_ACTIVATE_API_URL, JOB_SMARTRECRUITERS_API_URL, JOB_RECRUITEE_API_URL, JOB_SCHOOLJOBS_API_URL, JOB_TECHMAP_RSS_API_URL, JOB_ADZUNA_API_URL, JOB_THEIRSTACK_API_URL, JOB_SERPAPI_API_URL, JOB_RAPIDAPI_API_URL, JOB_RAPIDAPILINKEDIN_API_URL, JOB_USAJOBS_API_URL, JOB_AIDEVBOARD_API_URL, JOB_HIMALAYAS_API_URL, or JOB_FOURDAYWEEK_API_URL.
Career-board defaults include Greenhouse boards for Jamf, Automox, Tanium, Okta, PlayStation, Verkada, Anthropic, DoorDash, Commvault, Kaseya, Kymera, Databricks, Zscaler, Samsara, Scale AI, Wiz, Stripe, SpaceX, Robinhood, Box, Datadog, Elastic, Lyft, Instacart, Anduril, Asana, MongoDB, Brex, Figma, Airbnb, Discord, Reddit, Rubrik, Dropbox, Affirm, Duolingo, GitLab, Coinbase, Canonical, Pinterest, Block, and Roblox; Lever companies JumpCloud, Brighton Jones, Hermeus, Omnidian, and WHOOP; Ashby boards 1Password, Docker, Cursor, Perplexity, OpenAI, Cohere, ElevenLabs, Watershed, Suno, and Voleon; targeted Workday, Amazon, Jibe, and Activate searches; SmartRecruiters company identifiers Continental and BoschGroup; German and Swiss Recruitee accounts; and five Muse pages.
Additional employer defaults: Greenhouse (archer56, drweng, obsidiansecurity, later, snorkelai, a16z, mrbeastyoutube, life360); Ashby (applied, radiant-industries, drata, assured, harvey, fluidstack, Crusoe); Workday (SC Johnson, U.S. Bank, IFF, Greenberg Traurig, Morgan Stanley, Accurate Background, Tempus AI); Oracle HCM (Florida Blue).
Oracle HCM uses Florida Blue's public API at https://fa-etum-saasfaprod1.fa.ocs.oraclecloud.com/hcmRestApi/resources/latest; JOB_ORACLEHCM_API_URL overrides that API base, not the employer/site identity. Searches cover macOS, Jamf, Intune, and endpoint; employer publication and closing dates determine eligibility. A 60-second provider deadline and 50-detail limit abort incomplete refreshes; public application links always use the employer host.
Workday overrides use JOB_WORKDAY_SITES='Company|https://host/wday/cxs/tenant/site/jobs|Endpoint;Intune|true' (separate sites with ;;). The optional fourth field controls detail fetching: true enables it, false disables it, and omission inherits the matching default site's setting. Detail-enabled sites abort the refresh on search/detail failures and use the employer path for stable IDs; closed details (404/410) are skipped. Each detail-enabled site has a 120-second deadline across its searches and details; malformed searches or supplied closing dates abort the snapshot.
Workable defaults to BKF Engineers (bkfengineers), follows up to 25 pages, and rejects incomplete pagination. Verified open listings retain their publication dates and refresh their stale window. Override accounts with JOB_WORKABLE_ACCOUNTS=slug or Display Name|slug entries, with optional JOB_WORKABLE_DETAIL_API_URL for v1 detail overrides.
Curated jobs are explicit reviewed listings in scripts/job-refresh/providers/curated-jobs.ts; current defaults include NinjaOne's Software Packaging Engineer and Greentube's EUC Engineer roles.
Techmap RSS uses JOB_TECHMAP_RSS_FEEDS=url or Feed Name|url entries, with optional JOB_TECHMAP_RSS_AUTH_HEADER or TECHMAP_RSS_TOKEN.
SmartRecruiters supports JOB_SMARTRECRUITERS_COMPANIES, JOB_SMARTRECRUITERS_QUERIES, and optional SMARTRECRUITERS_API_KEY or JOB_SMARTRECRUITERS_API_KEY. Recruitee supports JOB_RECRUITEE_ACCOUNTS. USAJOBS requires USAJOBS_API_KEY or JOB_USAJOBS_API_KEY, plus USAJOBS_USER_AGENT_EMAIL, JOB_USAJOBS_USER_AGENT_EMAIL, or USAJOBS_EMAIL, and supports JOB_USAJOBS_QUERIES, JOB_USAJOBS_DATE_POSTED_DAYS, JOB_USAJOBS_RESULTS_PER_PAGE, and JOB_USAJOBS_MAX_PAGES.
Adzuna defaults to US searches from JOB_ADZUNA_QUERIES and supports JOB_ADZUNA_COUNTRIES. TheirStack requires THEIRSTACK_API_KEY and supports JOB_THEIRSTACK_TITLE_QUERIES, JOB_THEIRSTACK_COMPANY_NAMES, JOB_THEIRSTACK_COUNTRY_CODES, JOB_THEIRSTACK_MAX_AGE_DAYS, and JOB_THEIRSTACK_LIMIT. Country codes are split into a US/EU batch, a dedicated Spain (es) batch, and a LATAM/Caribbean batch, each with its own limit, so sparse markets are not crowded out of a single 25-slot OR. SerpAPI Google Jobs requires SERPAPI_API_KEY; JOB_SERPAPI_COUNTRIES=us,au enables preset markets, while the existing JOB_SERPAPI_LOCATION, JOB_SERPAPI_GL, JOB_SERPAPI_HL, and JOB_SERPAPI_GOOGLE_DOMAIN variables remain the single-market fallback. It supports shared JOB_SERPAPI_QUERIES, per-market overrides such as JOB_SERPAPI_US_QUERIES and JOB_SERPAPI_AU_QUERIES, JOB_SERPAPI_MAX_PAGES, JOB_SERPAPI_MAX_SEARCHES_PER_RUN (default 28), and optional quota protection through JOB_SERPAPI_QUOTA_PREFLIGHT=true plus JOB_SERPAPI_MONTHLY_RESERVE (default 100). RapidAPI Daily International Jobs requires RAPIDAPI_DAILY_JOBS_KEY and supports JOB_RAPIDAPI_COUNTRY_CODES, JOB_RAPIDAPI_HAS_SALARY, JOB_RAPIDAPI_LATAM_HAS_SALARY, JOB_RAPIDAPI_MAX_PAGES (US/EU salary feeds), JOB_RAPIDAPI_LATAM_MAX_PAGES, JOB_RAPIDAPI_SPAIN_MAX_PAGES, optional JOB_RAPIDAPI_QUERIES, optional JOB_RAPIDAPI_LATAM_QUERIES (default intune,jamf,mdm,uem,endpoint), optional JOB_RAPIDAPI_SPAIN_QUERIES (falls back to the LATAM list), JOB_RAPIDAPI_QUERY_PARAM (default title; the Daily API has no query field), JOB_RAPIDAPI_LOOKBACK_DAYS (default 30, sent as dateCreatedMin/dateCreatedMax; override with JOB_RAPIDAPI_DATE_CREATED), JOB_RAPIDAPI_REQUEST_DELAY_MS, JOB_RAPIDAPI_MONTHLY_REQUEST_BUDGET, and JOB_RAPIDAPI_MAX_REQUESTS_PER_RUN. RapidAPI LinkedIn Job Search requires RAPIDAPI_LINKEDIN_JOBS_KEY and supports JOB_RAPIDAPI_LINKEDIN_TITLE_FILTERS, JOB_RAPIDAPI_LINKEDIN_LOCATION_FILTER, , , , , and . AI Dev Board supports anonymous trial reads, but recurring workflow use should set ; it supports , , , , , , , , , and . Himalayas is a public remote-jobs search API with no key; it supports and is cached for 24 hours. Displayed listings must credit and must not be resubmitted to third-party aggregators including LinkedIn Jobs, Google Jobs, or Jooble. 4dayweek.io is a public reduced-hours jobs API with no key; it supports , , and . Please link back to .
The scheduled refresh asks the broad country-aware providers for the US, Switzerland, Italy, Spain, France, Germany, Brazil, Argentina, Chile, Colombia, Peru, Mexico, Guatemala, Belize, El Salvador, Honduras, Nicaragua, Costa Rica, Panama, Ecuador, Uruguay, Paraguay, Bolivia, the Dominican Republic, Jamaica, and Puerto Rico. Adzuna still only has Brazil (br) and Mexico (mx) in the region; it does not expose Argentina, Chile, Colombia, Peru, Ecuador, Uruguay, Paraguay, Bolivia, the Central American codes (gt, bz, sv, hn, ni, cr, pa), or the Caribbean codes (do, jm, pr), so those are queried through TheirStack, RapidAPI Daily International Jobs, and RapidAPI LinkedIn. TheirStack and LinkedIn each run a dedicated Spain batch and a LATAM/Caribbean batch, each with its own 25-slot limit, so US/EU/Remote results do not fill the page. Spain is no longer in the primary LinkedIn US/EU/Remote OR. RapidAPI Daily walks Spain and LATAM/Caribbean first, then US/EU salary feeds; US/CH/IT/FR/DE keep hasSalary=true, an empty title filter, and one page, while Spain and LATAM/Caribbean omit the salary requirement and send one title=intune,jamf,mdm,uem,endpoint boolean OR (Techmap title search, not a generic query param) so fetched rows already have matcher-surviving titles. CSV terms are joined into that single title search per country instead of multiplying country×query×page. A 30-day dateCreatedMin/dateCreatedMax window is set explicitly; omitting it would default the API to today-minus-2 and miss sparse Spain/LATAM title matches. SerpAPI stays on the US (26 searches) plus Australia (2) to remain under the 1,000/month quota: at most 868 in a 31-day month, leaving 132 of the plan. Spain, South America, Mexico, Central America, and the Caribbean are not added to SerpAPI; those markets are covered by the other country-aware providers. Caribbean countries are now queried. If TheirStack / RapidAPI / LinkedIn still return no endpoint roles for a market after the next refresh, the queries stay in place so the metro, map, and SEO surfaces remain ready.
RapidAPI Daily assumes the Pro plan: 3,000 requests / month, 2 requests / second, and 10 jobs per request (pageSize is capped at 10). Scheduled defaults spend at most 70 requests when every page is full — Spain 5 pages + 20 LATAM/Caribbean countries × 3 pages + 5 US/EU salary pages — or 2,170 in a 31-day month (2,100 over 30 days). JOB_RAPIDAPI_MONTHLY_REQUEST_BUDGET defaults to 2,700 (300-request headroom under the plan) and JOB_RAPIDAPI_MAX_REQUESTS_PER_RUN defaults to floor(budget / 31) (87); the workflow sets an 80-request run cap so 80 × 31 = 2,480 stays under both the soft budget and the 3,000-request plan. Requests are paced with JOB_RAPIDAPI_REQUEST_DELAY_MS (default 650ms, safely under 2/sec) and retry once on HTTP 429 before stopping. Extra terms in JOB_RAPIDAPI_SPAIN_QUERIES or JOB_RAPIDAPI_LATAM_QUERIES are comma-ORed into one title request per country (Techmap boolean OR), so they do not multiply the request budget; keep those lists short for precision, not quota.
Use JOB_EXCLUDED_SOURCE_URLS as a comma-separated list for confirmed-dead source postings that an aggregator still returns.
Set TYPESAFE_API_KEY to classify sponsorship statements that remain unresolved after exact-rule matching. The refresh uses TypeSafe's jev-latest model, accepts results at 0.8 confidence or higher, caps each run at 50 requests, and keeps failures as not-stated; override these with JOB_JEV_MODEL, JOB_JEV_MIN_CONFIDENCE, JOB_JEV_CONCURRENCY, JOB_JEV_MAX_REQUESTS, JOB_JEV_TIMEOUT_MS, and JOB_JEV_MAX_RETRIES. Run npm run jobs:classify-sponsorship to reclassify the stored feed.
Ready pull requests request a GitHub Copilot review. If Copilot does not review the latest head, the workflow comments bugbot run so Cursor Bugbot can take over. Setup, including the REVIEW_TRIGGER_TOKEN secret and Bugbot's "run only when mentioned" setting, is in docs/review-fallback.md.
.github/workflows/refresh-jobs.yml runs daily at 11:17 UTC and can also be run manually with workflow_dispatch.
It installs dependencies, runs npm run jobs:refresh, verifies npm run build, commits src/data/jobs.json when listings change, and pushes back to main.
npm run build.JOB_RAPIDAPI_LINKEDIN_SPAIN_LOCATION_FILTERJOB_RAPIDAPI_LINKEDIN_LATAM_LOCATION_FILTERJOB_RAPIDAPI_LINKEDIN_LIMITJOB_RAPIDAPI_LINKEDIN_MAX_PAGESJOB_RAPIDAPI_LINKEDIN_DESCRIPTION_TYPEAIDEVBOARD_API_KEYJOB_AIDEVBOARD_QUERIESJOB_AIDEVBOARD_TAGSJOB_AIDEVBOARD_LOCATIONJOB_AIDEVBOARD_WORKPLACEJOB_AIDEVBOARD_TYPEJOB_AIDEVBOARD_LEVELJOB_AIDEVBOARD_LIMITJOB_AIDEVBOARD_MAX_PAGESJOB_AIDEVBOARD_POSTED_WITHIN_DAYSJOB_AIDEVBOARD_REQUIRE_API_KEYJOB_HIMALAYAS_QUERIESJOB_FOURDAYWEEK_QUERIESJOB_FOURDAYWEEK_MAX_PAGESJOB_FOURDAYWEEK_LIMIT