Compare commits
9 Commits
f2a8eaff3c
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| eb6b6b6b75 | |||
| 722b9d186a | |||
| a677ae861b | |||
|
|
0b8e2f105d | ||
| d48d989495 | |||
| 54de10a8cc | |||
| 0f81bb77d5 | |||
| 3b8d45e863 | |||
| 1f971e2f9b |
@@ -19,6 +19,8 @@ Build my weekly checkout covering Sunday through today.
|
|||||||
- **Gitea**: Launch one subagent to run `~/bin/gitea-activity -s START -e END` and extract commits, PRs (opened/merged/approved), and repositories worked on
|
- **Gitea**: Launch one subagent to run `~/bin/gitea-activity -s START -e END` and extract commits, PRs (opened/merged/approved), and repositories worked on
|
||||||
4. **Query dataindex directly** for the full week as backup to ensure nothing is missed
|
4. **Query dataindex directly** for the full week as backup to ensure nothing is missed
|
||||||
|
|
||||||
|
**Output location**: Write the checkout to `checkouts/checkout_$(date +%Y-%m-%d).md` (ISO date without hour)
|
||||||
|
|
||||||
**Build the checkout with this structure:**
|
**Build the checkout with this structure:**
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
311
.agents/skills/find-investor-meetings/SKILL.md
Normal file
311
.agents/skills/find-investor-meetings/SKILL.md
Normal file
@@ -0,0 +1,311 @@
|
|||||||
|
---
|
||||||
|
name: find-investor-meetings
|
||||||
|
description: Analyze reflector meeting transcripts to identify conversations with potential investors. Extracts investor identity, implied next steps, and key quotes. Generates a markdown report with findings.
|
||||||
|
user-invocable: true
|
||||||
|
argument-hint: [start-date]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Find Investor Meetings
|
||||||
|
|
||||||
|
Analyze reflector meeting transcripts to identify conversations with potential investors. For each investor meeting found, extract who the investor was, the implied next steps, and direct quotes.
|
||||||
|
|
||||||
|
**When to use:** You need to review your fundraising history, track investor conversations, or identify which meetings were with potential investors.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- DataIndex API access
|
||||||
|
- Reflector connector enabled
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Workflow
|
||||||
|
|
||||||
|
### Step 1: Get User Identity
|
||||||
|
|
||||||
|
First, get the current user's contact_id so we can filter for meetings they participated in.
|
||||||
|
|
||||||
|
```python
|
||||||
|
contactdb_get_me()
|
||||||
|
```
|
||||||
|
|
||||||
|
Extract the `id` field from the response - this is your `contact_id`.
|
||||||
|
|
||||||
|
### Step 2: Query Reflector Meetings
|
||||||
|
|
||||||
|
Fetch all reflector meetings from the specified start date to today, filtered to only include meetings where you participated.
|
||||||
|
|
||||||
|
```
|
||||||
|
GET /dataindex/api/v1/query
|
||||||
|
?entity_types=meeting
|
||||||
|
&connector_ids=reflector
|
||||||
|
&contact_ids={your_contact_id}
|
||||||
|
&date_from={start-date}
|
||||||
|
&date_to={today}
|
||||||
|
&limit=100
|
||||||
|
&sort_by=timestamp
|
||||||
|
&sort_order=asc
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** The `contact_ids` filter ensures we only analyze meetings you actually participated in.
|
||||||
|
|
||||||
|
### Step 3: Launch Parallel Subagents
|
||||||
|
|
||||||
|
For each meeting found, launch one subagent to analyze the transcript. Subagents run in parallel for efficiency.
|
||||||
|
|
||||||
|
**Subagent Task Template:**
|
||||||
|
|
||||||
|
```
|
||||||
|
Your task is to analyze a reflector meeting transcript to determine if it was with a potential investor.
|
||||||
|
|
||||||
|
Meeting to analyze:
|
||||||
|
- entity_id: reflector:{meeting_id}
|
||||||
|
- title: {title}
|
||||||
|
- date: {date}
|
||||||
|
- room: {room_name}
|
||||||
|
- participants: {participant_list}
|
||||||
|
|
||||||
|
Fetch the full transcript using:
|
||||||
|
```python
|
||||||
|
dataindex_get_entity_by_id(
|
||||||
|
entity_id="reflector:{meeting_id}",
|
||||||
|
include_raw_data=true,
|
||||||
|
max_content_length=null
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Analyze for investor meeting indicators:**
|
||||||
|
|
||||||
|
Direct indicators:
|
||||||
|
- Terms: investment, investor, fundraising, valuation, term sheet, due diligence, funding, equity, stake, capital, VC, venture capital, angel investor, seed round, Series A, pitch deck, runway, burn rate, traction, market size
|
||||||
|
|
||||||
|
Indirect indicators (implied investment interest):
|
||||||
|
- Questions about: scalability, revenue model, market opportunity, competitive advantage, team background, customer traction, unit economics, go-to-market strategy
|
||||||
|
- Discussion of: financial projections, growth metrics, exit strategy, ownership percentage, board composition
|
||||||
|
- Mentions of: portfolio companies, investment thesis, follow-on funding, pro-rata rights
|
||||||
|
|
||||||
|
**Return JSON:**
|
||||||
|
{
|
||||||
|
"is_investor_meeting": true/false,
|
||||||
|
"confidence": "high/medium/low",
|
||||||
|
"investor_name": "Name/Organization or null",
|
||||||
|
"investor_type": "VC/Angel/Strategic/Unknown or null",
|
||||||
|
"summary": "1-paragraph summary of who the investor was and their interest",
|
||||||
|
"implied_next_steps": "What was implied as the next action after the call",
|
||||||
|
"investor_quote": "Direct quote showing investor interest, concern, or feedback (use actual words from transcript)",
|
||||||
|
"meeting_url": "https://reflector.monadical.com/transcripts/{meeting_id}"
|
||||||
|
}
|
||||||
|
|
||||||
|
If not an investor meeting, return:
|
||||||
|
{
|
||||||
|
"is_investor_meeting": false,
|
||||||
|
"confidence": "high",
|
||||||
|
"investor_name": null,
|
||||||
|
"investor_type": null,
|
||||||
|
"summary": "Brief explanation of what this meeting was about",
|
||||||
|
"implied_next_steps": null,
|
||||||
|
"investor_quote": null,
|
||||||
|
"meeting_url": "https://reflector.monadical.com/transcripts/{meeting_id}"
|
||||||
|
}
|
||||||
|
|
||||||
|
**Important:**
|
||||||
|
- Only mark as investor meeting if there are clear indicators (high confidence)
|
||||||
|
- Internal discussions ABOUT fundraising preparation are NOT investor meetings
|
||||||
|
- Max/founders reporting on investor activities to the team is NOT an investor meeting
|
||||||
|
- The investor must be an external party, not an internal team member
|
||||||
|
- Extract actual quotes from the transcript, don't paraphrase
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 4: Compile Results
|
||||||
|
|
||||||
|
Collect all subagent responses and categorize:
|
||||||
|
|
||||||
|
**Investor Meetings:** Meetings where `is_investor_meeting: true`
|
||||||
|
**Non-Investor Meetings:** Meetings where `is_investor_meeting: false`
|
||||||
|
**Inconclusive:** Meetings with `confidence: low` - flag for manual review
|
||||||
|
|
||||||
|
### Step 5: Generate Report
|
||||||
|
|
||||||
|
Write findings to `investor-meetings-analysis-{start-date}-to-{today}.md`
|
||||||
|
|
||||||
|
**Report Structure:**
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Investor Meeting Analysis
|
||||||
|
|
||||||
|
**Analysis Period:** {start-date} to {today}
|
||||||
|
**Total Meetings Analyzed:** {count}
|
||||||
|
**Investor Meetings Found:** {count}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
[Brief summary of findings - 2-3 sentences]
|
||||||
|
|
||||||
|
### Key Insights
|
||||||
|
|
||||||
|
[If investor meetings found:]
|
||||||
|
- Most recent investor conversation: {date} with {investor_name}
|
||||||
|
- Investor types: {breakdown by VC/Angel/Strategic}
|
||||||
|
- Common themes: {recurring topics across meetings}
|
||||||
|
- Next steps status: {summary of follow-up actions}
|
||||||
|
|
||||||
|
[If no investor meetings found:]
|
||||||
|
- No external investor conversations were captured in this date range
|
||||||
|
- Consider: meetings may have occurred on other platforms (Zoom, Google Meet), in-person, or in reflector rooms not covered
|
||||||
|
- {number} meetings were internal preparation for fundraising
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Investor Meetings
|
||||||
|
|
||||||
|
### {Date}: {Investor Name} ({Investor Type})
|
||||||
|
|
||||||
|
**Meeting:** [{Title}]({meeting_url})
|
||||||
|
**Date:** {date}
|
||||||
|
**Room:** {room_name}
|
||||||
|
|
||||||
|
**Summary:**
|
||||||
|
{1-paragraph summary of who the investor was and what their interest/feedback was}
|
||||||
|
|
||||||
|
**Implied Next Steps:**
|
||||||
|
{What was discussed as the next action after this call}
|
||||||
|
|
||||||
|
**Key Quote:**
|
||||||
|
> "{investor_quote}"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[Repeat for each investor meeting found]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Internal Fundraising Preparation
|
||||||
|
|
||||||
|
The following meetings focused on preparing for investor outreach but were not actual investor conversations:
|
||||||
|
|
||||||
|
| Date | Title | Activity |
|
||||||
|
|------|-------|----------|
|
||||||
|
| {date} | [{title}]({url}) | {brief description of preparation activity} |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## All Meetings Analyzed
|
||||||
|
|
||||||
|
| Date | Title | Room | Investor Meeting? | Notes |
|
||||||
|
|------|-------|------|-------------------|-------|
|
||||||
|
| {date} | [{title}]({url}) | {room} | {Yes/No} | {brief note} |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Analysis completed: {date}*
|
||||||
|
*Data Source: Reflector meeting transcripts via DataIndex API*
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Key Rules
|
||||||
|
|
||||||
|
1. **Only external investor meetings count** - Internal discussions about fundraising, pitch practice sessions, and team reports about investor activities are NOT investor meetings
|
||||||
|
|
||||||
|
2. **High confidence threshold** - Only mark as investor meeting with clear indicators. "Mentions investor" in context of CRM development is NOT an investor meeting
|
||||||
|
|
||||||
|
3. **Extract actual quotes** - Use the investor's exact words from the transcript, not paraphrases
|
||||||
|
|
||||||
|
4. **Include context** - When investor meetings are NOT found, document the preparation activities that were happening (CRM building, demo prep, pitch practice)
|
||||||
|
|
||||||
|
5. **Be specific about gaps** - If no investor meetings found, explain likely reasons (other platforms, in-person only, reflector not recording)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Example Output
|
||||||
|
|
||||||
|
When investor meetings are found:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Investor Meetings
|
||||||
|
|
||||||
|
### 2025-12-15: Acme Ventures (VC)
|
||||||
|
|
||||||
|
**Meeting:** [GreyHaven Platform Demo](https://reflector.monadical.com/transcripts/abc123)
|
||||||
|
**Date:** December 15, 2025
|
||||||
|
**Room:** demo-room
|
||||||
|
|
||||||
|
**Summary:**
|
||||||
|
Acme Ventures, a Series A-focused venture capital firm, expressed strong interest in GreyHaven's data sovereignty platform. The partner was particularly impressed by the local-first architecture and enterprise security features. They asked detailed questions about go-to-market strategy and current traction.
|
||||||
|
|
||||||
|
**Implied Next Steps:**
|
||||||
|
Send detailed financial projections and customer pipeline by end of week. Schedule follow-up call with their technical partner for architecture review.
|
||||||
|
|
||||||
|
**Key Quote:**
|
||||||
|
> "This is exactly the kind of infrastructure play we're looking for. The timing is right with all the data privacy regulations coming online. Can you get us those projections by Friday?"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2025-11-28: Sarah Chen (Angel)
|
||||||
|
|
||||||
|
**Meeting:** [Initial Introduction](https://reflector.monadical.com/transcripts/def456)
|
||||||
|
**Date:** November 28, 2025
|
||||||
|
**Room:** max-office
|
||||||
|
|
||||||
|
**Summary:**
|
||||||
|
Sarah Chen, former CTO of DataCorp and active angel investor, met with Max for an introductory conversation. She's interested in the space and wanted to understand the technical differentiation from Palantir and other competitors.
|
||||||
|
|
||||||
|
**Implied Next Steps:**
|
||||||
|
Send product demo video and technical architecture overview. She will intro us to two portfolio companies that might be pilot customers.
|
||||||
|
|
||||||
|
**Key Quote:**
|
||||||
|
> "I've been looking for something in this space. Your approach to data sovereignty is novel. Send me the demo and let's talk again after the holidays."
|
||||||
|
```
|
||||||
|
|
||||||
|
When NO investor meetings are found:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
After analyzing 47 reflector meetings from December 1, 2025 to January 29, 2026, **no meetings with external investors were identified**. All meetings were internal team discussions.
|
||||||
|
|
||||||
|
### Key Finding: Preparation for Investor Meetings
|
||||||
|
|
||||||
|
While no actual investor meetings were captured, several meetings focused on preparing for investor outreach:
|
||||||
|
|
||||||
|
1. **Max practicing his GreyHaven pitch** (Jan 6, 2026) - Internal all-hands where Max rehearsed his investor presentation
|
||||||
|
2. **Demo preparation discussions** (Jan 26-29, 2026) - Multiple meetings about creating demo materials for investor presentations
|
||||||
|
3. **CRM pipeline development** (Dec 17-19, 2025) - Building systems to track investor leads and fundraising progress
|
||||||
|
|
||||||
|
### Why No Investor Meetings?
|
||||||
|
|
||||||
|
Actual investor meetings may have occurred:
|
||||||
|
- On other platforms (Zoom, Google Meet, Microsoft Teams)
|
||||||
|
- In-person without reflector recording
|
||||||
|
- In reflector rooms not captured in the query
|
||||||
|
- Before the specified date range
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
- [dataindex skill](../dataindex/SKILL.md) - Meeting queries and transcript retrieval
|
||||||
|
- [contactdb skill](../contactdb/SKILL.md) - Participant name resolution
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Usage Examples
|
||||||
|
|
||||||
|
**Default (last 90 days):**
|
||||||
|
```
|
||||||
|
/find-investor-meetings
|
||||||
|
```
|
||||||
|
|
||||||
|
**Specific start date:**
|
||||||
|
```
|
||||||
|
/find-investor-meetings 2025-12-01
|
||||||
|
```
|
||||||
|
|
||||||
|
**Full year analysis:**
|
||||||
|
```
|
||||||
|
/find-investor-meetings 2025-01-01
|
||||||
|
```
|
||||||
@@ -82,10 +82,40 @@ git log --format="%an|%ae" | sort | uniq -c | sort -rn
|
|||||||
### Technical
|
### Technical
|
||||||
- architecture-term-1
|
- architecture-term-1
|
||||||
|
|
||||||
|
### Deadline & Timeline Tracking
|
||||||
|
- deadline
|
||||||
|
- due date
|
||||||
|
- target date
|
||||||
|
- ETA
|
||||||
|
- "by when"
|
||||||
|
- "ship by"
|
||||||
|
- milestone
|
||||||
|
- launch date
|
||||||
|
- release date
|
||||||
|
- "when will"
|
||||||
|
- "when is"
|
||||||
|
- pushed back
|
||||||
|
- extended
|
||||||
|
- slipped
|
||||||
|
- delayed
|
||||||
|
- ahead of schedule
|
||||||
|
- behind schedule
|
||||||
|
|
||||||
## Entity Types Priority
|
## Entity Types Priority
|
||||||
1. threaded_conversation (Zulip)
|
1. threaded_conversation (Zulip)
|
||||||
2. meeting (recordings)
|
2. meeting (recordings)
|
||||||
3. [Exclude: calendar, email, document if not relevant]
|
3. calendar_event (for deadline tracking)
|
||||||
|
4. [Exclude: email, document if not relevant]
|
||||||
|
|
||||||
|
## Deadline Discovery
|
||||||
|
|
||||||
|
During initial data gathering, search for deadline-related discussions:
|
||||||
|
- **Direct mentions**: "deadline", "due date", "target", "ETA", "launch date"
|
||||||
|
- **Timeline discussions**: When delivery dates are discussed or negotiated
|
||||||
|
- **Changes**: Deadline extensions, delays, accelerations
|
||||||
|
- **Commitments**: Statements like "we'll ship by X", "targeting Y for release"
|
||||||
|
|
||||||
|
Track these with dates, sources, and any context about rationale for changes.
|
||||||
```
|
```
|
||||||
|
|
||||||
## Step 3: Create Project Dashboard (Living Document)
|
## Step 3: Create Project Dashboard (Living Document)
|
||||||
@@ -159,6 +189,23 @@ This is the **entry point** — the living document showing current status.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Deadline History
|
||||||
|
|
||||||
|
Track when deadlines were discussed, committed to, or changed. This shows the evolution of project timeline expectations.
|
||||||
|
|
||||||
|
### Current Commitments
|
||||||
|
| Deliverable | Current Target | Source | Confidence |
|
||||||
|
|-------------|---------------|--------|------------|
|
||||||
|
| [Feature/Milestone] | [Date] | [Meeting/Thread] | [High/Medium/Low] |
|
||||||
|
|
||||||
|
### Timeline Evolution
|
||||||
|
| Date | Change | Previous | New | Reason | Source |
|
||||||
|
|------|--------|----------|-----|--------|--------|
|
||||||
|
| [Date] | Extended | [Old Date] | [New Date] | [Why changed] | [Thread/Meeting] |
|
||||||
|
| [Date] | Committed | - | [Date] | [Initial commitment context] | [Thread/Meeting] |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Recent Decisions
|
## Recent Decisions
|
||||||
|
|
||||||
### Week [N] (Current)
|
### Week [N] (Current)
|
||||||
|
|||||||
@@ -212,6 +212,7 @@ Pass only the sections for this specific week — do NOT pass the full files.
|
|||||||
2. **Technical Work** — Feature implementations, bug fixes, infrastructure changes
|
2. **Technical Work** — Feature implementations, bug fixes, infrastructure changes
|
||||||
3. **Team Activity** — Core vs. occasional contributors, role changes
|
3. **Team Activity** — Core vs. occasional contributors, role changes
|
||||||
4. **Blockers** — Issues, delays, dependencies
|
4. **Blockers** — Issues, delays, dependencies
|
||||||
|
5. **Deadline Discussions** — Target dates, commitments, timeline changes
|
||||||
|
|
||||||
**Milestones:** When documenting milestones, capture BOTH:
|
**Milestones:** When documenting milestones, capture BOTH:
|
||||||
- **WHAT** — The technical achievement (e.g., "PostgreSQL migration")
|
- **WHAT** — The technical achievement (e.g., "PostgreSQL migration")
|
||||||
@@ -219,6 +220,20 @@ Pass only the sections for this specific week — do NOT pass the full files.
|
|||||||
|
|
||||||
Search for business objectives in: meeting discussions about roadmap, Zulip threads about planning, PR descriptions, release notes, and any "why are we doing this" conversations.
|
Search for business objectives in: meeting discussions about roadmap, Zulip threads about planning, PR descriptions, release notes, and any "why are we doing this" conversations.
|
||||||
|
|
||||||
|
**Deadlines & Timeline Changes:** Search all data sources for:
|
||||||
|
- **Explicit deadlines**: "deadline is", "due by", "target date", "ship by X", "launch date"
|
||||||
|
- **ETAs and estimates**: "ETA", "expected by", "should be done"
|
||||||
|
- **Changes**: "pushed back", "extended", "delayed", "moved up", "ahead of schedule", "slipped"
|
||||||
|
- **Commitments**: Agreements on when something will be delivered
|
||||||
|
- **Uncertainty**: "not sure when", "TBD", "need to figure out timeline"
|
||||||
|
|
||||||
|
For each deadline discussion found, record:
|
||||||
|
- What deliverable/milestone is being discussed
|
||||||
|
- The date mentioned (if any)
|
||||||
|
- Whether it's a new commitment, change, or removal
|
||||||
|
- The source (which thread/meeting/commit)
|
||||||
|
- Any context about why the timeline changed
|
||||||
|
|
||||||
**Skip unless meaningful:** Routine check-ins, minor documentation updates, social chat.
|
**Skip unless meaningful:** Routine check-ins, minor documentation updates, social chat.
|
||||||
|
|
||||||
**Output:** Write `projects/$0/timeline/{year-month}/week-{n}.md` using the week file template from [project-history](../project-history/SKILL.md). Also return a **3-5 line summary** to the coordinator for use in Phase 3.
|
**Output:** Write `projects/$0/timeline/{year-month}/week-{n}.md` using the week file template from [project-history](../project-history/SKILL.md). Also return a **3-5 line summary** to the coordinator for use in Phase 3.
|
||||||
@@ -248,6 +263,31 @@ This is the **living document** — update it with current status from the week
|
|||||||
3. **Team** - Current contributors and their focus areas
|
3. **Team** - Current contributors and their focus areas
|
||||||
4. **Milestones** - Update status and add new ones with business objectives
|
4. **Milestones** - Update status and add new ones with business objectives
|
||||||
5. **Recent Decisions** - Key decisions from the last 2-3 weeks
|
5. **Recent Decisions** - Key decisions from the last 2-3 weeks
|
||||||
|
6. **Deadline History** - Track timeline discussions, commitments, and changes
|
||||||
|
|
||||||
|
**Deadline Tracking:**
|
||||||
|
- Scan all week summaries for deadline-related discussions
|
||||||
|
- Add new entries to the "Timeline Evolution" table showing changes
|
||||||
|
- Update "Current Commitments" with latest target dates
|
||||||
|
- Note when deadlines are mentioned without specific dates (uncertainty)
|
||||||
|
- Capture the reasoning behind timeline changes when available
|
||||||
|
|
||||||
|
**Deadline History Format:**
|
||||||
|
```markdown
|
||||||
|
## Deadline History
|
||||||
|
|
||||||
|
### Current Commitments
|
||||||
|
| Deliverable | Current Target | Source | Confidence |
|
||||||
|
|-------------|---------------|--------|------------|
|
||||||
|
| Feature X | Mar 15, 2026 | Sprint planning meeting | High |
|
||||||
|
| Beta release | Q2 2026 | Roadmap discussion | Medium |
|
||||||
|
|
||||||
|
### Timeline Evolution
|
||||||
|
| Date | Change | Previous | New | Reason | Source |
|
||||||
|
|------|--------|----------|-----|--------|--------|
|
||||||
|
| Feb 10 | Extended | Feb 28 | Mar 15 | Additional testing needed | #dev channel |
|
||||||
|
| Jan 15 | Committed | - | Feb 28 | Initial sprint commitment | Sprint kickoff |
|
||||||
|
```
|
||||||
|
|
||||||
**Milestone Format:**
|
**Milestone Format:**
|
||||||
```markdown
|
```markdown
|
||||||
@@ -319,6 +359,7 @@ Output a brief summary:
|
|||||||
1. Decision: {brief description}
|
1. Decision: {brief description}
|
||||||
2. Feature: {what was built}
|
2. Feature: {what was built}
|
||||||
3. Team: {who joined/left}
|
3. Team: {who joined/left}
|
||||||
|
4. Timeline: {deadline changes or commitments made}
|
||||||
|
|
||||||
### Metrics
|
### Metrics
|
||||||
- {n} new commits
|
- {n} new commits
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
LLM_API_URL=https://litellm-notrack.app.monadical.io
|
LLM_API_URL=https://litellm-notrack.app.monadical.io
|
||||||
LLM_MODEL=GLM-4.5-Air-FP8-dev
|
LLM_MODEL=Kimi-K2.5-sandbox
|
||||||
LLM_API_KEY=xxxxx
|
LLM_API_KEY=xxxxx
|
||||||
|
|||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,3 +1,5 @@
|
|||||||
.env
|
.env
|
||||||
MYSELF.md
|
MYSELF.md
|
||||||
__pycache__/
|
__pycache__/
|
||||||
|
workflows/*.py
|
||||||
|
projects
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ As an agent, assume you're running within our greywall sandbox.
|
|||||||
| Know which connector provides what data | [connectors skill] |
|
| Know which connector provides what data | [connectors skill] |
|
||||||
| Create a marimo analysis notebook | [workflow skill] + [notebook-patterns skill] |
|
| Create a marimo analysis notebook | [workflow skill] + [notebook-patterns skill] |
|
||||||
| Build a weekly checkout | [checkout skill] |
|
| Build a weekly checkout | [checkout skill] |
|
||||||
|
| Create my MYSELF.md from historical data | [self-onboarding skill] |
|
||||||
|
|
||||||
## About the User
|
## About the User
|
||||||
|
|
||||||
@@ -25,7 +26,7 @@ If `MYSELF.md` exists in the project root, **read it first** before starting any
|
|||||||
- Scope date ranges and topics to their stated interests
|
- Scope date ranges and topics to their stated interests
|
||||||
- Tailor output format to their preferences
|
- Tailor output format to their preferences
|
||||||
|
|
||||||
If `MYSELF.md` does not exist, ask the user to copy `MYSELF.example.md` to `MYSELF.md` and fill it in, or proceed without personalization.
|
If `MYSELF.md` does not exist, suggest running `/self-onboarding` to generate it automatically from historical data. Alternatively, the user can copy `MYSELF.example.md` to `MYSELF.md` and fill it in manually.
|
||||||
|
|
||||||
## API Base URLs
|
## API Base URLs
|
||||||
|
|
||||||
@@ -64,6 +65,7 @@ Use this table to translate natural language questions into API calls. The base
|
|||||||
- [workflow skill] — How to create marimo analysis notebooks
|
- [workflow skill] — How to create marimo analysis notebooks
|
||||||
- [notebook-patterns skill] — Marimo notebook patterns and common API workflows
|
- [notebook-patterns skill] — Marimo notebook patterns and common API workflows
|
||||||
- [checkout skill] — Weekly review builder
|
- [checkout skill] — Weekly review builder
|
||||||
|
- [self-onboarding skill] — Generate a personalized MYSELF.md from 12 months of historical activity
|
||||||
|
|
||||||
[MYSELF.md]: ./MYSELF.md
|
[MYSELF.md]: ./MYSELF.md
|
||||||
[company skill]: ./.agents/skills/company/SKILL.md
|
[company skill]: ./.agents/skills/company/SKILL.md
|
||||||
@@ -73,3 +75,4 @@ Use this table to translate natural language questions into API calls. The base
|
|||||||
[workflow skill]: ./.agents/skills/workflow/SKILL.md
|
[workflow skill]: ./.agents/skills/workflow/SKILL.md
|
||||||
[notebook-patterns skill]: ./.agents/skills/notebook-patterns/SKILL.md
|
[notebook-patterns skill]: ./.agents/skills/notebook-patterns/SKILL.md
|
||||||
[checkout skill]: ./.agents/skills/checkout/SKILL.md
|
[checkout skill]: ./.agents/skills/checkout/SKILL.md
|
||||||
|
[self-onboarding skill]: ./.agents/skills/self-onboarding/SKILL.md
|
||||||
|
|||||||
91
README.md
91
README.md
@@ -1,6 +1,95 @@
|
|||||||
# InternalAI Workspace
|
# InternalAI Workspace
|
||||||
|
|
||||||
Agent-assisted workspace for analyzing and tracking Monadical's internal data: meetings, emails, Zulip conversations, calendar events, documents, and git activity.
|
Agent-assisted workspace to work on your own data with InternalAI (ContactDB / DataIndex).
|
||||||
|
|
||||||
|
## Things you can do
|
||||||
|
|
||||||
|
- **Onboard yourself** — `can you onboard me?` creates your `MYSELF.md`
|
||||||
|
- **Weekly checkout** — `create my checkout of last week` builds a summary from your activity
|
||||||
|
- **Data analysis** — `create a workflow that searches all meetings since 2024 where Max is listed as a participant (not a contactdb), and output as csv` creates a marimo notebook in `workflows/`
|
||||||
|
- **Init a project** — `create the creatrix project` creates `projects/creatrix/` with base information
|
||||||
|
- **Sync a project** — `sync the creatrix project` runs a full 1-year analysis on the first run, then incremental syncs afterward, producing a live `project.md` document
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- [Greywall](https://gitea.app.monadical.io/monadical/greywall) installed — verify with `greywall --version`
|
||||||
|
- [OpenCode](https://opencode.ai) installed as a native binary (not a wrapper via bun/npm/pnpm)
|
||||||
|
|
||||||
|
### Greywall sandbox template
|
||||||
|
|
||||||
|
Run OpenCode in learning mode so Greywall can observe which files it reads and writes:
|
||||||
|
|
||||||
|
```
|
||||||
|
greywall --learning -- opencode
|
||||||
|
```
|
||||||
|
|
||||||
|
Interact briefly, then exit OpenCode. Greywall generates a sandbox template based on the observed filesystem access. Edit the template if needed.
|
||||||
|
|
||||||
|
### MCP configuration
|
||||||
|
|
||||||
|
Add the ContactDB and DataIndex MCP servers:
|
||||||
|
|
||||||
|
```
|
||||||
|
greywall -- opencode mcp add
|
||||||
|
```
|
||||||
|
|
||||||
|
Run the command twice with these settings:
|
||||||
|
|
||||||
|
| Name | Type | URL | OAuth |
|
||||||
|
|------|------|-----|-------|
|
||||||
|
| `contactdb` | Remote MCP | `http://caddy/contactdb-api/mcp/` | No |
|
||||||
|
| `dataindex` | Remote MCP | `http://caddy/dataindex/mcp/` | No |
|
||||||
|
|
||||||
|
Verify the servers are registered:
|
||||||
|
|
||||||
|
```
|
||||||
|
greywall -- opencode mcp list
|
||||||
|
```
|
||||||
|
|
||||||
|
Then open your proxy at `http://localhost:42000/proxy` and allow access to Caddy.
|
||||||
|
|
||||||
|
### LiteLLM provider
|
||||||
|
|
||||||
|
Add a `litellm` provider in `opencode.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"$schema": "https://opencode.ai/config.json",
|
||||||
|
"provider": {
|
||||||
|
"litellm": {
|
||||||
|
"npm": "@ai-sdk/openai-compatible",
|
||||||
|
"name": "Litellm",
|
||||||
|
"options": {
|
||||||
|
"baseURL": "https://litellm-notrack.app.monadical.io",
|
||||||
|
"apiKey": "sk-xxxxx"
|
||||||
|
},
|
||||||
|
"models": {
|
||||||
|
"Kimi-K2.5-sandbox": {
|
||||||
|
"name": "Kimi-K2.5-sandbox"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Replace `apiKey` with your own key (check 1Password for "litellm notrack").
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Start OpenCode inside the Greywall sandbox:
|
||||||
|
|
||||||
|
```
|
||||||
|
greywall -- opencode
|
||||||
|
```
|
||||||
|
|
||||||
|
### First-run checklist
|
||||||
|
|
||||||
|
1. Select the Kimi K2.5 model under litellm in `/models` — type "hello" to confirm it responds (if not, check the proxy)
|
||||||
|
2. Test ContactDB access — ask "who am I?" (should trigger `get_me`)
|
||||||
|
3. Test DataIndex access — ask "what was my last meeting about?"
|
||||||
|
|
||||||
## Skills
|
## Skills
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user