{
  "markdown": "<p align=\"center\">\n  <img src=\".github/assets/hero.png\" alt=\"Slushpile: an adversarial job search with a memory. Seven agents try to reject you before a recruiter gets the chance, and what they find, you keep. What you keep: profile.md, every factual claim; preferences.yaml, comp, location and constraints; stories.md, four to eight tellable; job_search.md, outcomes for calibration. Written once, read by every stage, updated by every review. The seven reviewers: triage screener, requirements analyst, ATS simulator, fatigued reader, pool analyst, hiring manager, contrarian. Five in parallel, blind to each other, then synthesis, then an agent whose job is overturning it.\" width=\"100%\">\n</p>\n\n<p align=\"center\">\n  <strong>Slushpile</strong><br>\n  <em>Seven agents try to reject you before a recruiter gets the chance.</em><br>\n  <em>What they find, you keep.</em>\n</p>\n\n<p align=\"center\">\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/github/license/VonTerraProject501c3/slushpile?style=flat\" alt=\"License\"></a>\n  <a href=\".github/workflows/plugin-load-check.yml\"><img src=\"https://img.shields.io/github/actions/workflow/status/VonTerraProject501c3/slushpile/plugin-load-check.yml?label=plugin%20loads&style=flat\" alt=\"Plugin load check\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.linkedin.com/in/aaddrick/\">Connect on LinkedIn!</a>\n</p>\n\n<!-- BEGIN GENERATED language-nav: scripts/sync_docs.py -->\n\n<p align=\"center\">\n  <strong>English</strong> ·\n  <a href=\"translations/zh-CN/README.md\">简体中文</a> ·\n  <a href=\"translations/es/README.md\">Español</a> ·\n  <a href=\"translations/pt-BR/README.md\">Português (BR)</a> ·\n  <a href=\"translations/vi/README.md\">Tiếng Việt</a> ·\n  <a href=\"translations/en-x-aibro/README.md\">AI Bro</a>\n</p>\n\n<!-- END GENERATED language-nav -->\n\n## Install\n\n<details open>\n<summary><strong>Claude Code</strong></summary>\n\n```bash\nclaude plugin marketplace add VonTerraProject501c3/slushpile\n```\n\n```bash\nclaude plugin install slushpile@slushpile\n```\n\nThen, in the directory where you keep your job search:\n\n```\n/slushpile:onboard\n```\n\n</details>\n\n<details>\n<summary><strong>Codex</strong></summary>\n\n```bash\ncodex plugin marketplace add VonTerraProject501c3/slushpile --ref main\n```\n\n```bash\ncodex plugin add slushpile@slushpile\n```\n\nCodex prefixes plugin skills with the plugin name:\n\n```\n$slushpile:onboard\n```\n\nCodex has no subagent dispatch, so the review pipeline runs its seven personas\nsequentially in one context instead of five of them in parallel. Same output,\nslower, and slightly more prone to one persona's reasoning bleeding into the\nnext.\n\n</details>\n\n<details>\n<summary><strong>Cursor, Gemini CLI, and manual install</strong></summary>\n\nSee [INSTALL.md](./INSTALL.md).\n\n</details>\n\n## The problem\n\nYou are not being graded against the job description. You are being graded\nagainst the other seventy people who applied to the same requisition this week.\n\nAlmost every tool in this space gets that backwards. Feed a resume and a posting\ninto a resume optimizer and it will tell you your keyword match went from 68% to\n91%, which is a real number about the wrong question. If the 75th-percentile\napplicant in that queue matches at 94%, your 91% is a rejection, and nothing in\nthe tool will ever tell you so.\n\nThe second thing they get wrong: they return one verdict. But the same resume\nand the same letter convert at maybe 2% through a cold portal submission and 30%\nthrough a referral. Those are not the same decision, and collapsing them into a\nsingle \"strong match\" is not a simplification. It is an error with a confident\ninterface on top of it.\n\nThe third is the one nobody names. These tools have no memory. You paste a\nresume in, you get a number back, you close the tab, and the tool ends the\nsession knowing exactly what it knew at the start. A search is forty\napplications over three months. Every one of them costs full price.\n\n## What this does instead\n\n**It builds a model of you, once.** `/slushpile:onboard` interviews you and writes\nthree files: a profile, a preferences file, and a set of stories. The profile is\nnot a resume — it is the pool a resume gets cut from, several times longer than\nanything you would ever send. Every later stage reads it, and nothing asks you\nthose questions twice.\n\n**It tries to talk you out of the role before you write anything.** The search\nstage scores each posting against the estimated applicant pool, runs kill\ncriteria, builds an expected-value matrix per application channel, and puts a\ncontrarian in front of the tier list. Every other tool starts working after you\nhave already decided to apply. The expensive mistake happens before that, and\nthis is the only stage that can still catch it for free.\n\n**It goes and opens the channel it says is best.** A matrix that prices a\nreferral several times above a cold submission is worth nothing if nothing acts\non it. `/slushpile:outreach` reads your own history for someone you already know\nthere, asks you the one question no file can answer, researches named targets\nfrom public professional presence only when you know nobody, and drafts the ask\nin your voice. It grades each path by what that person could actually say about\nyour work, then records it in `job_search.md`, where the next assessment reads\nwhether that channel is open at all. It never sends anything.\n\n**It attacks what it just wrote.** A model asked whether its own draft is any\ngood will tell you yes, at length. So the builder does not ask. It hands the\nresume and the letter to seven reviewers, five of whom run in parallel and\ncannot see each other's findings, each given only what its role would really\nhave — the eleven-second screener is never shown the cover letter, because a\nscreener who read the letter is not one. The builder fixes what comes back and\nsends it through again. Round two has to hold before it will let you submit, and\nit stops at three rounds, because past that the gaps are structural and more\nediting is motion.\n\n**It writes what it learns back into you.** When a review says a section is thin,\nthe interview that follows usually finds the experience was real and you never\nwrote it down. That goes into the profile permanently. The conversion estimates\nget corrected against the outcomes you record. Your twentieth application starts\nfrom a better place than your first, which in every other tool is simply not\ntrue.\n\nWhat comes out is a verdict per channel — cold submission, warm referral, cold\noutreach, inbound from your public work — each with a probability range rather\nthan a verdict word, and with materials quality scored separately from expected\nvalue. \"1-3% interview\" is information. \"MAYBE\" is not. Excellent materials sent\nto a wrong-fit role still have low expected value, and those two numbers\nroutinely disagree.\n\n## What changes\n\nSame resume, same posting, same afternoon.\n\n### What a resume optimizer tells you\n\n> **Match score: 91%** ✅\n>\n> Great news — your resume is a strong match for this role!\n>\n> ✅ 14 of 16 required keywords found\n> ✅ ATS-friendly formatting detected\n> ⚠️ Consider adding: \"stakeholder alignment\", \"OKRs\"\n>\n> You're ready to apply!\n\n### What Slushpile tells you\n\n> **Pool position: p55.** Median applicant here has shipped at comparable scale\n> at a company the hiring manager recognizes. Your open-source work is real and\n> it is not rare in this pool — roughly a third of the p75 cohort has something\n> equivalent.\n>\n> **Cold submission: REJECT, 1-3%.** The years-of-experience dropdown on the\n> form gates at 8. You have 6 in the titled function.\n>\n> **Warm referral: MAYBE, 20-30%.** This is the only channel with a real path.\n>\n> **Materials quality: 8/10.** The materials are not the problem.\n>\n> **Contrarian:** SUBMIT_AS_PORTFOLIO_ONLY. Sending this cold spends an hour for\n> a 2% shot. Two hours finding a referral is worth more than ten more cold\n> applications.\n\nOne of these is a number about your document. The other is a decision about your\nafternoon.\n\n## The pipeline\n\n<!-- BEGIN GENERATED pipeline: scripts/sync_docs.py -->\n\n### The main pipeline\n\nThree commands, in order. A search runs on these alone.\n\n```\n/slushpile:onboard              once per workspace — builds your profile,\n                                preferences, and stories\n\n/slushpile:job-board-search     search a careers board, extract postings,\n                                score pool-anchored fit, contrarian gate,\n                                create role folders\n\n/slushpile:application-builder  build the resume and cover letter, then\n                                iterate them against the review until they\n                                stabilize\n```\n\n### The three dispatched for you\n\n`/slushpile:application-builder` dispatches `adversarial-review`,\n`explore-experience` and `removing-ai-tells`; `/slushpile:outreach` dispatches\n`removing-ai-tells`. Run one directly only to work on materials this pipeline\ndid not build — a resume written elsewhere, a letter drafted by hand.\n\n```\n/slushpile:explore-experience   interview to surface experience you have\n                                but never wrote down\n\n/slushpile:adversarial-review   seven agents, five in parallel, verdict\n                                per channel\n\n/slushpile:removing-ai-tells    strip AI-authorship signals from prose,\n                                with a gatekeeper on every change\n```\n\n### Any time\n\n```\n/slushpile:outreach             find who they already know at the company,\n                                grade the path, and draft the ask\n\n/slushpile:redesign-templates   restyle the resume and letter templates,\n                                holding the ATS constraints fixed\n\n/slushpile:status               the queue, what is waiting on you, and whether\n                                the pipeline's predictions are holding up\n\n/slushpile:help                 what to run next, and how to read the output\n```\n\n<!-- END GENERATED pipeline -->\n\n<!-- BEGIN GENERATED reviewers: scripts/sync_docs.py -->\n\n### The seven reviewers\n\n| Agent | Simulates |\n|---|---|\n| **Triage screener** | 11 seconds, F-pattern, 347 resumes already read today |\n| **Requirements analyst** | 30 seconds, methodical, checks every qualification against evidence |\n| **ATS simulator** | A parser. Not a reader. Structure, keywords, and years-of-experience math |\n| **Fatigued reader** | Application #61 of 80. What annoys, what gets skimmed, what closes the tab |\n| **Pool analyst** | A recruiter who knows what the queue actually looks like |\n| **Hiring manager** | The person who has to justify the interview slot to their skip-level |\n| **Contrarian** | Whoever should have asked whether any of this was worth doing |\n\nThe first five run in parallel and cannot see each other's work. The hiring\nmanager sees all five. The contrarian sees everything, including the hiring\nmanager, and can overrule it.\n\n<!-- END GENERATED reviewers -->\n\n## The manual\n\nThe rest of it lives in [docs/](docs/index.md):\n\n- [Getting started](docs/getting-started.md): what to gather before onboarding,\n  and what to install.\n- [Skills](docs/skills.md): every command, and when to run it.\n- [The workspace](docs/workspace.md): the files this writes into your directory.\n- [Your voice agent](docs/voice.md), [Troubleshooting](docs/troubleshooting.md).\n- [Architecture](docs/architecture/index.md): the diagrams, why the review is\n  shaped this way, and how scoring and calibration work.\n\n## Your cover letters need your voice\n\nAn eighth agent writes the cover letter. It writes in one specific person's\nstyle, built from a corpus of their own writing.\n\nslushpile ships **`aaddrick-voice`** as a working example so the pipeline runs\nout of the box. It is the plugin author's voice, not yours. Letters written with\nit will sound like a specific stranger — fine for seeing the pipeline work,\nwrong for anything you actually send.\n\nGenerate your own with\n**[written-voice-replication](https://github.com/aaddrick/written-voice-replication)**.\nIt analyzes a corpus of your writing across 25 dimensions and outputs a voice\nagent, a voice skill, and a numeric profile with measurable targets.\n`aaddrick-voice` is that pipeline's own worked example.\n\nThen point `preferences.yaml` at it:\n\n```yaml\nvoice:\n  agent: \"your-name-voice\"\n  is_mine: true\n```\n\nWhile `is_mine` is false, every skill that drafts prose warns you before it\nruns. That warning is the only thing standing between you and twelve\napplications sent in a stranger's voice.\n\n## Your data stays yours\n\n`/slushpile:onboard` writes three files into *your* directory: `profile.md`,\n`preferences.yaml`, and `stories.md`. Every personal fact the pipeline uses\nlives there. Nothing is hardcoded into the plugin, and the repository has a CI\ngate that fails if a personal fact leaks into a skill.\n\nThat workspace will contain your full employment history, your compensation\nfigures, and your constraints. Keep it in a **private** repository, or in no\nrepository at all. The onboarding skill will say this to you and it will not\ninitialize one for you.\n\n**The pipeline never submits anything.** No skill touches an application portal,\nan email, or a form. It writes files. You read them and you send them.\n\n## Honesty is the feature\n\nThis tool will tell you that a differentiator you are proud of is median. It\nwill tell you a role you want has a 2% conversion rate. It will occasionally\ntell you not to apply.\n\nThat is the product. A pipeline that grades most applications INTERVIEW and\nconverts 5% of them is not producing signal, it is producing optimism, and it\nwill keep doing that indefinitely because nothing in it ever pushes back. The\ncontrarian pass, the pool anchoring, and the per-channel probabilities all exist\nto make the output usable specifically when it says no.\n\nThere is a `Calibration` table in the workspace tracker for exactly this reason:\nyou record what the pipeline predicted and what actually happened, and the\npriors get corrected by your own history rather than by anyone's confidence.\n\n## Tune it\n\nThe ten skills and eight agents are Markdown. Fork, edit, install your copy:\n\n```bash\nclaude plugin uninstall slushpile\n```\n\n```bash\nclaude plugin marketplace remove slushpile\n```\n\n```bash\nclaude plugin marketplace add <your-username>/slushpile\n```\n\n```bash\nclaude plugin install slushpile@slushpile\n```\n\nIf you change a skill, run the gates before you push. See [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n",
  "bytes": 14473,
  "sha": "fbc4a7f239678c6e7e2898a08027c5ff547fe04e2e1b22a5ca345caad7b54fb6",
  "repo_slug": "vonterraproject501c3/slushpile",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_vonterraproject501c3_slushpile_cc29c828/readme"
}