Defeating ATS bots, AI hallucinations, and the blank-page problem through rigorous orchestration.
π Read the full Getting Started Guide here!
Using a single-shot prompt to ask an LLM to "write my resume" results in three catastrophic failures: prompt to ask an LLM to "write my resume" results in three catastrophic failures:
- Summarization Loss: LLMs inherently compress facts, stripping away the exact metrics, technologies, and scale that actually get you hired.
- Sycophancy & Hallucination: AI invents "synergistic paradigms" and hallucinates responsibilities to make you sound good, causing you to fail rigorous technical interviews.
- Context Collapse: When recruiters call back a month later, you have no idea what resume you sent them or what the job description even was.
Praxis isn't just another AI resume writer. It is a localized, multi-agent pipeline designed to solve these exact failures. It builds a permanent, lossless Career Knowledge Base and deploys adversarial AI agents to meticulously tailor your history to specific roles, generate interview prep sheets, and organize your job hunt perfectly.
Instead of summarizing your history into Markdown, Praxis iteratively ingests raw data (PDFs, GitHub exports, LinkedIn CSVs) into a strict, loss-proof relational database (.praxis/data/knowledge_base.json). It maps every tool, skill, and metric to the exact project where it was used, ensuring you never lose the hard numbers that prove your impact.
Every time you apply for a job, your Knowledge Base gets stronger. If Praxis detects a required skill in a job description that isn't in your database, it pauses and asks you: "Did you use [Skill] at a previous company? How?" You reply with a rough brain-dump. Praxis hands your raw text to the adversarial agent panel to format into a perfect STAR-method bullet in your exact tone of voice, and then permanently injects that new bullet and skill into your Knowledge Base. Over time, your career database continually grows deeper, richer, and more detailed with zero extra effort on your part.
When tailoring an ATS-friendly resume for a specific job description, Praxis employs a rigorous two-agent adversarial loop:
praxis-pathos(The Visionary & Coach): Drafts the resume using your saved Voice Profile and the STAR method, focusing on compelling narrative and impact.praxis-logos(The Truth-Teller): Acts as a brutal auditor, rejecting any bullet point that hallucinates facts or uses AI-speak not explicitly backed by your Knowledge Base. They iterate until a mathematically honest, perfectly targeted document is produced.
Say goodbye to generic applications. Simply provide a job description URL (/praxis <job-url>), and Praxis will run a precision Skill Gap Analysis. It strategically selects the most relevant facts from your history to generate a highly targeted, ATS-optimized PDF designed specifically to beat the bots for that exact role.
Beyond just getting the interview, Praxis helps you pass it. For every targeted resume generated, Praxis builds a comprehensive Interview Guideline & Prep Sheet. This document explicitly maps your past experience and metrics directly to the requirements in the job description, serving as a rapid orientation brief when the recruiter calls.
"Which version of my resume did I send to AcmeCorp again?"
Praxis automatically organizes your generated resumes, tailored cover letters, and Interview Prep Sheets into dedicated company folders (e.g., assets/AcmeCorp/). You can instantly pull up the folder to see exactly what the job description was, what resume you sent, and the mapped talking points.
Praxis includes a headless sourcing engine (praxis-sourcer) that aggregates technical roles from platforms like LinkedIn, Hacker News, and We Work Remotely. It utilizes a local Headless LLM Gatekeeper to instantly score roles against your customized search_parameters.jsonβfiltering out low-comp roles, dealbreaker tech stacks, and hybrid requirements while highlighting high-value multi-pliers.
Stop filling out repetitive forms. The praxis-seeker agent uses Chrome DevTools MCP and high-speed JavaScript injection to safely navigate ATS systems like Workday and Greenhouse. It automatically fills in demographic data from apply_config.json, auto-accepts standard legal agreements, explicitly rejects restrictive covenants (like Non-Competes), and pre-stages the final submission button for a human-in-the-loop review.
Praxis installs directly into your local AI CLI environment (e.g., opencode, Claude Code, GitHub Copilot) as a skill.
Runs a deterministic Deep Harvest extraction across your root directory for raw exports, parsing data into fact pools and pushing it into your Knowledge Base.
Quickly appends specific accomplishments, metrics, or corrections using natural language without requiring a full CV re-upload (e.g., /praxis at ACME co., I managed a team of 50).
Explicitly regenerates your general baseline resume (assets/Resume.md) directly from your knowledge base data.
Executes the Skill Gap Analysis and the Pathos/Logos adversarial loop. Generates the targeted PDF, the Interview Prep Sheet, and organizes them perfectly into the target company's folder.
graph LR
A[Raw Career Data] --> B[(Local Knowledge Base)]
B --> C[praxis-pathos: Drafter]
C <--> D[praxis-logos: Auditor]
D --> E[ATS-Optimized PDF]
- Node.js (v18+): Praxis uses a deterministic Node.js script (
evaluate_resume.js) as an adversarial validation loop to strictly enforce ATS compliance and guarantee no facts are hallucinated or dropped during generation. You must have Node installed on your machine. - An AI CLI Harness: OpenCode, Claude Code, GitHub Copilot CLI, etc.
- Chrome DevTools MCP: Required for automated job sourcing and ATS submission. If you don't have it installed, Praxis agents will detect this and provide instructions on how to install and configure it in your AI harness. For more details, see the Model Context Protocol GitHub or the respective Chrome DevTools MCP project page.
# Clone the repository
git clone git@github.com:ksmeltzer/Praxis.git
cd PraxisTo install Praxis, follow your specific AI Agent Harness (e.g., opencode, Claude Code, or GitHub Copilot) tool's guide for installing local agents, skills, and custom commands from a project directory.
Note: In many modern AI CLI tools (like Claude Code and OpenCode), you can simply open the Praxis directory and the agents, slash commands, and skills are already pre-configured to work automatically via local environment files (.claude/prompts/ and .opencode/).
Praxis is designed with absolute privacy in mind. Your raw data, API keys, and generated JSON databases are intentionally .gitignore'd. Your career data never leaves your local machine unless you explicitly configure an external model API.
The Praxis pipeline relies on two adversarial agents defined in the .agents/ directory:
.agents/praxis-pathos.md(The Drafter).agents/praxis-logos.md(The Auditor)
By default, these agents are configured to use specific models (e.g., github-copilot/claude-sonnet-4.6 and github-copilot/gpt-4o) because our testing proved that Claude 4.6 Sonnet is vastly superior at strict markdown template adherence, while GPT-4o is excellent at auditing and reasoning.
Important: You may need to update the model: string inside these files to match the exact model identifier used by your specific AI provider. If you do not know the correct model string for your provider, you can look it up at https://models.dev.
