← Corpus / self-host-stack / agent-skill

self-host-stack/agent-skills/decilehub-interface/references/pipeline-vocabulary

Path
agent-skills/decilehub-interface/references/pipeline-vocabulary.md

humain-vc — pipeline and stage vocabulary

Pulled live from https://humain.decilehub.com/mcp on 2026-08-18: list_pipelines → 29 pipelines across 9 kinds, then get_pipeline per pipeline for its stages. Client-specific — re-pull for any other tenant, and re-pull for humain whenever the firm edits a board.

The [Hold] rule — read this before proposing any stage move

Several stage names end in [Hold] or [HOLD]. These are waiting states, not destinations. A record lands in a [Hold] stage as the result of a completed action — the pipeline’s automation parks it there until the next human action. The un-suffixed stages are the actions.

Read the Fund I deal pipeline as alternating pairs and it becomes obvious:

Set Up Call → Call Scheduled [Hold] → Collect Materials → Materials Collected [Hold] →
Set Up Meeting → Meeting Scheduled [Hold] → Review Opportunity [Hold] → …

Never propose moving a record to a [Hold] stage. Propose the action stage; the hold is where it ends up. When reporting current state, a record sitting in a [Hold] stage means “waiting on the counterparty or on us to do the next action” — say which, don’t just read the label back.

Kinds present on this tenant

KindCountWhat it’s for
event_attendance12One pipeline per event; RSVP tracking
investor3LP fundraising — one per vehicle
investment3Deal flow — one per vehicle
closing3LPA / subscription execution
capital_call3Capital call tracking
portfolio1Post-investment company management
recruiting1Hiring
connector1Intro-brokering / network cultivation
newsletter1Summer '25 Update

All three investor pipelines are is_primary: true — the flag cannot disambiguate them. Use the vocabulary table below.


investor — LP fundraising

The three vehicles use three different vocabularies. Match the words in the request to the pipeline that actually has them.

PipelineidentityStages
Investors - Humain Ventures Fund I, LPPKLV4On27104Added · Previously Added · Event Onboarding · Outreach · Pitch Meeting · PACT · Materials · Follow-up · Closing · Unresponsive · Declined · Future Interest · Closed · Closing Nudge
Investors - CogScAI SPVoNDV9o8R9475Added · Fund LP Outreach · Non Fund LP Outreach · PACT · Follow-up · Closing · Unresponsive · Declined
Fundraising - Unnatural Products SPVg8br3QA847290Added · Outreach · Meeting · Materials · Follow-up · Send PACT · Closing · Unresponsive · Declined

Disambiguating tells (a stage name that exists in exactly one pipeline):

If the request says…It’s this pipeline
Event Onboarding, Pitch Meeting, Future Interest, Closing Nudge, ClosedFund I
Fund LP Outreach, Non Fund LP OutreachCogScAI SPV
Send PACT (as a stage), Meeting (not “Pitch Meeting”)Unnatural Products SPV

Ambiguous on their own — present in all three: Added, PACT, Follow-up, Closing, Unresponsive, Declined, Outreach, Materials. A request using only these words does not identify a pipeline — ask which vehicle.

Fund I is the default only when the request says “the LP pipeline” with no other signal, and even then say which one you picked.

Declined and Future Interest are terminal-ish, not deletions. Moving an LP to Declined is a judgment about the relationship. Never propose it from a non-reply — that’s what Unresponsive is for.


investment — deal flow

Two completely different shapes. Fund I runs a 33-stage micro-stepped board with explicit [Hold] pairs; the two SPVs run a 13-stage funnel.

Deals - Humain Ventures Fund I, LP — gNrMpmK1 (entity 7104)

Intake: Added · Added by Investment Inquiries Form · Reach Out to Cold Lead · Reach Out to Inbound Lead · Reach Out from an Introduction

Then action → hold, in order:

Action stageResulting hold
(intake)Company Review [Hold]
Set Up CallCall Scheduled [Hold]
Collect MaterialsMaterials Collected [Hold]
Set Up MeetingMeeting Scheduled [Hold]
(review)Review Opportunity [Hold]
Indicate Interest in InvestingDevelop Deal Memo [Hold]
Start Due DiligenceDue Diligence Collected [Hold]
Set Up Negotiation CallNegotiation Call Scheduled [Hold]
Approve InvestmentInvestment Review [Hold]
Sign Investment DocumentsInvestment Documents Signed [Hold]
Send WireInvestment Closed [Hold]
Request UpdateUpdate Received [Hold]

