Extract every critical requirement from a tender document — without missing buried clauses. SoMark first parses the procurement file into high-fidelity Markdown, preserving tables, numbered clause hierarchies, and appendix structures. The AI then systematically extracts qualification thresholds, scoring rubrics, submission requirements, and red-flag terms.
Tender documents are among the most structurally complex documents in existence: multi-level numbered clauses, scoring tables, technical specification grids, and scanned annexes. Missing a single mandatory requirement can disqualify a bid. SoMark recovers the full structure so nothing is missed.
In short: parse with SoMark first, then extract and analyze.
Example requests:
Important: Before starting, tell the user that SoMark will parse the document to recover its full clause hierarchy, tables, and appendices — ensuring no requirement is missed due to complex formatting.
bash
python tender_analyzer.py \
-f <tender_file> \
-o <output_dir> \
--output-formats '["markdown", "json"]' \
--element-formats '{"image": "url", "formula": "latex", "table": "html", "cs": "image"}' \
--feature-config '{"enable_text_cross_page": false, "enable_table_cross_page": false, "enable_title_level_recognition": false, "enable_inline_image": true, "enable_table_image": true, "enable_image_understanding": true, "keep_header_footer": false}'
Script location: tender_analyzer.py in the same directory as this SKILL.md
Supported formats: .pdf .png .jpg .jpeg .bmp .tiff .webp .heic .heif .gif .doc .docx
--output-formats (Optional)This argument controls which parser outputs should be requested and saved.
If omitted, the default value is:
json
["markdown", "json"]
Supported values:
ValueDescriptionmarkdownSave the parsed tender document as a Markdown filejsonSave the parsed tender document as a JSON output
Example:
bash
--output-formats '["markdown", "json"]'
--element-formats (Optional)This argument controls how specific element types are rendered in the parser output.
If omitted, the default value is:
json
{"image": "url", "formula": "latex", "table": "html", "cs": "image"}
If you provide this argument, you may pass a partial JSON object. Any omitted keys continue using the default values.
Supported keys, allowed values, and defaults:
KeyAllowed valuesDefaultimage``url, base64, none``url``formula``latex, mathml, ascii``latex``table``html, image, markdown``html``cs``image``image
Example:
bash
--element-formats '{"image": "url", "table": "html"}'
--feature-config (Optional)This argument controls parser feature switches.
If omitted, the default value is:
json
{
"enable_text_cross_page": false,
"enable_table_cross_page": false,
"enable_title_level_recognition": false,
"enable_inline_image": true,
"enable_table_image": true,
"enable_image_understanding": true,
"keep_header_footer": false
}
If you provide this argument, you may pass a partial JSON object. Any omitted keys continue using the default values. All values must be boolean ( true or false).
Supported keys and defaults:
KeyDefaultDescriptionenable_text_cross_page``falseMerge text content across page boundariesenable_table_cross_page``falseMerge tables across page boundariesenable_title_level_recognition``falseRecognize heading and title levelsenable_inline_image``trueInclude inline image outputenable_table_image``trueInclude table image outputenable_image_understanding``trueEnable image understanding featureskeep_header_footer``falsePreserve header and footer content
Example:
bash
--feature-config '{"enable_inline_image": true, "enable_table_image": true}'
<filename>.md — full document in Markdown (preserves clause structure)<filename>.json — JSON output (blocks with positions)parse_summary.json — metadata (file path, output paths, elapsed time)After the script finishes, read the generated Markdown and perform a structured extraction across these dimensions:
项目内容招标方项目名称项目编号采购类型(货物/服务/工程)预算金额合同期限发布日期投标截止时间开标时间交付/完工期限
List all mandatory qualification thresholds. Mark each as 硬性要求(不满足直接否决)or 加分项:
Extract the complete scoring table:
评分项分值评分说明技术分/XX商务分/XX价格分/XX合计100
Break down sub-items within each category where available.
Generate a actionable checklist of everything the bidder must prepare and submit:
List all dates and deadlines in chronological order.
List all conditions that result in automatic disqualification or bid rejection.
Structure the output as:
text
## 招标分析报告
### 项目概览
[overview table]
### 资质要求
[硬性要求 list, then 加分项 list]
### 评分标准
[scoring table with sub-items]
### 投标文件清单
[checkbox checklist]
### 关键时间节点
[chronological list]
### 否决条款
[numbered list]
### 联系方式与递交说明
[contact and submission details]
### 投标建议
[2-3 actionable recommendations: where to focus effort, risks, competitive strategy notes]
If the user has not configured an API key:
Step 1: Ask whether SOMARK_API_KEY is already set — do not ask for the key in chat.
Step 2: Direct them to https://somark.tech/login, open "API Workbench" → "APIKey", and create a key in the format sk-******.
Step 3: Ask them to run:
bash
export SOMARK_API_KEY=your_key_here
Step 4: Mention free quota is available at https://somark.tech/workbench/purchase.
1107 / Invalid API Key: ask the user to verify SOMARK_API_KEY.2000 / Invalid parameters: check file path and format.--output-formats, --element-formats, or --feature-config: ask the user to provide valid JSON syntax.markdown, json.image, formula, table, and cs.feature-config values must be booleans.