How the Quick Rejection Checklist Works in AI Berkshire: A Binary Hard-Stop Filter
The Quick Rejection Checklist (快速否决清单) is a binary hard-stop filter embedded in the /investment-checklist skill that immediately disqualifies companies triggering any of eight specific disqualifying conditions, embodying the principle "宁可错过,不可做错" (better to miss a good opportunity than to make a mistake).
The AI Berkshire project (xbtlin/ai-berkshire) implements a rigorous Buffett-style investment analysis workflow. Within this system, the Quick Rejection Checklist serves as the final gatekeeper, located at Step 5 of the six-gate "pre-buy" process defined in skills/investment-checklist.md.
What Is the Quick Rejection Checklist?
The Quick Rejection Checklist is a deliberately binary filter designed to eliminate unsuitable investment targets before they consume analytical resources. Located at lines 90–100 of skills/investment-checklist.md, this checklist operates as Step 5 in the /investment-checklist skill execution flow.
If any single item on the checklist evaluates to true, the company is immediately marked as 否决 (rejected). The workflow then jumps directly to the final output stage, bypassing further valuation or qualitative analysis. This hard-stop mechanism ensures that analysts avoid wasting time on data-poor or fundamentally flawed opportunities.
The Eight Disqualifying Conditions (快速否决清单)
The checklist consists of eight markdown-style task items. Each represents a hard-no rule that triggers immediate disqualification:
- 说不清楚这家公司怎么赚钱 – You cannot explain the company's business model clearly.
- 连续3年自由现金流为负且看不到改善 – Negative free cash flow for three consecutive years with no visible improvement trend.
- 管理层有诚信污点 – Management has documented integrity issues or credibility stains.
- 竞争优势正在被不可逆侵蚀 – Competitive advantages (moat) are being irreversibly eroded.
- 需要靠“下一个接盘者出更高价”来赚钱(博傻) – Profit depends on the "greater fool theory" (relying on a higher bidder).
- 无法承受这笔投资归零的后果 – You cannot afford the total loss of this investment.
- 买入理由主要是“别人都在买”或“最近涨得好” – Primary reason for buying is "everyone else is buying" or "recent price performance."
- 无法用200字以内写清楚买入理由 – You cannot articulate the investment thesis in under 200 characters.
Execution Flow and Implementation
When you invoke the /investment-checklist skill, the system executes a five-step pipeline:
- Input Parsing – The skill parses the string of company names or tickers.
- Data Collection – Agents gather required financial metrics and qualitative data.
- Six-Gate Checklist – Steps 3–4 run the standard Buffett pre-buy analysis gates.
- Step 5 – Quick Rejection – The system iterates over the eight disqualifying conditions. If any check evaluates true, the company is flagged as rejected.
- Output Generation – Rejected companies display the message:
❌ 未通过 Checklist – [reason].
The generated Codex artifact at codex-skills/investment-checklist/SKILL.md wraps this logic into the /investment-checklist command, while quantitative verification utilities reside in tools/financial_rigor.py.
Practical Usage Examples
Command Line Usage
Invoke the skill directly from a Claude Code session to screen multiple tickers:
/investment-checklist 腾讯, 茅台, 拼多多
If 拼多多 (PDD) fails the free cash flow rule, the output will contain:
❌ 未通过 Checklist – 连续3年自由现金流为负且看不到改善
Python Implementation
For custom pipelines, implement the rejection logic directly:
def quick_reject(company):
"""
Evaluates a company against the Quick Rejection Checklist.
Returns a list of failure reasons (empty if passed).
"""
reasons = []
if not company.can_explain_business:
reasons.append("说不清楚这家公司怎么赚钱")
if (company.free_cash_flow_last_3_years < 0 and
not company.fcff_trend_improving):
reasons.append("连续3年自由现金流为负且看不到改善")
if company.management_integrity_issues:
reasons.append("管理层有诚信污点")
if company.moat_eroding_irreversibly:
reasons.append("竞争优势正在被不可逆侵蚀")
# ... additional rules ...
return reasons
# Usage example
reject_reasons = quick_reject(pdd_data)
if reject_reasons:
print(f"❌ 未通过 Checklist – {'; '.join(reject_reasons)}")
Markdown Rendering
When generating investment reports, render the checklist as follows:
### 快速否决清单 (Quick Rejection Checklist)
- [ ] 说不清楚这家公司怎么赚钱
- [ ] 连续3年自由现金流为负且看不到改善
- [ ] 管理层有诚信污点
- [ ] 竞争优势正在被不可逆侵蚀
- [ ] 需要靠"下一个接盘者出更高价"来赚钱(博傻)
- [ ] 无法承受这笔投资归零的后果
- [ ] 买入理由主要是"别人都在买"或"最近涨得好"
- [ ] 无法用200字以内写清楚买入理由
Any checked box in this list automatically signals a hard rejection.
Design Philosophy and Source Files
The Quick Rejection Checklist operationalizes the AI Berkshire principle "宁可错过,不可做错" (better to miss than to make a mistake). By eliminating clearly unsuitable candidates early in the workflow, the system prevents cognitive bias and sunk-cost fallacies from influencing downstream analysis.
Key source files:
skills/investment-checklist.md– Contains the source definition of the full Buffett-style checklist, including the Quick Rejection section (lines 90–100).codex-skills/investment-checklist/SKILL.md– Generated Codex wrapper exposing the checklist as the/investment-checklistcommand.tools/financial_rigor.py– Provides quantitative verification utilities referenced by the checklist rules.README.md– Documents the/investment-checklistskill in the command table.
Summary
- The Quick Rejection Checklist is a binary filter at Step 5 of the AI Berkshire investment workflow.
- It contains eight hard-no rules (快速否决清单) that immediately disqualify companies if any condition is met.
- Located in
skills/investment-checklist.md(lines 90–100), it implements the "宁可错过,不可做错" principle. - Rejected companies display
❌ 未通过 Checklist – [reason]and bypass further analysis. - The checklist integrates with
tools/financial_rigor.pyfor quantitative validation.
Frequently Asked Questions
What happens when a company fails the Quick Rejection Checklist?
The company is immediately flagged as 否决 (rejected) and the workflow jumps to the final output stage. The system displays ❌ 未通过 Checklist – [specific reason] and skips all remaining valuation and qualitative analysis steps, preventing wasted computational and analytical resources.
Can I customize the rejection criteria?
Yes. The checklist is defined in skills/investment-checklist.md (lines 90–100) as a standard markdown task list. You can modify the eight disqualifying conditions in this source file, and the changes will propagate to the generated codex-skills/investment-checklist/SKILL.md wrapper upon regeneration.
How does the Quick Rejection Checklist relate to the six-gate Buffett process?
The six-gate Buffett pre-buy process (Steps 3–4) performs initial qualitative screening. The Quick Rejection Checklist operates as Step 5, serving as a final hard-stop filter that catches disqualifying factors the earlier gates might have missed. It is the last line of defense before committing to deep financial modeling.
Where does the quantitative data for the checklist come from?
The checklist relies on data collected during Step 2 of the skill execution, with quantitative verification utilities provided by tools/financial_rigor.py. This module supplies functions to calculate free cash flow trends, evaluate management integrity scores, and assess competitive moat stability referenced by the rejection rules.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →