From laid off to landed. 从被裁,到上岸。

An open-source multi-agent war room that runs your job search like an operation. Use it in the browser, or self-host it and keep every byte on your own machine. 一套开源的多智能体求职作战系统——把找工作打成一场有章法的战役。打开浏览器就能用;也可以自部署,数据一个字节都不出你的电脑。

📦 Project项目 joblander — agents for sourcing, scoring, resumes, briefs & reports—— 扫机会、评分、简历、简报、战报的 Agent 班子
✅ Status状态 Battle won — ran a full search end to end; now open source and live as a hosted beta仗打完了 —— 完整跑完一整场求职;现已开源,云端内测版已上线
⭐ Code代码 github.com/Shuailong/joblander ↗ — Apache-2.0, 390+ tests, eval harness—— Apache-2.0,390+ 个测试,带评测
🔒 Data数据 Self-hosted: your workspace never leaves your machine. Hosted: an isolated, encrypted space per user — export or delete anytime自部署:工作区不出你的电脑。云端:每人一个隔离的加密空间——随时导出或彻底删除 privacy ↗隐私说明 ↗
☁️ Try it试用 app.ailayoff.me ↗ — sign in with Google, nothing to install (invite-only beta)—— Google 登录,什么都不用装(邀请制内测)
🌐 This domain这个域名 The story, the design notes, and where the code lives故事、设计笔记,以及代码在哪
💼 Author作者 LinkedIn ↗ — landed; happy to talk shop about agents & evals—— 已上岸;聊 Agent 与评测随时欢迎

I got laid off in July 2026. Instead of refreshing job boards at 2 a.m., I built my search a war room — agents that scout roles, score them honestly against my real track record, forge tailored resumes, and brief me before every interview.

2026 年 7 月,我被裁了。与其凌晨两点刷招聘网站,不如给求职建一间作战室——Agent 帮我扫岗位、对照真实履历诚实打分、锻造定制简历、每场面试前递上情报简报。

It ran my entire search. I start a new job this month. So the battle's won, and as promised — it's yours now.

它跑完了我整场求职。这个月我入职新公司。仗打完了,那就照约定——它现在是你的了。

ai·layoff·me — three words that read like bad news. This site is the reply.这三个词连起来像一条坏消息。这个网站,是我的回答。

Take it for a run.拿去跑跑看。

The hosted beta is invite-only for now. Need an invite, or just want to say hi?云端版目前是邀请制内测。想要邀请,或者只是想打个招呼? Email me →给我发邮件 →

Free either way. If it saved you a weekend,不管怎样它都免费。如果它帮你省下一个周末, ❤️ sponsor me❤️ 赞助我 or,或 ☕ buy me a coffee →☕ 请我一杯咖啡 →

✨What's inside系统亮点

Six rooms, one campaign.六个房间,一场战役。

Command Center指挥中心指挥中心Command Center

Open the door, know where you stand: the next four days of interviews, today's decisions, and a diary drafted from what actually happened — not what you wish had.

推门就知道战况:未来四天的场次、今天该拍板的事,以及一份从真实事件里长出来的日记草稿——不是愿望清单。

Leads新机会新机会Leads

Scans your inbox and job boards; paste any JD link and a scout agent parses it, scores fit against your achievement bank, and queues it for your yes or no.

扫邮箱、扫职位站;丢一条 JD 链接进来,侦察 Agent 解析岗位、对照你的弹药库打匹配分,排好队等你说要不要。

War Room作战室作战室War Room

Every company in play on one board — drag cards through stages, edit inline in table view, one dossier per company.

所有战线一张看板:拖卡片换阶段、表格原位编辑,每家公司一份档案。

Arsenal弹药库弹药库Arsenal

Your STAR stories are the single source of truth. A resume agent forges a per-company PDF from them — versioned, with bullets on exactly what changed and why.

STAR 素材是唯一事实源。简历 Agent 据此为每家公司锻造定制 PDF——版本化留档,附上「改了哪、为什么」。

Staff Office参谋部参谋部Staff Office

A capability radar against the JDs you actually target, morning briefs, daily and weekly reports — with a notes section that stays in your own hand.

对照目标 JD 的能力雷达,晨报、日报、周报——并且永远留一栏给你亲笔写的手记。

Drill Ground练兵场练兵场Drill Ground

Random algorithm problems with a built-in Python judge. Warm up your hands before the whiteboard does it for you.

随机算法题 + 内置 Python 判题器。白板考你之前,先自己热热手。

⚖️House rules四条规矩

The constraints are the product.这些约束本身就是产品。

Agents propose. You decide.Agent 只提案,人来拍板。

No message ever leaves for a real human on your behalf. Drafts, yes — the send button is yours. No auto-apply, ever.

任何发给真人的消息都不会替你发出。可以起草,发送键永远在你手里。绝不自动投递。

Everything is an event.万事皆事件。

Interviews, emails, transcripts, edits, decisions — each company is an append-only file you can audit later.

面试、邮件、转写、修改、决策——每家公司一份只增不删的档案,全程可回溯。

No inflated scores.反虚高。

Fit is measured against your actual track record, not wishful keywords. Where you're weak, it says weak — before the interviewer does.

匹配分对照你的真实履历打,不靠关键词自我感动。哪里是短板就标短板——赶在面试官指出来之前。

Your data, your call.数据放哪,你说了算。

Self-hosted, the workspace — resumes, transcripts, pipeline — lives outside the public repo on your machine and is never committed. Hosted, each user gets their own machine and encrypted disk, AI calls never train models, and Settings lets you export everything or delete it for good.

自部署时,工作区——简历、转写、pipeline——建在公开仓库之外、留在你本机,永不提交。用云端版时,每个用户有自己的机器和加密磁盘,AI 调用不用于训练模型,设置页里可以导出全部数据或彻底删除。

🧭Why this exists为什么做这个

Getting laid off hands you two problems: the search itself, and the shapeless days it comes wrapped in. A pipeline you can see beats an anxiety you can't. joblander gives the search edges — stages, files, briefs, reports — so each morning starts with what needs deciding, not where do I even look.

被裁塞给你两个难题:求职本身,和包裹着它的一段没有形状的日子。看得见的 pipeline,胜过看不见的焦虑。joblander 把求职做成一件有棱有角的事——阶段、档案、简报、战报——每个早晨从「今天要拍板什么」开始,而不是「我该从哪看起」。

There's a second bet. Its builder interviews for AI engineering roles, so the tool is built the way you'd build at work: a crew of agents, event-sourced state, proposal-and-approval flows, honest evals. The job search became the demo.

还有第二层打算。作者面的是 AI 工程岗,所以这套工具就按上班的标准造:多智能体分工、事件源状态、提案-批准流、诚实的评测。求职本身,成了最好的 demo。

The most convincing system is the one you built because you truly needed it. 最有说服力的作品,是你因为真的需要,而造出来的那一个。

🏗️The architecture架构

Events in, rules route, agents propose, a sentinel screens, you approve — and the approval is an event too.事件进,规则派工,Agent 提案,宪兵过检,你拍板——而批准本身,也是一条事件。

Ingestion · gateways only perceive感知层 · 只感知,不判断

📧 Gmail pollerGmail 轮询read-only, always永远只读 🎙️ Transcript inbox转写收件箱 📅 Calendar poller日历轮询 🗂️ Notion diff-pullNotion 差量回流tracker edits land as events追踪表改动落为事件 🕷️ Scraper / paste-in抓取 / 贴入 ⏰ Clock时钟daily & weekly ticks每日 · 每周定时
↓everything lands as an event first一切输入,先落事件

Orchestration core · deterministic, no LLM in control flow编排核心 · 纯代码控制流,LLM 不掌舵

🗄️ Event Logappend-only · single source of truth只增不删 · 唯一事实源 ⏱️ Daemon8 resident jobs · never nags, degrades quietly8 个常驻作业 · 永不催办 · 静默降级 🖱️ On-demand随手触发UI buttons & CLI · tracked tasks页面按钮与 CLI · 任务化追踪
↓dispatches stateless workers, context assembled per run派发无状态 worker——每次运行按需装配上下文

Capability layer · 7 domains — a new feature is a new workflow, never a new agent能力层 · 7 个能力域——新功能是新编排,不是新 Agent

🔭 Scoutsignals → scored leads · 3-tier dedup侦察 · 信号→评分线索 · 三级查重 🔎 Researcherone ReAct diligence loop — seeded or zero-input; every claim dated & cited尽调 ReAct 单循环——可喂料可零输入 · 证据带来源与日期 🧮 Analystpolicy-as-code: functions decide, LLM narrates军师 · 策略即代码——函数下判断,LLM 只转述 🗓️ Coordinatorslot rules · gap reconciliation · confirm-to-write调度 · 时段规则 · 排期对账 · 确认制写入 🎯 Prepcontext → ammo, per interview round参谋 · 上下文→弹药,按轮次定制Brief · deep-think简报 · 深思考Resume forge · ReAct简历锻造 · ReActCoach · chat教练 · 对话 ✍️ Scribeintake states facts, review judges — split on purpose书记 · 录入陈述事实,复盘才下判断 🔌 LLM runtimeLLM 运行时your own key · 3 model tiers · reasoning-effort dial自带 key · 模型三档 · 思考力度按需
↓artifacts & change proposals — no agent ever writes directly产物与变更提案——任何 Agent 都不许直接写
🛡️ Sentinel · the 7th domain, cross-cutting every exit第 7 个能力域 · 宪兵,横切一切出口 rules layer: auditable wordlists, unit-tested, seeded-violation P/R regression · judgment layer: an LLM checklist watching narrative drift across interviews — the writer never judges its own work规则层:可审计词表 + 播种违例 P/R 回归;判断层:LLM 按清单盯跨场次叙事漂移——写的人不能自己当裁判
↓screened proposals queue for review过检的提案,排队待批

The gate闸门

👤 YOU你 approve · edit · reject — every message to a human is sent by a human批准 · 修改 · 否决——发给真人的消息,永远由真人发出
↓approved writes only — and the approval is logged as an event批准了才写——审批记录本身也落为事件

Memory & outputs · local workspace记忆与产出 · 本地工作区

🗃️ Company files公司档案event-sourced, auditable事件源 · 可回溯 🎯 Profile & achievement bankProfile 与弹药库single source for every resume, versioned per company一切简历的唯一素材源 · 按公司版本化 📖 Playbooklessons feed the next brief上场的失分,进下场的简报 🧪 Evals评测golden sets · LLM-as-judge · an LLM-as-user walks the UI金标集 · LLM 当裁判 · 再派一个 LLM 扮用户走全站 🗂️ Notion & CalendarNotion 与日历written only after approval批准后才写回
↺Every run assembles its context from this memory — the next proposal carries the whole history.每一次运行都从这里装配上下文——下一个提案,带着全部历史。

Not a vision diagram — the loop above is the one that ran the author's own search, start to offer.这不是愿景图——上面这个循环,跑完了作者本人从开局到 offer 的整场求职。

🚀Run it yourself自己跑起来

Python 3.10+, dependencies kept thin, web UI server-rendered, bound to 127.0.0.1 only. Bring your own LLM key.

Python 3.10+,依赖极薄,Web UI 服务端渲染,默认只绑 127.0.0.1。自带 LLM key 即可。

git clone https://github.com/Shuailong/joblander.git
cd joblander
cp config.example.yaml config.yaml     # point it at your private workspace指向你的私有工作区
pip install -e .
joblander onboard                      # config health check + scaffold配置体检 + 建脚手架
joblander web                          # → http://127.0.0.1:8899

The workspace (resumes, transcripts, pipeline) is created outside the repo and never committed — see the Local-first rule above.工作区(简历、转写、pipeline)建在仓库之外、永不提交——见上面的 Local-first 规矩。

🗺️Roadmap路线图

Local web UI + CLI — all six rooms live本地 Web UI + CLI——六个房间全部可用
Agent crew: scout, assessor, interview-brief writer, resume customiserAgent 班子:侦察、评估、面试简报、简历定制
Integrations: Notion two-way tracker, Gmail (read-only), Calendar集成:Notion 双向追踪、Gmail(只读)、日历
Open-source release of the engine引擎开源发布— live on GitHub, Apache-2.0—— 已上 GitHub,Apache-2.0
Hosted beta — sign in with Google, nothing to install云端内测版——Google 登录,什么都不用装— app.ailayoff.me, invite-only—— app.ailayoff.me,邀请制
Guided onboarding: upload a resume, get an arsenal, guessed preferences and a first search引导式上手:传一份简历,自动建弹药库、猜求职偏好、先搜一轮
English UI — AI output follows the interface language英文界面——AI 生成内容跟随界面语言
Top-ups and subscriptions for heavier users重度用户的充值与订阅— the beta runs on a free credit per user—— 内测期每人一份免费额度

💬Questions常见问题

Will it apply to jobs for me?它会自动帮我投递吗?

No — by design. It scouts, scores, drafts and preps; submitting an application and sending a message stay human acts. Recruiters can smell automation, and your name deserves better. This rule is load-bearing.

不会,而且是刻意设计。它负责侦察、打分、起草、备战;提交申请和发出消息永远是人的动作。招聘方闻得出群发的味道,你的名字值得更好的对待。这条规矩是承重墙。

Is my data safe?我的数据安全吗?

Self-hosted: the repo ships code only. Everything personal lives in a separate local folder that git never sees. LLM calls go to whichever provider you configure with your own key — read their terms; nothing else leaves your machine.

自部署:仓库里只有代码。所有个人数据放在 git 看不见的独立本地目录。LLM 调用只发给你自己配置、自己掏 key 的服务商——记得读他们的条款;除此之外没有任何数据离开你的电脑。

Hosted beta: your data sits on a machine and encrypted disk of your own in Singapore; AI runs through the OpenAI API, which doesn't train on it; you can export everything or delete your account for good at any time. The full privacy notice spells out every processor.

云端内测版:你的数据在新加坡一台只属于你的机器和加密磁盘上;AI 经 OpenAI API 处理,不用于训练;随时可以导出全部数据或彻底删除账户。完整的隐私说明列明了每一个处理方。

I'm not an engineer. Can I use it?我不是工程师,能用吗?

Yes. Use the hosted beta at app.ailayoff.me: sign in with Google, upload an old resume, and it sets up the rest. It's invite-only for now — email me for an invite. Self-hosting still takes a terminal and a Python install.

能。用云端内测版 app.ailayoff.me:Google 登录、传一份旧简历,剩下的它来搭。目前邀请制——发邮件找我要邀请。自部署仍然需要会开终端、装 Python。

Why the name?为什么叫 ailayoff.me?

Read it three ways: ai·layoff·me, a plain bad-news sentence; "AI laid off me", the era we're in; or AI + layoff + me — the three ingredients this project is made of. The reply to all three readings is the same: land well, then leave the parachute for the next person.

三种读法:ai·layoff·me,一句平铺直叙的坏消息;"AI laid off me",我们正身处的时代;或者 AI + 被裁 + 我——这个项目的全部原料。三种读法的回答是同一个:好好落地,然后把降落伞留给下一个人。