Exits: No Response · Unresponsive · Failed Review · Failed Due Diligence · Declined by GP · Declined by Company

The exit stages are the sharpest instrument on this board. Failed Review vs Failed Due Diligence vs Declined by GP vs Declined by Company record who ended it and at what depth. Never collapse them to “declined” — pick the one the evidence supports, or ask.

Deals - CogScAI SPV — BKVZL0K3 (9475) · Deals - Unnatural Products SPV — l8yEmAD8 (47290)

Identical vocabulary:

Added · Added by Investment Inquiries Form · Prospecting · Engagement · Screen · Review · Diligence · Decision · Execute Deal · Tracking · Update Received · In Portfolio · Declined


closing — LPA execution

PipelineidStages
LP Click To Close (Fund I)L8Z75WmKAdded [HOLD] · Send LPA · LPA Sent, Awaiting Signature · LPA Sent, Viewed · Manual Follow-Up Required · LPA Signed, Investor Verification Pending · Closing Queue · Closed · Closed - Need Tax Information · Closed - Tax Information Received · Declined by Fund · Declined by LP · Extended Review (1+ week)
LP Closing (Unnatural Products SPV)3N9xrzAKAdded [HOLD] · Send questionnaire · Sign LPA · Send Countersigned LPA · Closed [HOLD] · Manual Follow-Up Required · Send Accounting update questionnaire · Received Accounting update questionnaire · Decile Pro - Send Account Invite · Decile Pro - Account Confirmed Created · Engaging in Follow-up [HOLD] · Tax Notification · Declined by Fund · Declined by LP · Signed LPA [HOLD]
Closing (CogScAI SPV)w8o51pNqnot pulled — pull before use

This is the pipeline send_lpa writes into. Calling send_lpa moves the person onto the investor pipeline’s Closing stage, seats them on the closing pipeline’s onboarding-send stage, and creates their capital account on the fund. It is a fundraise state change wearing an email’s clothes — never batch it, never fire it to “see what happens.”

Manual Follow-Up Required is the board’s own escalation flag: a record there is asking for a human, and is the highest-value thing to surface unprompted in a closing-status question.


portfolio — yKvEOo8x (entity 7104)

In Portfolio · Active Engagement · Secure Update · New Funding Round · Follow-On Investment · Exiting · Closed Companies [Hold] · Exited Companies [Hold]

Secure Update is the stage that drives the reporting cycle — portfolio-data questions (“who owes us an update?”) resolve here, not in the deal pipeline. Note both Closed Companies and Exited Companies are holds, and they mean opposite outcomes: shut down vs. exited. Don’t conflate them.

connector — y8m2GeKW

Added · Reach out to Contact · Reach Out to Introduction · Interested [Hold] · Set Up Call · Call Scheduled [Hold] · Send Materials · Materials Viewed [Hold] · Request Introduction · Introduction Made [Hold] · Request More Introductions · More Introductions Made [Hold] · Newsletter · No Response · Unresponsive

This is the “who can introduce us to whom” board. search_people_orgs answers “who referred us to X?”; this pipeline is where that relationship is worked.

recruiting — g8brbPy8

Applied · Interviewing · Hired · Rejected


Re-pulling this file

python3 - <<'PY'
import json, subprocess
key = [l.split('=',1)[1].strip() for l in
       open('client-stacks/humain-vc/decilehub/.env')
       if l.startswith('DECILEHUB_API_KEY=')][0]
def call(name, args):
    body = json.dumps({"jsonrpc":"2.0","id":1,"method":"tools/call",
                       "params":{"name":name,"arguments":args}})
    out = subprocess.check_output(["curl","-s","-X","POST",
        "https://humain.decilehub.com/mcp",
        "-H","Content-Type: application/json",
        "-H","Accept: application/json, text/event-stream",
        "-H",f"Authorization: {key}","-d",body], text=True)
    return json.loads(json.loads(out)['result']['content'][0]['text'])
for p in call("list_pipelines", {}):
    full = call("get_pipeline", {"id": p["id"]})
    stages = " · ".join(s["name"] for s in (full.get("stages") or []))
    print(f'[{p["type"]}] {p["name"]} ({p["id"]})\n    {stages}\n')
PY

Firms edit their boards. A stage this file names that no longer exists will make a confident agent propose an impossible move — re-pull rather than trusting age.