agentsclimarketplace

Pitch deck evaluator

Skill thevibethinker/vibe-thinker-skills/pitch-deck-evaluator

Evaluate early-stage pitch decks across four investor credulity frames, stage-aware substantive rubric dimensions, optional named-POV reads, and markdown/JSON report rendering.From its SKILL.md

Install
npx -y skills add thevibethinker/vibe-thinker-skills --skill pitch-deck-evaluator

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.4 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it

Pitch Deck Evaluator

Purpose

pitch-deck-evaluator evaluates pre-seed, seed, and Series A pitch decks as fundraising artifacts. It reads the deck, applies rubric/rubric_v1.md, emits four frame-distinct substantive scorecards, preserves style/substance separation, and optionally adds source-inspired named-POV reads.

Entry script

python3 Skills/pitch-deck-evaluator/scripts/evaluate.py <deck_path> [--config Skills/pitch-deck-evaluator/config/default_config.yaml] [--out evaluation.md]

Inputs

  • PDF deck with a text layer.
  • Plain-text or markdown deck with one slide per delimited block (---, Slide N:, or ## Slide N).
  • Directory bundle containing deck.pdf, slides.md, slides.txt, or image files.
  • Image-only decks are detected but not scored in v1; the skill exits with image-only deck not supported in v1; OCR or text-layer required.
  • Optional YAML/JSON config that tunes the analytical lens, not the company-specific answer.

Outputs

  • Markdown evaluation report with:
    • header/config snapshot
    • executive read
    • score snapshot
    • F1-F4 frame scorecards
    • substantive composite
    • cross-frame synthesis
    • optional named-POV reads
    • per-slide annotations
    • prioritized action list
  • Optional JSON companion via --emit-json or --json-out.

Config schema

Default config lives at config/default_config.yaml:

stage: pre_seed
enabled_frames: [F1, F2, F3, F4]
enabled_pov_palette: []
substantive_weight_overrides: {}
stylistic_weight_overrides: {}
register_override: auto
output_verbosity: standard
include_action_list: true
include_advisory_overall: true
model: claude-sonnet-4-6
scoring_backend: auto
emit_json: false

Key fields:

  • stage: pre_seed, seed, or series_a; default pre_seed.
  • enabled_frames: non-empty subset of F1, F2, F3, F4; default all.
  • enabled_pov_palette: opt-in named lenses; default empty to avoid named-investor cosplay.
  • substantive_weight_overrides: per-dimension multipliers from 0 to 3.
  • output_verbosity: terse, standard, or deep.

Named-POV anti-cosplay rule

Every named-POV section is prefixed with this disclaimer:

Based on public writing/interviews, this lens emphasizes certain questions and heuristics. It is not a claim to know how any named person or firm would evaluate, invest in, or pass on this company.

Named POVs are contrast lenses only. The evaluator must never claim that a real investor would invest or pass.

Standalone mode

The skill has no N5 runtime dependency. To run outside N5:

git clone <vibe-thinker-skills-repo>
cd vibe-thinker-skills
python3 -m venv .venv
. .venv/bin/activate
pip install pdfplumber pyyaml
python3 Skills/pitch-deck-evaluator/scripts/evaluate.py /path/to/deck.pdf --out evaluation.md

For tests and fixture generation, install:

pip install pytest reportlab

Examples

Default PDF evaluation:

python3 Skills/pitch-deck-evaluator/scripts/evaluate.py ~/Downloads/deck.pdf --out deck-evaluation.md

Text-deck evaluation with JSON companion:

python3 Skills/pitch-deck-evaluator/scripts/evaluate.py slides.md --out evaluation.md --emit-json

POV palette read:

enabled_pov_palette: [hustle_fund_yin_bahn, naval_ravikant]
output_verbosity: deep

Dependencies

Required runtime:

  • Python 3.10+
  • pdfplumber
  • pyyaml

Test-only:

  • pytest
  • reportlab

The current v1 scorer defaults to a deterministic local heuristic backend, including when scoring_backend is auto. Use scoring_backend: anthropic explicitly to call the Anthropic Messages API with ANTHROPIC_API_KEY; CI and smoke tests never pay for model calls by default. The prompt boundaries and adapter protocols are present in frame_scorer.py and named_pov_scorer.py.

Script map

  • scripts/evaluate.py: CLI entry and pipeline wiring.
  • scripts/deck_reader.py: PDF/text/directory ingestion.
  • scripts/rubric_loader.py: markdown rubric parser and rubric_v1.json cache generator.
  • scripts/frame_scorer.py: frame-wise substantive scoring and stage-discipline handling.
  • scripts/named_pov_scorer.py: opt-in named-POV reads.
  • scripts/output_renderer.py: markdown/JSON renderer.

Failure modes

  • Missing path: non-zero exit with usage/error.
  • Unsupported type: non-zero exit listing supported inputs.
  • Empty or image-only PDF: non-zero exit with OCR/text-layer requirement.
  • Invalid config: field-level error.
  • Unknown POV: error with valid IDs.
  • Stylistic scorer missing: evaluation continues and marks style as not scored, because D4.2 owns that adapter.

D4.2 interface contract

If present on PYTHONPATH, scripts/evaluate.py imports:

from stylistic_scorer import score_stylistic

Expected signature:

def score_stylistic(slides: list[dict], config: dict) -> dict:
    return {
        "stylistic_dimensions": [...],
        "stylistic_composite": 3.4,
        "style_substance_gap": {...},
    }

D4.1 does not implement stylistic scoring.

What ships with it: 34 files

532.3 KB alongside SKILL.md, 18 of them executable

references/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.