Files
internalai-agent/.agents/skills/init-greyhaven/SKILL.md
2026-02-19 17:55:22 -05:00

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 text
  • summary - AI-generated summary
  • room_name - Should be "allhands" (verified by filter)
  • participants - List of attendees
  • start_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_messages with full thread content
  • Better for analysis than individual conversation_message entities

High-priority streams to search:

  • [greyhaven] marketing (stream 212)
  • [greyhaven] branding (stream 206)
  • [greyhaven] leads (stream 208)
  • InternalAI (stream 193)
  • engineering - selfhostyour.tech topic
  • bizdev + 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:

  1. Substantive Greyhaven mentions
  2. Data sovereignty content
  3. Key decisions or debates
  4. 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