Produce a pre-meeting investment memo on any startup pitch deck. SoMark first parses the deck into structured Markdown — preserving slide order, tables, and layout. The AI then runs targeted web searches to independently verify key claims and surface information the deck doesn't contain. The result is a concise internal memo an analyst would write before a partner meeting.
Pitch decks are visually dense: text floats over images, charts sit beside tables, multi-column layouts are common. SoMark recovers the true slide structure and reading order so no data point is missed.
Workflow: parse → research → memo.
Example requests:
Important: Before starting, tell the user that SoMark will parse the deck to recover its full slide structure and layout, ensuring no data point is missed regardless of the original design.
python pitch_screener.py \
-f <deck_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: pitch_screener.py in the same directory as this SKILL.md
Supported formats: .pdf .ppt .pptx .png .jpg .jpeg .bmp .tiff .webp .heic .heif .gif
--output-formats (Optional)This argument controls which parser outputs should be requested and saved.
If omitted, the default value is:
["markdown", "json"]
Supported values:
| Value | Description |
|---|---|
| ------------ | ---------------------------------------------- |
markdown | Save the parsed deck as a Markdown file |
json | Save the parsed deck as a JSON output |
Example:
--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:
{ "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:
| Key | Allowed values | Default |
|---|---|---|
| --------- | --------------------------- | ------- |
image | url, base64, none | url |
formula | latex, mathml, ascii | latex |
table | html, image, markdown | html |
cs | image | image |
Example:
--element-formats '{"image": "url", "table": "html"}'
--feature-config (Optional)This argument controls parser feature switches.
If omitted, the default value is:
{
"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:
| Key | Default | Description |
|---|---|---|
| -------------------------------- | ------- | ----------------------------------------- |
enable_text_cross_page | false | Merge text content across page boundaries |
enable_table_cross_page | false | Merge tables across page boundaries |
enable_title_level_recognition | false | Recognize heading and title levels |
enable_inline_image | true | Include inline image output |
enable_table_image | true | Include table image output |
enable_image_understanding | true | Enable image understanding features |
keep_header_footer | false | Preserve header and footer content |
Example:
--feature-config '{"enable_inline_image": true, "enable_table_image": true}'
.md — full deck in Markdown (slide-by-slide).json — JSON output (blocks with positions)parse_summary.json — metadata (file path, output paths, elapsed time)After the script finishes, read the generated Markdown fully before proceeding.
After reading the deck, extract the following entities and run web searches for each. Use whatever web search tool is available.
Run searches in the company's primary language and in English where relevant.
1. Company
[公司名] 融资 / [company name] funding[公司名] 新闻 / [company name] news[公司名] 裁员 OR 纠纷 OR 负面 / [company name] lawsuit OR layoff OR controversy2. Founders
[创始人姓名] [公司名] — verify role and background[founder name] LinkedIn or professional profile[创始人姓名] 之前创业 OR 上市公司 — prior companies, exits, track record3. Market validation
[行业] 市场规模 2024 / [industry] market size report4. Competitors
[product category] competitors / [细分市场] 竞争对手5. Red flags
[公司名] 诉讼 OR 投诉 OR 工商 — litigation, regulatory issues, complaints[创始人姓名] 负面 OR 失信 — founder reputation issuesStructure the output as follows. Every claim must be backed by specific evidence from the deck or from search results (note the source). Vague statements are not acceptable.
One short paragraph. Cover:
The core question: Are these the right people to solve this specific problem? Why them, why now?
Assess:
End with one sentence verdict: Strong / Adequate / Concern — and why.
> YC standard: Would you back these founders on a different idea in the same domain?
The core question: Is this a real, large, and growing market — and why is now the right time to enter?
Assess:
Flag if market size appears inflated (e.g., total industry revenue used as TAM).
The core question: What do they know or have that others don't?
Assess:
> Sequoia standard: Is there a secret here? An insight that explains why this hasn't been done before?
The core question: Is there evidence that real users or customers actually want this?
Extract and present key metrics directly from the deck. Use Not stated for any missing figure — do not estimate.
| Metric | Value |
|---|---|
| ------------------------------ | ----- |
| Revenue (ARR/MRR or total) | |
| Revenue growth (MoM or YoY) | |
| Customer / user count | |
| Key customer logos | |
| Retention / churn | |
| NPS or qualitative PMF signal | |
| Other stage-appropriate metric |
Assess whether traction is stage-appropriate. A pre-seed deck with no revenue is fine; a Series A deck with no retention data is not.
Flag cherry-picked metrics: absolute numbers without growth rate, or growth rate without absolute numbers.
The core question: Is there a clear, credible path from traction to a scalable business?
Assess:
If unit economics are not in the deck, note it as a key question for the meeting.
Summarize what web searches revealed — organized by category. Be explicit about what was found, what was not found, and what contradicts the deck.
Company: [findings]
Founders: [findings]
Market: [independent validation or contradiction of deck claims]
Competitors: [any material competitors the deck omitted]
Red flags: [any litigation, negative coverage, regulatory issues — or "Nothing found"]
List the top 3 reasons this deal could be a pass. Be direct — name the specific concern, not a generic category.
Format:
If a risk is addressable in a first meeting, note the specific question to ask.
End with a single verdict and one sentence of reasoning:
Do not default to 🟡 to be diplomatic. If the deal is strong, say 🟢. If there are real dealbreakers, say 🔴.
Output the memo with this header:
## Investment Memo — [Company Name]
Prepared: [today's date]
Stage: [stage from deck]
Ask: [funding ask] @ [implied valuation if stated]
Then the sections above in order.
Keep the full memo under 1,000 words where possible. An investor reading this should be able to decide in 5 minutes whether to take a meeting.
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:
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.共 1 个版本