11 KiB
name, description, user-invocable, argument-hint
| name | description | user-invocable | argument-hint | |
|---|---|---|---|---|
| internalai-business-context | Generate business context updates for InternalAI meetings. Fetches the latest InternalAI meeting (or specified meeting ID), analyzes participant contributions, researches business context via DataIndex, and creates a concise business update document with 1-week priorities. Requires Greyhaven_Company_Documentation.md in repo root. | true |
|
InternalAI Business Context Update
Generate a business context update document for InternalAI meetings, connecting technical discussions to Greyhaven's strategic mission.
What I do
- Fetch the latest InternalAI meeting transcript (or use specified meeting ID)
- Extract participant talking points and work items
- Research business context for each participant via DataIndex (last 30 days)
- Synthesize findings into a concise business update document
- Map work to Greyhaven's strategic pillars and revenue goals
When to use me
Use this skill after InternalAI meetings to create business-focused updates that:
- Connect technical work to business value
- Show strategic alignment with Greyhaven's mission
- Highlight immediate priorities (1 week ahead)
- Provide context for stakeholders (Max, Jordan, investors)
Prerequisites
- Greyhaven_Company_Documentation.md in repository root
- DataIndex API access for meeting transcripts and business context
- If Greyhaven doc missing, run
/init-greyhavenfirst
Workflow
Step 1: Check for Greyhaven Documentation
# Check if Greyhaven_Company_Documentation.md exists in repo root
ls -la Greyhaven_Company_Documentation.md
If missing: Run /init-greyhaven to generate it, then retry this skill.
Step 2: Fetch Meeting Data
Option A: Use specified meeting ID
dataindex_get_entity_by_id(
entity_id="reflector:{meeting_id}",
include_raw_data=true,
max_content_length=null
)
Option B: Fetch latest InternalAI meeting (default)
# Query for latest InternalAI meeting
dataindex_query_entities(
entity_types="meeting",
connector_ids="reflector",
search="internalai",
limit=1,
sort_by="timestamp",
sort_order="desc"
)
# Then fetch full transcript
dataindex_get_entity_by_id(
entity_id="reflector:{latest_meeting_id}",
include_raw_data=true,
max_content_length=null
)
Extract from meeting entity:
raw_data.transcript- Full conversation textparticipants- List of attendees with contact_idstitle- Meeting titletimestamp- Meeting dateid- Meeting ID for reference links (extract UUID portion)
Step 3: Parse Meeting into JSON Structure
Create structured JSON with participant talking points:
{
"meeting": {
"title": "Meeting Title",
"date": "2026-02-18",
"room": "internalai",
"participants": ["Name1", "Name2"],
"meeting_id": "reflector:xxx"
},
"participants": {
"ParticipantName": {
"business_value": ["talking point 1", "talking point 2"],
"things_done": ["completed item 1"],
"things_in_progress": ["current work 1"],
"things_to_do": ["planned item 1"],
"key_references": ["reference 1"]
}
}
}
Parsing approach:
- Segment transcript by speaker (lines starting with "SpeakerName: ")
- Extract business outcomes from each segment
- Categorize into: completed, in-progress, planned
- Identify key technical references mentioned
Step 4: Research Business Context (Parallel Subagents)
For each participant, launch parallel subagents to search DataIndex.
Subagent task template:
Research business context for {participant_name} from meeting on {date}.
Meeting context: {meeting_title} - {brief_description_of_discussion}
Search DataIndex for the last 30 days (from {date_minus_30} to {date}) to find:
- What projects this person is working on
- What business problems they're solving
- Recent decisions or priorities
- Related work from other team members
**Search Command to Use:**
Use dataindex_search with these parameters:
- query: [your search terms]
- limit: 10
- date_from: {date_minus_30} (ISO format)
- date_to: {date} (ISO format)
**Maximum 10 searches per participant.** Choose your search queries strategically based on the meeting topics discussed.
**URL Construction Helpers:**
For Zulip references (from threaded_conversation entities):
- Base: https://zulip.monadical.com/#narrow/channel/
- Format: https://zulip.monadical.com/#narrow/channel/{stream_id}-{stream_name}/topic/{topic_name}/with/{first_message_id}
- stream_id: From entity.connector_metadata.stream_id or parse from entity.id
- stream_name: From entity.title (extract stream name before the dash)
- topic_name: From entity.connector_metadata.topic or parse from entity.title
- message_id: Use the first message ID from entity.recent_messages[0].id
For Reflector references (from meeting entities):
- Base: https://reflector.monadical.com/transcripts/
- Format: https://reflector.monadical.com/transcripts/{transcript_id}
- transcript_id: Extract from meeting.entity_id (remove "reflector:" prefix)
**What to return:**
For each participant, provide:
1. Key themes from their work (2-3 themes)
2. Business value of each theme (1 sentence)
3. Strategic alignment with Greyhaven (1 sentence)
4. Direct URLs to relevant sources (use formats above)
Return as structured JSON:
{
"participant": "Name",
"research_date_range": "{date_minus_30} to {date}",
"key_themes": [
{
"theme": "Theme name",
"business_value": "Why this matters commercially",
"strategic_alignment": "How this supports Greyhaven's mission",
"references": [
{
"type": "zulip|reflector",
"title": "Brief description",
"url": "Full URL"
}
]
}
]
}
Launch all subagents simultaneously - one per participant.
Search command example for subagents:
# Example search - subagent adapts query based on context
dataindex_search(
query="{participant_name} {topic}",
limit=10,
date_from="2026-01-18T00:00:00Z",
date_to="2026-02-18T23:59:59Z"
)
Step 5: Read Greyhaven Business Context
# Read Greyhaven documentation
cat Greyhaven_Company_Documentation.md
Extract key context:
- Three Pillars: Human-centered design, Local-first sovereignty, Rapid prototyping
- Other Three Pillars of Data Sovereignty: Choice, Control, Clarity
- Current positioning: "Palantir for SMEs"
- Key stakeholders: Max (Founder), Jordan (BizDev), Corey Gallon (Strategic Advisor)
- Immediate business priorities: Fundraising, first paying customer (Electra), enterprise readiness
Step 6: Generate Business Context Document
Output file: internalai_context_YYYY-MM-DD.md (in repo root)
Document structure:
# InternalAI Business Context Update
[2-3 sentences total business impact across all participants]
---
## Participant Updates
### {Participant Name}
**What They've Done:**
[2-3 sentences on completed work with business outcomes]
**Immediate Priorities (Next 7 Days):**
- [Priority 1]
- [Priority 2]
**Strategic Context:**
[1-2 sentences connecting work to Greyhaven's mission and pillars]
**References:**
- [Title](https://zulip.monadical.com/#narrow/channel/{stream_id}-{stream}/topic/{topic}/with/{message_id})
- [Title](https://reflector.monadical.com/transcripts/{transcript_id})
---
**Revenue Enablement:**
[How this work supports fundraising, customer acquisition, or retention]
**Market Positioning:**
[How this supports "Palantir for SMEs" or data sovereignty messaging]
---
## Reference Links
### Key Meetings
- [Meeting Title](https://reflector.monadical.com/transcripts/{transcript_id})
### Zulip Threads
- [Thread Title](https://zulip.monadical.com/#narrow/channel/{stream_id}-{stream}/topic/{topic}/with/{message_id})
---
*Document generated from meeting transcript and DataIndex research*
Content guidelines:
- Per participant: Max 2 short paragraphs (What Done + Strategic Context)
- Immediate priorities: Only 1 week ahead (not 2 weeks)
- Business language: No technical jargon, focus on outcomes
- URL formats:
- Zulip:
https://zulip.monadical.com/#narrow/channel/{stream_id}-{stream_name}/topic/{topic_name}/with/{message_id} - Reflector:
https://reflector.monadical.com/transcripts/{transcript_id}
- Zulip:
Step 7: Generate Meeting JSON
Create {date}_meeting_analysis.json with parsed talking points (saved by default):
{
"meeting": {
"title": "...",
"date": "...",
"participants": ["..."],
"meeting_url": "https://reflector.monadical.com/transcripts/{id}"
},
"participants": {
"Name": {
"business_value": [...],
"things_done": [...],
"things_in_progress": [...],
"things_to_do": [...],
"key_references": [...]
}
},
"decisions_made": [...],
"open_questions": [...]
}
Step 8: Output Summary
Display to user:
✅ Business Context Update Complete
📄 Documents generated:
- internalai_context_{date}.md
- {date}_meeting_analysis.json
👥 Participants covered: {names}
🎯 Key business themes:
- {theme 1}
- {theme 2}
Commands Summary
Pre-flight check:
ls -la Greyhaven_Company_Documentation.md || echo "Run /init-greyhaven first"
Fetch meeting (latest):
dataindex_query_entities(
entity_types="meeting",
connector_ids="reflector",
search="internalai",
limit=1,
sort_by="timestamp",
sort_order="desc"
)
Fetch meeting (by ID):
dataindex_get_entity_by_id(
entity_id="reflector:{meeting_id}",
include_raw_data=true,
max_content_length=null
)
Research business context (per participant - max 10 searches):
# Launch parallel subagents, one per participant
# Each subagent runs up to 10 dataindex_search queries
# Subagent constructs queries based on meeting context
Generate output:
# Write to: internalai_context_YYYY-MM-DD.md
# Write to: YYYY-MM-DD_meeting_analysis.json
URL Construction Reference
Zulip URLs
From threaded_conversation entity:
https://zulip.monadical.com/#narrow/channel/{stream_id}-{stream_name}/topic/{topic_name}/with/{message_id}
Field mapping:
stream_id: entity.connector_metadata.stream_idstream_name: Parse from entity.title (before dash)topic_name: entity.connector_metadata.topicmessage_id: entity.recent_messages[0].id
Reflector URLs
From meeting entity:
https://reflector.monadical.com/transcripts/{transcript_id}
Field mapping:
transcript_id: entity.entity_id.replace("reflector:", "")
Error Handling
- Greyhaven doc missing: Prompt user to run
/init-greyhaven - No InternalAI meetings found: Check room_name filter, suggest checking reflector connector status
- Empty transcript: Mark meeting as processed but note limited content
- Subagent failures: Continue with available data, note gaps in output
- Large transcripts (>200KB): Save to temp file, pass path to subagents
Dependencies
- dataindex — meeting queries and business context search
- init-greyhaven — Greyhaven business context generation (if needed)
- contactdb — participant name resolution
Example Usage
Default (latest meeting):
/internalai-business-context
Specific meeting:
/internalai-business-context aecfd2e9-990f-4f25-b746-eb14ddae7494
Output location:
{repo_root}/internalai_context_2026-02-18.md{repo_root}/2026-02-18_meeting_analysis.json