ats-adapter

Implements Playwright browser automation adapters for Greenhouse, Lever, Workday, and unknown ATS portals.

Updated May 19, 2026
One-click install
npx skills add https://github.com/Jessitoii/career-os --skill ats-adapter-jessitoii
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ats-adapter
Source: https://github.com/Jessitoii/career-os/tree/main/.agents/skills/ats-adapter
Command: npx skills add https://github.com/Jessitoii/career-os --skill ats-adapter-jessitoii

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires playwright.

What problem does it solve? Filling out job application forms across different applicant tracking systems requires platform-specific selectors and handling, and unknown portals break naive automation entirely. This Skill provides the adapter pattern, detection logic, and fallback hierarchy needed to write, debug, and extend browser automation for any ATS. ## Core Features & Use Cases - Adapter Pattern Implementation: Create new adapters derived from the ATSAdapter base class with is_matching detection and fill_application form-filling logic, then register them in the AdapterRegistry. - Shadow DOM and Platform Handling: Covers Workday shadow DOM piercing with pierce/ selectors, Greenhouse and Lever flat DOM selectors, and dynamic form waiting. - Three-Layer Fallback for Unknown Portals: Heuristic selector mapping, LLM vision/DOM fallback for selector discovery, and HITL Telegram escalation when automation fails. - Use Case: When a Playwright script fails on an unfamiliar job portal, use this Skill to implement the heuristic fill, then the LLM vision fallback, and finally route a screenshot to the user via Telegram for manual selector input. ## Quick Start Write a new ATS adapter for the Ashby platform with URL detection, form filling, and registry integration.

Frequently Asked Questions about ats-adapter

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I write a new ATS adapter for Playwright browser automation?

Create a new file deriving from the ATSAdapter base class, implement is_matching with a URL pattern check and fill_application with platform-specific selectors, then add the class to the ADAPTER_REGISTRY list. Test first in headless=False visible browser mode.

How do I automate form filling on Workday with shadow DOM?

Workday uses shadow DOM, so selectors must use the pierce/ prefix such as pierce/[data-automation-id='email']. You must also wait for each dynamically loaded form element with wait_for_selector before filling it.

What happens when Playwright encounters an unknown job application portal?

When no registered adapter matches, a three-layer fallback runs: heuristic selector mapping for common fields, then LLM vision fallback that identifies selectors from a screenshot and accessibility tree, and finally a Telegram HITL flow asking the user for the selector.

Why is my DOM selector not found during form automation?

Selectors fail when the portal uses shadow DOM requiring pierce/ prefixes, when elements load dynamically and need wait_for_selector, or when the platform is unknown and no adapter matches. Use the heuristic or LLM vision fallback layers to recover.

Does the adapter submit job applications automatically?

No. Adapters only click the submit button when data['approved'] is True, and take_snapshot is called before and after submission with paths saved to interaction_logs. This enforces human approval before any real submission.