Ditto for VC Customer Diligence
Validate startup opportunities by asking real-world personas about their problems, spending habits, and ideal solutions — without ever revealing the startup or VC context. Directly from the terminal.
Full documentation: https://askditto.io/claude-code-guide
The Golden Rule
Never reveal the VC context or name the startup in study questions.
Frame everything as neutral market research. The personas should tell YOU what they want — not react to what the startup claims. If a persona's "magic wand" answer matches the startup's value prop unprompted, that is genuine validation. If you lead them there, it is worthless.
This single constraint shapes every question in this skill.
What Ditto Does
Ditto maintains 300,000+ AI-powered synthetic personas calibrated to census data across USA, UK, Germany, and Canada. You ask them open-ended questions and get qualitative responses with the specificity of real interviews.
- 92% overlap with traditional focus groups (EY Americas validation)
- 95% correlation with traditional research
- Harvard/Cambridge/Stanford/Oxford peer-reviewed methodology
- A diligence study completes in 15-18 minutes (over-recruit + curate)
- Traditional customer diligence: 3-6 weeks, $15,000-40,000
Quick Start (Free Tier)
Get a free API key — no credit card, no sales call:
curl -sL https://app.askditto.io/scripts/free-tier-auth.sh | bash
Free keys (rk_free_): ~12 shared personas, no demographic filtering.
Paid keys (rk_live_): custom groups, demographic filtering, over-recruit.
API Essentials
Base URL: https://app.askditto.io
Auth header: Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
The Diligence Workflow (9 Steps)
This is NOT a standard study. The thesis-first approach and curation steps are what make diligence studies reliable. Do not skip steps.
Step 1: Research the Startup
Before touching the API, research:
- What the startup does (product, features, pricing)
- The pain point hypothesis (who has this problem?)
- The target customer (job title, industry, daily workflow)
- The competitive landscape (what exists today?)
- The market context (growing? shrinking? regulatory?)
Use web research, the startup's website, pitch deck, and any public info.
Step 2: Build a Thesis
Structure your thesis:
- Who experiences the pain: specific role, industry, company size
- The proposed solution: what the startup claims to fix
- Why it might work: evidence supporting the opportunity
- Why it might not: risks, competitive moats, adoption barriers
- Key assumptions to validate: 3-5 specific hypotheses for the study
Step 3: Get User Approval
STOP and present the thesis to the user before creating any study. The user must approve the direction, target audience, and key questions. This checkpoint prevents wasted studies and ensures alignment.
Step 4: Over-Recruit Your Panel
Recruit 15-20 personas with broader filters than the ideal target:
curl -s -X POST "https://app.askditto.io/v1/research-groups/recruit" \
-H "Authorization: Bearer $DITTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Auto Parts Professionals",
"group_size": 15,
"filters": {
"country": "USA",
"industry": ["Automotive Manufacturing"],
"age_min": 28,
"age_max": 60
}
}'
Save the uuid. Use group_size (not size), group uuid (not id).
Why over-recruit: Niche audiences often include tangential personas. Recruiting 15-20 and screening with Q1 produces a tighter panel than recruiting exactly 10.
Step 5: Create Study
curl -s -X POST "https://app.askditto.io/v1/research-studies" \
-H "Authorization: Bearer $DITTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "[Startup Name] Customer Validation Study",
"objective": "Validate the [painpoint] for [target customers]",
"research_group_uuid": "UUID_FROM_STEP_4"
}'
Save the study id. Response nests under data.study — access via
response["study"]["id"], NOT response["id"].
Step 6: Ask Q1 (Screening Question)
curl -s -X POST "https://app.askditto.io/v1/research-studies/STUDY_ID/questions" \
-H "Authorization: Bearer $DITTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"question": "In your current or past work, how often do you need to [do the task]? Walk me through what that process typically looks like."}'
Poll until complete (45-50s first poll, then 20s intervals — see Polling Strategy).
Step 7: Curate the Panel
Retrieve Q1 responses:
curl -s "https://app.askditto.io/v1/research-studies/STUDY_ID/questions" \
-H "Authorization: Bearer $DITTO_API_KEY"
Score each persona using Q1 response + agent_occupation + agent_summary:
| Score | Criteria | Action |
|---|---|---|
| HIGH | Job title directly matches target customer. Q1 shows specific, detailed experience. | Keep |
| MEDIUM | Related role or adjacent industry. Q1 mentions relevant experience. | Keep |
| LOW | Tangentially related. Q1 is vague or generic about the task. | Remove |
| NONE | Completely unrelated role. No relevant experience in Q1. | Remove |
Remove LOW and NONE personas from the study (not the group):
curl -s -X POST "https://app.askditto.io/v1/research-studies/STUDY_ID/agents/remove" \
-H "Authorization: Bearer $DITTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"agent_ids": [123, 456, 789]}'
CRITICAL:
agent_idsmust belist[int]— never strings or UUIDs- Use study-level removal (
/v1/research-studies/{id}/agents/remove), NOT group-level - Agents stay in the group for potential reuse in follow-up studies
- Keep minimum 8 personas (never below 6)
- Ideal curated panel: 8-12 personas with demographic diversity and 2-3 different roles
Step 8: Ask Q2-Q7 (Curated Panel)
Ask remaining questions one at a time. Poll to completion between each. Only the curated personas will respond.
Step 9: Complete and Extract Insights
curl -s -X POST "https://app.askditto.io/v1/research-studies/STUDY_ID/complete" \
-H "Authorization: Bearer $DITTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"force": false}'
Use "force": true to re-run analysis on an already-completed study (avoids 409).
Get share link (only if user requests it):
curl -s -X POST "https://app.askditto.io/v1/research-studies/STUDY_ID/share" \
-H "Authorization: Bearer $DITTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled": true}'
The Non-Leading Question Framework
These 7 questions are specifically designed for investment diligence. The startup is NEVER mentioned. Adapt the bracketed terms to the specific pain point and task being validated.
Q1 — Screening / Relevance (asked before curation)
"In your current or past work, how often do you need to [do the task]? Walk me through what that process typically looks like."
Purpose: Filter irrelevant personas + establish baseline behaviour. After responses: CURATE the panel before Q2.
Q2 — Pain Identification
"What is the most frustrating part of [task]? Tell me about a time when it was particularly painful."
Purpose: Capture emotional pain and specific stories, not abstract ratings.
Q3 — Quantify Impact
"Roughly how much time per week do you or your team spend on [task]? What is the cost of that time to your business?"
Purpose: Hard numbers for ROI calculations — this is what VCs want.
Q4 — Current Solutions
"What tools, websites, or methods do you currently use to [solve problem]? What works well? What does not?"
Purpose: Reveals competitive landscape and switching costs.
Q5 — Past Attempts
"Have you ever tried a new tool or system specifically to make [task] easier? What happened? Why