Review and write technical RFP documents in formal, plain Chinese. Catches structural issues, redundancy, AI-isms, and vague language.
Review or draft technical RFP documents. Enforces clear structure, eliminates redundancy, and maintains formal plain-language style (Traditional Chinese).
Audit the document in this order. Fix issues top-down: structural problems first, then language.
Each section must sit under the parent that owns its concern. Common misplacements:
| Content | Wrong parent | Right parent |
|---|---|---|
| Artifact storage, security scanning | Core service | Deployment & release |
| Monitoring & auto-rollback | Service lifecycle |
| Observability |
| Canary deployment strategy | Service lifecycle | Deployment & release |
| Decommission / retirement flow | Service lifecycle | Operations |
Action: If a section's content belongs to 2+ other sections, it should not exist as a standalone section. Split and merge into the correct owners.
Before writing any requirement, check if it is already covered elsewhere:
Every requirement must address a real pain point. Ask:
If it's standard practice, delete it. Only keep domain-specific requirements that would not be met by the general process.
Infrastructure standard practice test: If a section could appear verbatim in any K8s/cloud platform RFP with zero modification (e.g., secret management, HA control plane, CPU sizing, backup/restore), it is infrastructure boilerplate, not a domain-specific requirement. Either delete it or move it to the infrastructure layer where it belongs — do not give it a standalone section in the application layer.
After editing a section, check that its content does not contradict design principles stated elsewhere in the document. Common violations:
Action: Grep for key terms (design principles, architecture choices) and verify all sections align.
An appendix earns its place only if it adds concrete, quantifiable information not already in the main body. Kill appendices where:
Action: Move any concrete numbers worth keeping into their parent sections, update all references, then delete the appendix.
A section with only 1-2 bullet points and no opening context explaining why it matters is a sign it does not justify standalone existence. Merge it into the nearest parent or sibling section as additional bullets or a short paragraph.
Test: If removing the section header and indenting its content under a neighbor loses zero information, the section should not exist independently.
A section earns its place by meeting both criteria:
Decision tree:
After any structural change (section move, delete, renumber):
grep the full document for the old section numberEvery bullet point must be a complete sentence that explains what and why. Reject:
BAD: - 持久卷(PV/PVC)
BAD: - HA(控制面與關鍵服務)
BAD: - 備份/還原(設定、資料、索引)
GOOD: - 所有儲存須透過 CSI 驅動掛載為持久卷(PV/PVC),不依賴節點本地磁碟。
GOOD: - 控制面與關鍵服務須部署為高可用架構,單節點故障不中斷服務。
Each section must open with 1-2 sentences explaining why this matters before listing requirements. The reader needs to understand the problem before reading the solution.
BAD:
#### 3.3.2 儲存
- PV/PVC 支援
- 高吞吐
- 分層儲存
GOOD:
#### 3.3.2 儲存
本平台的儲存需求與一般應用不同:核心檔案動輒數十 GB,索引需要持續高吞吐讀寫,稽核日誌須長期保留且不可竄改。
**需求:**
- 所有儲存須透過 CSI 驅動掛載...
| Pattern | Example | Fix |
|---|---|---|
| AI filler words | 確保、從而、旨在、進而、致力、賦能、全面地、有效地 | Rewrite directly. 確保 -> 使; delete filler entirely. |
| Chinese slash enumeration | 輸入/輸出、角色/權限/用途、熱/溫/冷 | Use 頓號:輸入、輸出;角色、權限、用途。English technical terms keep slash (see Allowed Patterns). |
| Summary table noise | 摘要表中用括號補充細節:核心服務(含快取機制) | 摘要表只寫項目名稱,細節留給對應章節。核心服務 即可。 |
| Contrarian structure | 不是 A 而是 B; 並非 A,而是 B | State B directly without negating A. |
| Hedging | 可能、若 (as uncertainty) | Use definitive language. 可能需要 -> 須; 若不大 -> delete the hedge. |
| Vague official-speak | 應審慎評估、有待觀察 | State the concrete criteria or action. |
| Noun-phrase bullets | C: A + B format; bold-colon shorthand | Write a full sentence. |
| "此外" as paragraph glue | 此外,大型模型... | Merge into the previous sentence or start a new paragraph without the connector. |
| Copula inflation | 作為、扮演著...的角色 | Use 是 or rewrite. Only flag when inflating a simple "is" relationship. |
| Significance inflation | 至關重要、不言而喻、眾所周知、不容忽視 | Delete or state concretely why it matters. |
| AI sentence templates | 在當今...的時代、隨著...的快速發展、值得一提的是、這不僅...更是... | Delete the frame; state the fact directly. |
| Synonym cycling | Rotating synonyms for the same concept within a paragraph (開發者...工程師...從業者...建構者) | Pick the clearest word and repeat it. |
| Superficial -ing analysis | 象徵著...的承諾、反映了...的投入、展現了...的決心 | State the specific fact or delete. |
| Formulaic challenge | 儘管面臨挑戰...仍持續成長 | Name the challenge and the response, or delete. |
| Pattern | Why it's fine |
|---|---|
| Em dashes for technical explanation | AWQ / GPTQ -- 將精度從 16-bit 降至 8-bit is standard in technical docs |
| Bold labels in requirement lists | **Identity**: each system has a unique ID... is standard RFP format |
| Bullet-heavy sections | RFPs are list-oriented documents by nature |
| "不是" for concept boundary | 管理粒度是資料集,不是租戶 is a factual boundary, not a contrarian structure |
| "作為" in factual role assignment | 以 X 作為 Y 引擎 is stating a technology choice, not copula inflation |
| "提升" in technical context | 用於提升排序品質 describes a component's function, not empty praise |
| 具體而言 as list intro | Acceptable when followed by concrete items; it is a list introducer, not filler |
| English term slashes | JWT / OAuth2, SSE / WebSocket, AWQ / GPTQ / INT8 — standard notation for alternative technologies |
| Structured uniformity | RFPs are inherently structured and uniform; do not break formatting conventions for the sake of "rhythm variation" |
**Requirements:** headerEdit PDFs with natural-language instructions using the nano-pdf CLI.