Skip to content

Instantly share code, notes, and snippets.

@johnjosephhorton
Created July 11, 2025 16:00
Show Gist options
  • Save johnjosephhorton/b1173245af399e408f4c79bc00d5539c to your computer and use it in GitHub Desktop.
Save johnjosephhorton/b1173245af399e408f4c79bc00d5539c to your computer and use it in GitHub Desktop.
Implement a startup scoring system
from edsl import (
QuestionLinearScale,
ScenarioList,
Scenario,
Scenario,
Survey,
QuestionCompute,
)
q1 = QuestionLinearScale(
question_name="exceptional_achievement",
question_text="What exceptional achievements do the founders have? : {{ scenario.startup_description}}",
question_options=[0, 4, 8, 11, 15],
option_labels={
0: "No notable achievements or recognition",
4: "Local awards, small grants, or minor recognition",
8: "National recognition, significant academic achievements, or industry awards",
11: "International recognition, prestigious fellowships (Thiel, Y Combinator)",
15: "MacArthur genius grant, Nobel laureate, founded unicorn company, Olympic medalist",
},
)
q2 = QuestionLinearScale(
question_name="market_timing_and_tailwinds",
question_text="How favorable is the market timing and what tailwinds exist? : {{ scenario.startup_description}}",
question_options=[0, 3, 5, 8, 10],
option_labels={
0: "Market declining, regulatory headwinds, no adoption catalysts",
3: "Stable but slow-growth market, neutral regulatory environment",
5: "Growing market, some positive trends, early adoption signals",
8: "Rapidly growing market, strong tailwinds, regulatory support emerging",
10: "Perfect timing - major catalysts converging (COVID for remote work, AI moment)",
},
)
q3 = QuestionLinearScale(
question_name="revenue_pilots",
question_text="What is the current revenue and pilot status? : {{ scenario.startup_description}}",
question_options=[0, 2, 4, 6, 8],
option_labels={
0: "No revenue, no pilots, no customer interest",
2: "Early conversations, LOIs but no paid pilots",
4: "1-3 paid pilots, <$100k ARR",
6: "$100k-$1M ARR, 5+ customers, strong pipeline",
8: "$1M+ ARR, 20+ customers, 100%+ growth rate",
},
)
q4 = QuestionLinearScale(
question_name="technical_moat",
question_text="How strong is the technical moat and defensibility? : {{ scenario.startup_description}}",
question_options=[0, 2, 3, 5, 6],
option_labels={
0: "No differentiation, easily replicable",
2: "Some proprietary technology but limited defensibility",
3: "Strong proprietary tech OR meaningful network effects emerging",
5: "Multiple patents, strong network effects, high switching costs",
6: "Foundational patents, winner-take-all network effects, impossible to replicate",
},
)
q5 = QuestionCompute(
question_name="total_score",
question_text="""{% set numbers = [exceptional_achievement.answer, technical_moat.answer, revenue_pilots.answer, market_timing_and_tailwinds.answer] %}
{{ numbers | sum }}
""",
)
startups = ScenarioList(
[
Scenario(
{
"startup_name": "Goofus",
"startup_description": """A startup that makes a new kind of dog collar.
Both founders just graduated from high school (barely). No patents. No revenue. No customers. Pet ownership is declining.""",
}
),
Scenario(
{
"startup_name": "Gallant",
"startup_description": """A startup that makes a new kind of dog collar.
Both are have 20 years of experience in the dog collar industry and are veternarians.
Their previous startup, CatCo, which made a new kind of cat collar, was sold to a major pet supply company for $100M.
Have a design parnerbship with PetSmart. Patents pending.
""",
}
),
]
)
results = Survey([q1, q2, q3, q4, q5]).by(startups).run(disable_remote_inference=True)
print(results.select("startup_name", "answer.*").table().flip())
@johnjosephhorton
Copy link
Author

This generates:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓
┃ column                             ┃ 0      ┃ 1       ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩
│ scenario.startup_name              │ Goofus │ Gallant │
├────────────────────────────────────┼────────┼─────────┤
│ answer.exceptional_achievement     │ 0      │ 8       │
├────────────────────────────────────┼────────┼─────────┤
│ answer.market_timing_and_tailwinds │ 0      │ 5       │
├────────────────────────────────────┼────────┼─────────┤
│ answer.revenue_pilots              │ 0      │ 2       │
├────────────────────────────────────┼────────┼─────────┤
│ answer.technical_moat              │ 0      │ 2       │
├────────────────────────────────────┼────────┼─────────┤
│ answer.total_score                 │ 0      │ 17      │
└────────────────────────────────────┴────────┴─────────┘

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment