Seed investment decision
A seed fund reviews an applied-AI company, plans diligence, and drafts a recommendation for its investment committee. Customer reference calls then change the biggest risk, and the recommendation changes with it.
The problem
A partner at a seed fund is evaluating Tidewell, an AI agent that prepares and follows up dental insurance claims. The partner has notes on the team and the traction, a fund policy on check size, ownership, and valuation, and a committee meeting on Monday. The evidence arrives during the week: reference calls land after the first recommendation is drafted.
A good process shows what each recommendation was based on, and updates it when the evidence changes without losing the earlier reasoning. That's what a committee memo, a partner review, or a post-mortem two years later needs.
Tidewell, its founders, its metrics, and the fund policy are fictional.
What we will do
We keep team, traction, and fund policy in separate sessions. We blend team and traction to plan diligence, then blend the plan with the fund policy to draft the recommendation. When the reference calls come in, we add them to the traction session and rebuild the diligence plan and the recommendation from the updated history. Finally, we try a repriced round without saving it.
Before you start
Configure a provider and model, then run the commands in order in the same shell. Nouli reads credentials from your shell or the .env in your current directory. Each decision calls your configured provider and may cost money.
The outputs below were recorded with typesafe/jev-1.14.0. Your probabilities, session IDs, and answers may differ.
Set a session prefix for this walkthrough. Change it before running the walkthrough again, so the new sessions get unique names:
example=seed
Open the first session with nouli open team, then type each step's lines at the prompt. A question sends the turn.
01Review the founding team
Record the founders' backgrounds in their own session. A choice question names the shape of the team instead of rating it.
$ nouli open team
new session "team" · /help for commands
team › Fictional company Tidewell builds an AI agent that prepares and follows up dental insurance claims for independent practices. Maya Ortiz, CEO, ran billing for a 12-location dental group for six years. Dev Patel, CTO, spent four years on document-understanding models at a large cloud provider and has shipped two production ML systems. Both founders work full time. There is no sales hire yet.
team › ?team: How complete is the founding team for this market? ["Strong product and technology fit, with a gap in sales leadership", "Complete team, including proven sales leadership", Missing skills the company needs to build the product]
turn 1 · 1 fact · 1 question
team ▶ Strong product and technology f… ███████████████████▊ 0.99
Complete team, including proven… 0.00
Missing skills the company need… ▎ 0.01
nouli --format text new "$example-team" \
'Fictional company Tidewell builds an AI agent that prepares and follows up dental insurance claims for independent practices. Maya Ortiz, CEO, ran billing for a 12-location dental group for six years. Dev Patel, CTO, spent four years on document-understanding models at a large cloud provider and has shipped two production ML systems. Both founders work full time. There is no sales hire yet.' \
-q 'team: How complete is the founding team for this market? ["Strong product and technology fit, with a gap in sales leadership",
"Complete team, including proven sales leadership",
Missing skills the company needs to build the product]'
Output
turn 1 · 1 fact · 1 question
team ▶ Strong product and technology f… ███████████████████▊ 0.99
Complete team, including proven… 0.00
Missing skills the company need… ▎ 0.01
typesafe/jev-1.14.0 · session 01a1878e-1d64-705c-bf8c-d55600a85348 · turn 01a1878e-1d66-723e-a5de-3595ff4cd054
The model sees strong product and technology coverage with a gap in sales leadership (0.99). That gap matters later: every customer so far came through the CEO's network.
02Review traction
Record traction in a separate session, including where the customers came from.
team › /new traction
new session "traction"
traction › Tidewell metrics at month 10: 9 of 12 pilot practices converted to paid plans, monthly recurring revenue is $14,200, and no paying practice has cancelled. Practices collect insurance claims 11 days faster on average. All 9 customers came from the CEO'\''s professional network. Tidewell has not yet tried outbound sales.
traction › ?traction: What does the traction show? [An early product-market signal that sales beyond the founders' network have not yet tested, Repeatable sales across unrelated customers, Too little evidence of demand]
turn 1 · 1 fact · 1 question
traction ▶ An early product-market signal … ████████████████████ 1.00
Repeatable sales across unrelat… 0.00
Too little evidence of demand 0.00
nouli --format text new "$example-traction" \
'Tidewell metrics at month 10: 9 of 12 pilot practices converted to paid plans, monthly recurring revenue is $14,200, and no paying practice has cancelled. Practices collect insurance claims 11 days faster on average. All 9 customers came from the CEO'\''\'\'''\''s professional network. Tidewell has not yet tried outbound sales.' \
-q "traction: What does the traction show? [An early product-market signal that sales beyond the founders' network have not yet tested,
Repeatable sales across unrelated customers,
Too little evidence of demand]"
Output
turn 1 · 1 fact · 1 question
traction ▶ An early product-market signal … ████████████████████ 1.00
Repeatable sales across unrelat… 0.00
Too little evidence of demand 0.00
typesafe/jev-1.14.0 · session 01a1878e-1d6d-72ab-bd17-c56eda6ca143 · turn 01a1878e-1d6f-7711-a6c2-7d6178334b0c
Nine paid practices and no cancellations read as an early signal, not repeatable sales (P=1), because no customer came from outside the founders' network.
03Record the fund policy and round terms
Record the fund's rules and the round terms in a third session. Every recommendation that follows reuses this history.
traction › /new fund
new session "fund"
fund › Illustrative fund policy: a $40M seed fund investing in applied AI companies. Initial checks range from $500,000 to $1,500,000, with a target of at least 8% ownership at entry. The fund does not invest in rounds priced above a $20M post-money valuation. Tidewell is raising $3M at a $15M post-money valuation. A $1.2M check buys 8%; a $1M check buys 6.7%.
fund › ?check: Which check fits the fund policy for this round? [Request $1.2M for 8% ownership, Request $1M for 6.7% ownership, The round falls outside the fund policy]
turn 1 · 1 fact · 1 question
check ▶ Request $1.2M for 8% ownership ████████████████████ 1.00
Request $1M for 6.7% ownership 0.00
The round falls outside the fun… 0.00
nouli --format text new "$example-fund" \
'Illustrative fund policy: a $40M seed fund investing in applied AI companies. Initial checks range from $500,000 to $1,500,000, with a target of at least 8% ownership at entry. The fund does not invest in rounds priced above a $20M post-money valuation. Tidewell is raising $3M at a $15M post-money valuation. A $1.2M check buys 8%; a $1M check buys 6.7%.' \
-q 'check: Which check fits the fund policy for this round? [Request $1.2M for 8% ownership,
Request $1M for 6.7% ownership,
The round falls outside the fund policy]'
Output
turn 1 · 1 fact · 1 question
check ▶ Request $1.2M for 8% ownership ████████████████████ 1.00
Request $1M for 6.7% ownership 0.00
The round falls outside the fun… 0.00
typesafe/jev-1.14.0 · session 01a1878e-1d76-72c6-afe4-5dba66dda816 · turn 01a1878e-1d78-71c3-9540-a4f114096d26
The model picks the $1.2M check, the one that meets the 8% ownership target (1.00). A $1M check would fall short.
04Plan diligence from team and traction
Blend team and traction to choose what diligence should test first. The fund policy isn't needed for that.
fund › /blend team traction as diligence
new session "diligence" from team + traction · no standing questions
diligence › Plan the week of diligence before the investment committee. Start with the largest unresolved risk in the team and traction records.
diligence › ?diligence: What should diligence test first? [Call practices outside the founders' network about retention and switching risk, Review the claim-preparation model's accuracy and error handling, Assess the founders' plan to hire a first sales lead]
turn 1 · 1 fact · 1 question
diligence ▶ Call practices outside the foun… ███████████████▎ 0.76
Review the claim-preparation mo… 0.00
Assess the founders' plan to hi… ████▊ 0.24
nouli --format text new "$example-diligence" --from "$example-team" --from "$example-traction" \
'Plan the week of diligence before the investment committee. Start with the largest unresolved risk in the team and traction records.' \
-q "diligence: What should diligence test first? [Call practices outside the founders' network about retention and switching risk,
Review the claim-preparation model's accuracy and error handling,
Assess the founders' plan to hire a first sales lead]"
Output
turn 1 · 1 fact · 1 question
diligence ▶ Call practices outside the foun… ███████████████▎ 0.76
Review the claim-preparation mo… 0.00
Assess the founders' plan to hi… ████▊ 0.24
typesafe/jev-1.14.0 · session 01a1878e-1d7f-73a6-9a59-6b7574aaab3d · turn 01a1878e-1d82-7747-b517-75222e4ab197
Reference calls come first (0.76), with sales hiring second (0.24). Both point at the same gap: nobody has sold Tidewell to a stranger yet.
05Draft the investment committee recommendation
Blend the diligence plan with the fund policy to draft the recommendation for Monday's committee.
diligence › /blend diligence fund as ic
new session "ic" from diligence + fund · no standing questions
ic › Prepare a recommendation for Monday'\''s investment committee. It must respect the fund policy and name any diligence that is still open.
ic › ?recommendation: What should the partner recommend to the investment committee? ["Invest $1.2M, conditional on completing the planned diligence", Invest $1.2M now without further diligence, Pass on the round]
turn 1 · 1 fact · 1 question
recommenda… ▶ Invest $1.2M, conditional on co… ███████████████████▋ 0.98
Invest $1.2M now without furthe… 0.00
Pass on the round ▍ 0.02
nouli --format text new "$example-ic" --from "$example-diligence" --from "$example-fund" \
'Prepare a recommendation for Monday'\''\'\'''\''s investment committee. It must respect the fund policy and name any diligence that is still open.' \
-q 'recommendation: What should the partner recommend to the investment committee? ["Invest $1.2M, conditional on completing the planned diligence",
Invest $1.2M now without further diligence,
Pass on the round]'
Output
turn 1 · 1 fact · 1 question
recommenda… ▶ Invest $1.2M, conditional on co… ███████████████████▋ 0.98
Invest $1.2M now without furthe… 0.00
Pass on the round ▍ 0.02
typesafe/jev-1.14.0 · session 01a1878e-1d8a-727e-b8e5-9b5b179b5a00 · turn 01a1878e-1d8d-7315-bc8b-e58da685bf27
The model recommends investing $1.2M once the planned reference calls are done (0.98). It names the open diligence instead of skipping it, as the fund policy asks.
06Add the reference calls
The reference calls come back mid-week. Add them to the traction session as its second turn; the first turn stays in its history. The new question replaces the old one with --drop traction.
ic › /use traction
traction · 1 standing question
traction › /drop traction
queued: drop traction
traction › Reference call update: the partner spoke with 4 practices outside the founders'\'' network that trialed Tidewell. Two signed paid plans and report faster collections. Two declined because their practice-management software vendor announced a built-in claims assistant for next quarter.
traction › ?risk: What is now the biggest risk to Tidewell's growth? [A practice-management vendor bundling a competing feature, Weak demand for faster claims collection, The founders' ability to build the product]
turn 2 · 1 fact · 1 question
risk ▶ A practice-management vendor bu… ███████████████████▊ 0.99
Weak demand for faster claims c… ▎ 0.01
The founders' ability to build … 0.00
nouli --format text add "$example-traction" \
'Reference call update: the partner spoke with 4 practices outside the founders'\''\'\'''\'' network that trialed Tidewell. Two signed paid plans and report faster collections. Two declined because their practice-management software vendor announced a built-in claims assistant for next quarter.' \
-q "risk: What is now the biggest risk to Tidewell's growth? [A practice-management vendor bundling a competing feature,
Weak demand for faster claims collection,
The founders' ability to build the product]" \
--drop traction
Output
turn 2 · 1 fact · 1 question
risk ▶ A practice-management vendor bu… ███████████████████▊ 0.99
Weak demand for faster claims c… ▎ 0.01
The founders' ability to build … 0.00
typesafe/jev-1.14.0 · session 01a1878e-1d6d-72ab-bd17-c56eda6ca143 · turn 01a1878e-1d97-72b3-ae96-966863f255e7
Two of the four outside practices bought. The other two declined because their software vendor plans a built-in assistant. The model now names platform bundling as the biggest risk (0.99), something the first traction turn couldn't show.
07Replan diligence with the updated traction
Blend the team with the updated traction. The earlier diligence session doesn't change; this is a new plan from the new history.
traction › /blend team traction as diligence-updated
new session "diligence-updated" from team + traction · no standing questions
diligence-updated › Plan the remaining diligence before the investment committee. Use the latest traction record, including the reference calls.
diligence-updated › ?diligence: What should diligence test first? [Test whether practices would keep Tidewell if their software vendor bundles a claims assistant, Review the claim-preparation model's accuracy and error handling, Assess the founders' plan to hire a first sales lead]
turn 1 · 1 fact · 1 question
diligence ▶ Test whether practices would ke… ████████████████████ 1.00
Review the claim-preparation mo… 0.00
Assess the founders' plan to hi… 0.00
nouli --format text new "$example-diligence-updated" --from "$example-team" --from "$example-traction" \
'Plan the remaining diligence before the investment committee. Use the latest traction record, including the reference calls.' \
-q "diligence: What should diligence test first? [Test whether practices would keep Tidewell if their software vendor bundles a claims assistant,
Review the claim-preparation model's accuracy and error handling,
Assess the founders' plan to hire a first sales lead]"
Output
turn 1 · 1 fact · 1 question
diligence ▶ Test whether practices would ke… ████████████████████ 1.00
Review the claim-preparation mo… 0.00
Assess the founders' plan to hi… 0.00
typesafe/jev-1.14.0 · session 01a1878e-1d9f-77b0-9882-4e1901c6ffa6 · turn 01a1878e-1da2-7420-bddc-60bd42f1282a
Diligence moves from reference calls, which are done, to the bundling risk (1.00).
08Reconsider the recommendation
Blend the new diligence plan with the same fund policy.
diligence-updated › /blend diligence-updated fund as ic-updated
new session "ic-updated" from diligence-updated + fund · no standing questions
ic-updated › Prepare the recommendation for Monday'\''s investment committee. It must respect the fund policy and use the latest diligence record.
ic-updated › ?recommendation: What should the partner recommend to the investment committee? [Invest $1.2M with a milestone: win two practices whose software vendor bundles a claims assistant, Invest $1.2M now on the current evidence, "Invest $500,000 to hold a smaller position while the platform risk plays out", Pass until Tidewell shows it can win against the bundled feature]
turn 1 · 1 fact · 1 question
recommenda… ▶ Invest $1.2M with a milestone: … █████████████████▊ 0.89
Invest $1.2M now on the current… ▋ 0.03
Invest $500,000 to hold a small… 0.00
Pass until Tidewell shows it ca… █▋ 0.08
nouli --format text new "$example-ic-updated" --from "$example-diligence-updated" --from "$example-fund" \
'Prepare the recommendation for Monday'\''\'\'''\''s investment committee. It must respect the fund policy and use the latest diligence record.' \
-q 'recommendation: What should the partner recommend to the investment committee? [Invest $1.2M with a milestone: win two practices whose software vendor bundles a claims assistant,
Invest $1.2M now on the current evidence,
"Invest $500,000 to hold a smaller position while the platform risk plays out",
Pass until Tidewell shows it can win against the bundled feature]'
Output
turn 1 · 1 fact · 1 question
recommenda… ▶ Invest $1.2M with a milestone: … █████████████████▊ 0.89
Invest $1.2M now on the current… ▋ 0.03
Invest $500,000 to hold a small… 0.00
Pass until Tidewell shows it ca… █▋ 0.08
typesafe/jev-1.14.0 · session 01a1878e-1daa-749d-999f-bc1bc5c7f0cf · turn 01a1878e-1dad-74a1-9432-791bc71aea7a
The model recommends $1.2M with a milestone: win two practices whose software vendor bundles a claims assistant (0.89). Passing is a distant second (0.08). The smaller $500,000 check gets 0.00; it would miss the fund's 8% ownership target.
09Try new terms without saving
Try a repriced round from the updated recommendation. whatif runs it from the updated recommendation without saving anything. --drop leaves the recommendation question out of this one turn, because a session keeps asking its questions.
This what-if asks a question of its own, so it runs from the shell:
nouli --format text whatif "ic-updated" \
'What-if: the lead investor reprices the round to $3M at a $25M post-money valuation. Everything else is unchanged.' \
-q 'terms: What should the partner do under these terms? [Keep the $1.2M recommendation,
Ask for a smaller allocation at the new price,
"Decline, because the new price is above the fund'\''s valuation limit"]' \
--drop recommendation
nouli --format text whatif "$example-ic-updated" \
'What-if: the lead investor reprices the round to $3M at a $25M post-money valuation. Everything else is unchanged.' \
-q 'terms: What should the partner do under these terms? [Keep the $1.2M recommendation,
Ask for a smaller allocation at the new price,
"Decline, because the new price is above the fund'\''s valuation limit"]' \
--drop recommendation
Output
(not saved) · 1 fact · 1 question
terms Keep the $1.2M recommendation █▋ 0.08
Ask for a smaller allocation at… ▊ 0.04
▶ Decline, because the new price … █████████████████▋ 0.88
typesafe/jev-1.14.0
At a $25M post-money valuation the round is above the fund's $20M limit, and the model declines (0.88). Because nothing was saved, this answer isn't in the graph and the recommendation stands.
What the graph keeps
The saved graph holds both recommendations side by side. The first is conditional on reference calls; the second is conditional on the bundling milestone. Each one traces back to the facts the model saw, and the fund policy feeds both without being copied. These commands make recommendations only; they don't commit capital.