8.1 KiB
name, description, user-invocable
| name | description | user-invocable |
|---|---|---|
| init-greyhaven | Build comprehensive Greyhaven business documentation by analyzing Reflector meeting transcripts and Zulip threads from the last 4 months via DataIndex API, using parallel subagents to extract business context, positioning, product details, and open items from authoritative sources (Corey Gallon, Max, Jordan). Only Zulip threads and Reflector transcripts are used. | true |
Initialize Greyhaven Business Context
What I do
- Query DataIndex for all-hands meetings and Greyhaven-related Zulip threads from the last 4 months (only Zulip threads and Reflector transcripts)
- Launch parallel subagents to analyze transcripts and threads for Greyhaven/data-sovereignty content
- Synthesize findings into a structured business document covering vision, positioning, product, marketing, and open items
- Prioritize statements from Corey Gallon, Max, and Jordan (jordan@monadical.com)
When to use me
Use this when you need to create or update comprehensive company documentation for Greyhaven, extract business context from meetings and Zulip threads, or synthesize information across multiple data sources into a single reference document.
Prerequisites
- DataIndex API access (meeting and threaded_conversation entities)
- ContactDB for resolving participant names
- Subagent capability for parallel analysis
Data Sources (Explicit Connector Requirements)
This skill ONLY uses these two connectors - do not query any others:
| Connector | Entity Type | Use For |
|---|---|---|
reflector |
meeting |
Meeting recordings with transcripts |
zulip |
threaded_conversation |
Zulip topic threads |
⚠️ NEVER use: ics_calendar, mbsync_email, hedgedoc, babelfish, browser_history, or other connectors.
Workflow
Step 1: Query Reflector all-hands meetings
REQUIRED QUERY PATTERN:
GET /dataindex/api/v1/query
?entity_types=meeting
&connector_ids=reflector
&room_name=allhands
&date_from={4_months_ago}
&date_to={today}
&limit=100
Entity type: meeting
Connector: reflector (MUST be specified)
Room filter: room_name=allhands (MUST be specified - only all-hands meetings)
Date range: Last 4 months (120 days)
Key fields to extract:
transcript- Full meeting transcript textsummary- AI-generated summaryroom_name- Should be "allhands" (verified by filter)participants- List of attendeesstart_time,end_time- Meeting timestamps
⚠️ CRITICAL:
- Only use
connector_ids=reflector - MUST filter by
room_name=allhands- this ensures we only get company all-hands meetings - Never use other meeting sources or other room types
Step 2: Fetch full meeting transcripts
For each meeting, fetch the complete entity:
GET /dataindex/api/v1/entities/{meeting_id}
?include_raw_data=false
If a transcript exceeds 200KB, save it to a temp file and pass the file path to subagents.
Step 3: Analyze meetings in parallel
Launch one subagent per meeting to scan for Greyhaven/data-sovereignty mentions.
Subagent prompt template:
Analyze this meeting transcript for mentions of "greyhaven", "data sovereignty",
or related topics (data privacy, data ownership, data control, local data storage).
Meeting: {meeting_id} | Date: {timestamp} | Title: {title}
Transcript: {transcript_content}
Return JSON:
{
"is_relevant": true/false,
"quotes": [{"timestamp": "HH:MM:SS", "speaker": "Name", "quote": "exact text"}],
"explanation": "Why this is relevant"
}
Launch all subagents simultaneously.
Step 4: Query Zulip threaded conversations
REQUIRED QUERY PATTERN:
GET /dataindex/api/v1/query
?entity_types=threaded_conversation
&connector_ids=zulip
&date_from={4_months_ago}
&date_to={today}
&limit=100
Entity type: threaded_conversation (NOT conversation or conversation_message)
Connector: zulip (MUST be specified)
Date range: Last 4 months (120 days)
Why threaded_conversation:
- Represents a Zulip topic thread (grouped messages under a topic)
- Contains
recent_messageswith full thread content - Better for analysis than individual
conversation_messageentities
High-priority streams to search:
[greyhaven] marketing(stream 212)[greyhaven] branding(stream 206)[greyhaven] leads(stream 208)InternalAI(stream 193)engineering- selfhostyour.tech topicbizdev + marketing
⚠️ CRITICAL: Only use connector_ids=zulip and entity_types=threaded_conversation. Never use other chat connectors like babelfish.
Step 5: Filter threads by relevance
Launch a subagent to rank threads and return the top 20-30 most relevant, scored by Greyhaven/data-sovereignty content and message activity.
Step 6: Fetch and analyze top threads
For each high-priority thread, fetch full content via GET /dataindex/api/v1/entities/{thread_id}?include_raw_data=false, then launch parallel subagents to extract:
- Substantive Greyhaven mentions
- Data sovereignty content
- Key decisions or debates
- Quotes from Max, Corey Gallon, or Jordan Wimmer
Step 7: Synthesize into categories
Launch four specialized subagents in parallel, each focused on one domain:
| Subagent | Extracts |
|---|---|
| Business Context & Vision | Origin, problem statement, target market/ICP, vision, fundraising status, value proposition |
| Positioning & Marketing | Market positioning, go-to-market strategy, marketing channels, branding, investor comms |
| Product & Technical | Architecture, features, projects built on Greyhaven, user stories, data sovereignty concepts |
| Open Items & Risks | Unresolved decisions, action items, risks, areas of agreement/disagreement among stakeholders |
All subagents should prioritize statements from Corey Gallon, Max, and Jordan.
Step 8: Compile documentation
Create Greyhaven_Company_Documentation.md with this structure:
# Greyhaven Company Documentation
## Executive Summary
## 1. Business Context & Origin
## 2. Vision & Philosophy
## 3. Market Positioning
## 4. Product Architecture
## 5. Product Portfolio
## 6. Projects Built on Greyhaven
## 7. User Stories & Use Cases
## 8. Go-to-Market Strategy
## 9. Branding & Identity
## 10. Open Discussions & Debates
## 11. Unresolved Items
## 12. Risks & Challenges
## 13. Key Stakeholder Perspectives
## 14. Action Items & Next Steps
## 15. Appendix
Writing guidelines:
- Include direct quotes with attribution
- Maintain neutral tone while capturing debates
- Include timestamps where available
- Cross-reference multiple sources for key claims
Step 9: Clean up
Remove any temporary JSON or transcript files created during analysis.
Error handling
- Large transcripts (>200KB): Save to file, pass path to subagent
- Missing transcript: Skip meeting with a note
- Empty thread: Mark as low relevance, skip
- API failures: Retry with backoff, continue with available data
Query Patterns Summary
EXACT API CALLS TO MAKE:
For Reflector all-hands meetings:
dataindex_query_entities(
entity_types="meeting",
connector_ids="reflector",
room_name="allhands", # MUST filter for all-hands only
date_from="2024-10-19T00:00:00Z", # 4 months ago
date_to="2025-02-19T23:59:59Z", # today
limit=100
)
Then for each meeting ID:
dataindex_get_entity_by_id(
entity_id="reflector:{meeting_id}",
max_content_length=null # Get full transcript
)
For Zulip threads:
dataindex_query_entities(
entity_types="threaded_conversation", # MUST be threaded_conversation
connector_ids="zulip", # MUST be zulip
date_from="2024-10-19T00:00:00Z", # 4 months ago
date_to="2025-02-19T23:59:59Z", # today
limit=100
)
Then for each thread ID:
dataindex_get_entity_by_id(
entity_id="zulip:{thread_id}",
max_content_length=null # Get full thread content
)
Dependencies
- dataindex — entity querying
- contactdb — participant resolution
- notebook-patterns — pagination helpers (if needed)