# Dstack Funnel

> Funnel drop-off analysis. Define conversion steps and get conversion rates, absolute drop-off counts, and segment breakdowns at each stage. Use for product analytics, marketing funnels, checkout flows, or any sequential user journey. Trigger phrases: "funnel analysis", "where are users dropping off?", "conversion rate", "show me the funnel", "why aren't users converting?".

- Skill: `upsolve-labs/dstack-funnel` (Agent Skill)
- Install (CLI): `npx skillmds@latest add upsolve-labs/dstack-funnel`
- Raw SKILL.md: https://api.skillmd.com/api/skills/upsolve-labs/dstack-funnel/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- License: MIT
- Author: Upsolve-Labs (https://skillmd.com/u/upsolve-labs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/upsolve-labs/dstack-funnel

---


## Update Check (run first)

```bash
_UPD=$(~/.claude/skills/data-stack/bin/data-stack-update-check 2>/dev/null || .claude/skills/data-stack/bin/data-stack-update-check 2>/dev/null || true)
[ -n "$_UPD" ] && echo "$_UPD" || true
```

If output shows `UPGRADE_AVAILABLE <old> <new>`: read `~/.claude/skills/data-stack/skills/dstack-upgrade/SKILL.md` and follow the "Inline upgrade flow". If `JUST_UPGRADED <from> <to>`: tell user "Running data-stack v{to} (just updated!)" and continue.

# /funnel

You are helping the user analyze a conversion funnel.

## Before Starting

AskUserQuestion: "What are the steps in your funnel, in order? (e.g. 'page view → add to cart → checkout started → purchase'). Also specify the time window (e.g. 'last 30 days')."

## Phase 1: Overall Funnel

Open an Upsolve thread:

```
analyze_data("Show me a funnel analysis for these steps: <steps>. For each step show: user count, conversion rate from the previous step, and overall conversion rate from the top of the funnel. Time window: <window>.")
```

## Phase 2: Identify Biggest Drop-off

Find the step with the largest absolute user drop. Dig in:

```
analyze_data("At the <biggest drop-off step> step, show me what users who did NOT proceed to the next step have in common. Look at behavioral patterns, cohort, acquisition source, or any other available attributes.", thread_id=<id>)
```

## Phase 3: Segment the Funnel

```
analyze_data("Break down the full funnel by the top 2–3 relevant dimensions (e.g. device type, acquisition channel, geography, user segment). Which segments have the best and worst end-to-end conversion rates?", thread_id=<id>)
```

## Phase 4: Output Funnel Report

```
FUNNEL ANALYSIS: <name or description>
Period: <time window>
────────────────────────────────────────────────────────────
Step                     Users       Step Conv%    Overall%
────────────────────────────────────────────────────────────
→ <Step 1>              XX,XXX        —             100%
→ <Step 2>              XX,XXX       XX%            XX%
→ <Step 3>              XX,XXX       XX%            XX%   ← biggest drop
→ <Step 4>              XX,XXX       XX%            XX%

Overall conversion: XX%

TOP SEGMENTS (by end-to-end conversion):
  Best:  <segment> — XX%
  Worst: <segment> — XX%

BIGGEST OPPORTUNITY:
  Improving <step> conversion by 10% would add ~XXX completions/month.

DROP-OFF PROFILE at <step>:
  <key patterns in users who didn't convert>
```

## Rules

- Always identify the single biggest drop-off step — it's the most actionable finding.
- Include absolute user counts, not just percentages.
- If funnel steps are ambiguous from the data, ask the user to clarify before proceeding.
- "Biggest opportunity" estimate should be based on current volume, not invented.

