Surface time-based BD triggers across the portfolio. Use when asked about client outreach, which clients closed a round recently, stale cap tables, pending grants, tombstones, weekly deals, or BD triggers.
Scan the portfolio for actionable outreach triggers: recent round closes, expiring 409As, and companies with pending grants but no current valuation.
No inputs required — this skill loops the full portfolio automatically.
Call list_accounts. Filter to accounts where id starts with corporation_pk:. Extract up to 20 numeric corporation IDs. If more than 20 companies exist, ask the user to narrow scope.
For each company, fetch in sequence:
fetch("cap_table:get:financing_history", {"corporation_id": corporation_id}) — financing history per companyfetch("cap_table:get:409a_valuations", {"corporation_id": corporation_id}) — 409A status (optional, only if checking valuation triggers)If the user specifies a time window (e.g., "last 60 days", "last 6 months"), use that instead of the default 90 days.
From financing history:
issue_date: date of issuanceround_name: name of the round (e.g. "Series A")is_grant: true if this is a grant issuance (not a priced round)From 409A FMVs:
expiration_date: when the valuation expiresprice: FMV per shareCall list_accounts. Filter to accounts where id starts with corporation_pk:. Extract the numeric corporation IDs (up to 20).
Financing history:
fetch("cap_table:get:financing_history", {"corporation_id": corporation_id})issue_date, round_name, is_grantround_name, find max issue_date per round -> "last round date"409A status (optional, only if checking valuation triggers):
fetch("cap_table:get:409a_valuations", {"corporation_id": corporation_id})expiration_date, price (FMV per share)effective_date desc)| Trigger | Condition | Default Window | Rationale |
|---|---|---|---|
| Recent Closes | Last round closed within N days | 90 days | Typical post-close window for cap table review and congratulatory outreach |
| Stale 409A | 409A expired or expiring within N days | 60 days | Shorter than carta-portfolio-alerts (90d) because BD outreach needs to land before the renewal conversation starts |
| Pending Grants | Grants issued recently + no valid 409A | 90 days | Grants without current FMV create immediate 409A compliance exposure |
Companies whose last round closed within N days (default 90, or user-specified):
last_round_date >= today - N daysCompanies with an expired or near-expiry 409A (within 60 days):
expiration_date <= today + 60 days or no 409A on fileCompanies that issued grants recently (within 90 days) but have no valid 409A:
is_grant=true entry + no active 409AGroup output by trigger type (see Presentation section).
Required inputs: None — portfolio enumeration is automatic.
AI computation: Yes — trigger classifications (recent closes, stale 409As, pending grants) are AI-derived from Carta financing and valuation data. Trigger the AI computation gate (see carta-interaction-reference §6.2) before outputting any trigger classifications or outreach recommendations.
Subagent prohibition: Not applicable.
Format: Tables grouped by trigger type
BLUF lead: Lead with the count of companies scanned and how many triggers were found across all categories.
Sort order: By recency within each trigger group (most recent first). Omit sections with no results.
Date format: MMM d, yyyy (e.g. "Jan 15, 2026").
Recent Closes (last 90 days)
| Company | Round | Close Date | Days Ago |
|---|---|---|---|
| Acme Inc | Series B | Jan 15, 2026 | 63 days |
Stale or Expiring 409As
| Company | Last 409A | Expiration | Status |
|---|---|---|---|
| Beta Corp | $2.50 | Apr 1, 2026 | Expiring soon |
| Gamma LLC | — | — | No 409A on file |
Grants Issued Without Current 409A
| Company | Last Grant Date | 409A Status |
|---|---|---|
| Delta Co | Feb 20, 2026 | Expired |
If no triggers found in a category, omit that section.