Q_INTEGRATION_SUITE_SPEC.md
Current Specs/Connector and Integration Specs/Q_INTEGRATION_SUITE_SPEC.md
# Q Dashboard Integration Suite — Additional Integrations
**Date:** 2026-04-11
**Status:** Specification — varies by integration (some buildable now, some require backend)
**Scope:** YouTube, Philips Hue, Zoom/Teams Transcripts, Apple Reminders, Screenshots, plus unified DOC24 capability registry for all integrations
**Related:** Spotify Integration (Parts 1 & 2), PACER Integration Spec, DOC20 Addendum B (Word/PDF)
---
## 1. YouTube
### 1.1 What It Does
Opens YouTube in a Q browser tab for viewing. Elnor controls search, transcript extraction, and video metadata via MCP server. Elnor can watch a video for you — pull the transcript, summarize it, extract key points, and store them in DOC72.
### 1.2 Use Cases
- **Legal education:** "Summarize that CLE webinar on Daubert challenges" → Elnor pulls transcript, extracts the key points, stores in DOC72
- **Expert research:** "Find YouTube presentations by Dr. Sanli" → search, review transcripts for inconsistencies with trial testimony
- **Deposition technique:** "Find videos on cross-examining damages experts" → search, summarize best practices
- **General research:** "Watch this video and tell me the main points" → transcript extraction + LLM summary
- **Background listening:** open a lecture or podcast in a Q tab while working
### 1.3 MCP Server
Use `ZubeidHendricks/youtube-mcp-server` (Node.js) or `dannysubsense/youtube-mcp-server` (Python). Both provide:
| Tool | Description |
|------|-------------|
| `youtube_search` | Search for videos by query, filter by date, channel, duration |
| `youtube_get_video_details` | Get title, description, channel, duration, view count |
| `youtube_get_transcript` | Extract full transcript with timestamps (multiple languages) |
| `youtube_get_channel` | Channel info and recent videos |
| `youtube_get_trending` | Trending videos by category |
### 1.4 Setup
```bash
# Register Spotify Developer app (not needed — YouTube uses API key only)
# 1. Go to Google Cloud Console → create project → enable YouTube Data API v3
# 2. Create API key (no OAuth needed for search/transcripts)
# 3. Configure MCP server
export YOUTUBE_API_KEY="your-api-key"
```
Register with OpenClaw as MCP server. No OAuth for read-only operations. Playback control is not via API — user controls the web player directly in the Q tab.
### 1.5 DOC72 Integration
Transcripts and video summaries become knowledge nodes:
```typescript
interface VideoKnowledgeNode {
node_id: string;
type: "entity";
subtype: "youtube_video";
title: string;
channel: string;
youtube_url: string;
summary: string; // LLM-generated summary
key_points: string[]; // Extracted takeaways
entities_mentioned: string[]; // People, cases, concepts referenced
domain: string; // "legal_education", "expert_research", "general"
watched_at: string;
principal_id: "will";
scope: "personal";
}
```
### 1.6 Dependencies
- YouTube Data API v3 key (free tier: 10,000 units/day, more than enough)
- MCP server (pre-built)
- DOC3 extraction pipeline (for transcript → knowledge extraction, requires backend)
- Can build MCP connection now; DOC72 storage requires backend
### 1.7 Settings
```
Settings > Integrations > YouTube
├─ API Key: [****abcd ] [Update]
├─ ☑ Allow Elnor to search YouTube
├─ ☑ Allow Elnor to extract transcripts
├─ ☑ Store video summaries in knowledge graph
└─ ☑ Show YouTube in Pages navigation
```
---
## 2. Philips Hue
### 2.1 What It Does
Elnor controls your office lighting. Create context-aware scenes that activate with work modes.
### 2.2 Use Cases
- **"Trial prep mode"** → dims lights, warm tone. Spotify plays focus music. Q opens the case workspace. All triggered by one command.
- **"I'm done for the day"** → lights off, Spotify stops, calendar reviewed for tomorrow
- **"Reading mode"** → bright, cool white, high CRI
- **"Meeting mode"** → moderate brightness, neutral tone
- **Deadline proximity** → subtle color shift as a deadline approaches (optional, probably annoying)
- **Time-based automation** → lights adjust through the day (bright morning, warm evening)
### 2.3 MCP Server
Pre-built Hue MCP servers exist on GitHub. Tools:
| Tool | Description |
|------|-------------|
| `hue_list_lights` | List all lights and current state |
| `hue_set_light` | Set brightness, color temperature, color, on/off for a specific light |
| `hue_list_rooms` | List rooms/groups |
| `hue_set_room` | Set all lights in a room |
| `hue_list_scenes` | List saved scenes |
| `hue_activate_scene` | Activate a scene by name |
| `hue_create_scene` | Create a new scene |
### 2.4 Setup
```bash
# 1. Find your Hue Bridge IP (usually auto-discovered on local network)
# 2. Press the button on the Hue Bridge
# 3. MCP server registers with the bridge and gets an API key
# 4. Register MCP server with OpenClaw
export HUE_BRIDGE_IP="192.168.1.xxx"
export HUE_API_KEY="generated-during-pairing"
```
Entirely local — no cloud, no internet required. The Hue Bridge and MCP server communicate on your local network.
### 2.5 Work Context Integration
The real value is combining Hue with other integrations via DOC23 procedures:
```typescript
// DOC3 learned procedure: "Trial Prep Mode"
const trialPrepMode: Procedure = {
trigger: "trial prep mode" | "focus mode" | "deep work",
steps: [
{ tool: "hue_activate_scene", params: { scene: "Focus" } },
{ tool: "spotify_play", params: { playlist: "Trial Prep Focus" } },
// Open relevant case workspace (future, when workspaces are wired)
],
};
// DOC3 learned procedure: "End of Day"
const endOfDay: Procedure = {
trigger: "done for the day" | "logging off" | "end of day",
steps: [
{ tool: "hue_set_room", params: { room: "Office", on: false } },
{ tool: "spotify_pause" },
// Calendar review for tomorrow (future)
],
};
```
### 2.6 Dependencies
- Philips Hue Bridge on local network
- MCP server (pre-built)
- No backend needed — fully local
- **Can build now**
### 2.7 Settings
```
Settings > Integrations > Philips Hue
├─ Bridge: 192.168.1.42 (Hue Bridge V2) ● Connected
├─ Lights: 6 discovered in 2 rooms
├─ [Re-discover lights]
├─ Work context scenes
│ ├─ Focus: [Focus scene ▾] — dims, warm
│ ├─ Reading: [Bright reading ▾] — bright, cool
│ ├─ Meeting: [Default ▾] — moderate
│ └─ [+ Add context scene]
├─ ☑ Allow Elnor to control lights
└─ ☐ Time-based auto-adjustment (sunrise/sunset)
```
---
## 3. Zoom/Teams Meeting Transcripts
### 3.1 What It Does
After a meeting, Elnor pulls the transcript, extracts action items, case references, deadlines, and key decisions. Stores everything in DOC72.
### 3.2 Use Cases
- **Post-meeting summary:** "What did we discuss in the Christensen call?" → Elnor searches transcript, summarizes
- **Action item extraction:** "What did I agree to do?" → extracts commitments attributed to Will
- **Deadline detection:** "Schedule the follow-up Dr. Christensen mentioned" → extracts date, adds to calendar
- **Case intelligence:** Meeting mentions a new legal theory or opposing party tactic → DOC72 stores it
- **Billing:** "How long was the Paramount call?" → duration for time tracking
### 3.3 Access Methods
**Zoom:**
- Zoom has a well-documented REST API + MCP servers exist
- After a meeting, Elnor calls `zoom_get_recordings` → downloads transcript
- Requires Zoom Pro or higher for cloud recording
- OAuth2 authentication via Zoom Marketplace app registration
**Teams:**
- Already partially covered by DOC16 Entry 16.7 (Teams message lifecycle)
- Teams meeting transcripts available via Microsoft Graph API: `GET /me/onlineMeetings/{id}/transcripts`
- Uses the same M365 auth you're already setting up for Word Online
- Teams meeting recordings stored in OneDrive — Elnor accesses via Graph API
### 3.4 MCP Server
For Zoom, use a pre-built MCP server or build a lightweight one (~200 lines):
| Tool | Description |
|------|-------------|
| `zoom_list_meetings` | List past meetings with dates and durations |
| `zoom_get_transcript` | Download meeting transcript (VTT or text format) |
| `zoom_get_recording` | Get recording URL (audio/video) |
| `zoom_get_participants` | List who attended |
| `teams_list_meetings` | List Teams meetings (via Graph API) |
| `teams_get_transcript` | Download Teams meeting transcript |
### 3.5 DOC72 Integration
```typescript
interface MeetingKnowledgeNode {
node_id: string;
type: "entity";
subtype: "meeting";
platform: "zoom" | "teams" | "phone";
title: string;
date: string;
duration_minutes: number;
participants: string[]; // Names
participant_entity_refs: string[]; // DOC72 refs
summary: string; // LLM-generated
action_items: {
description: string;
assigned_to: string;
deadline?: string;
task_ref?: string; // DOC23 task if created
}[];
key_decisions: string[];
case_references: string[]; // DOC72 case entity refs
follow_up_date?: string;
transcript_path?: string; // Local path to full transcript
principal_id: "will";
scope: "firm_shared";
}
```
### 3.6 Scheduled Processing
DOC23 task: after each meeting (detected via calendar event ending), Elnor:
1. Waits 5-10 minutes for transcript to process
2. Downloads transcript from Zoom/Teams
3. Runs DOC3 extraction → summary, action items, deadlines, entities
4. Writes to DOC72
5. Creates DOC23 tasks for action items with deadlines
6. Notifies Will: "Meeting summary ready for Christensen call. 3 action items, 1 deadline extracted."
### 3.7 Dependencies
- Zoom Pro+ account (for cloud recording/transcripts) and/or Teams (via M365)
- MCP server (pre-built for Zoom, Graph API for Teams)
- DOC3 extraction pipeline (requires backend)
- DOC23 task scheduler (requires backend)
- **Setup can begin now (OAuth registration); full processing requires backend**
### 3.8 Settings
```
Settings > Integrations > Meetings
├─ Zoom
│ ├─ Account: ● Connected as [email]
│ ├─ [Disconnect] [Re-authenticate]
│ ├─ ☑ Auto-process meeting transcripts
│ └─ ☑ Extract action items and deadlines
├─ Teams (via M365)
│ ├─ Status: ● Uses M365 account (see Microsoft Integrations)
│ ├─ ☑ Auto-process Teams meeting transcripts
│ └─ ☑ Extract action items and deadlines
├─ Post-meeting behavior
│ ├─ ☑ Generate meeting summary
│ ├─ ☑ Create tasks for action items
│ ├─ ☑ Add deadlines to calendar
│ └─ ☑ Store in knowledge graph
└─ Privacy
├─ ☑ Store full transcripts locally
└─ ☐ Include transcript text in knowledge graph (default: summary only)
```
---
## 4. Apple Reminders
### 4.1 What It Does
Elnor pushes reminders to Apple Reminders, which sync to iPhone, Apple Watch, and Mac. Court deadlines, task due dates, and ad-hoc reminders show up everywhere.
### 4.2 Use Cases
- **Court deadline push:** PACER extracts a deadline → Elnor creates Apple Reminder with date → buzzes on Apple Watch
- **Task reminder:** "Remind me to call Christensen tomorrow at 2" → Apple Reminder
- **Location-based:** "Remind me to file the motion when I get to the office" (if Apple Reminders location triggers are used)
- **Morning prep:** Elnor creates a daily reminder list of today's priorities
### 4.3 Access Method
On macOS, Apple Reminders is accessible via:
1. **AppleScript / JXA (JavaScript for Automation)** — Electron can execute AppleScript via `child_process`:
```typescript
import { exec } from "child_process";
function createReminder(title: string, dueDate: string, list: string = "ELNOR"): Promise<void> {
const script = `
tell application "Reminders"
set targetList to list "${list}"
tell targetList
make new reminder with properties {name:"${title}", due date:date "${dueDate}"}
end tell
end tell
`;
return new Promise((resolve, reject) => {
exec(`osascript -e '${script}'`, (err) => err ? reject(err) : resolve());
});
}
```
2. **EventKit framework via native Node addon** — more robust but requires building a native module.
3. **Shortcuts integration** — create a Shortcut that adds a reminder, Elnor triggers it via `open shortcuts://run-shortcut?name=AddReminder&input=...`
### 4.4 Recommended Approach
AppleScript is the simplest and works now. Create a dedicated "ELNOR" reminders list so Elnor's reminders don't clutter personal lists.
### 4.5 MCP Server
No pre-built MCP server needed — this is simple enough to be a few tool functions:
| Tool | Description |
|------|-------------|
| `reminders_create` | Create a reminder with title, due date, optional notes, target list |
| `reminders_list` | List reminders (all or by list name) |
| `reminders_complete` | Mark a reminder as complete |
| `reminders_delete` | Delete a reminder |
### 4.6 Integration Points
- **PACER deadline extraction** → creates Apple Reminder
- **DOC23 task due dates** → optional Apple Reminder push
- **Calendar events** → optional reminder N days before
- **Ad-hoc via chat** → "Remind me to..." → Apple Reminder
### 4.7 Dependencies
- macOS (AppleScript)
- No accounts, no API keys, no internet
- **Can build now — 30 minutes of work**
### 4.8 Settings
```
Settings > Integrations > Apple Reminders
├─ Status: ● Connected (macOS)
├─ Default list: [ELNOR ▾]
├─ Push sources
│ ├─ ☑ Court deadlines (from PACER)
│ ├─ ☑ Task due dates (from DOC23)
│ ├─ ☑ Calendar reminders
│ └─ ☑ Ad-hoc chat reminders
└─ ☑ Sync completion status back to Q (mark task done when reminder completed)
```
---
## 5. Screenshots & Screen Capture
### 5.1 What It Does
Elnor captures screenshots for OCR, document analysis, or context capture. Built into Electron — no external tools needed.
### 5.2 Use Cases
- **OCR on physical documents:** Screenshot a photo of a court filing → Elnor OCRs it → searchable text in DOC72
- **Capture web research:** Screenshot a web page for reference → stored with URL and timestamp
- **UI state capture:** "Screenshot what I'm looking at" → saves current Q workspace state
- **Evidence capture:** Screenshot opposing party's website content with timestamp for litigation purposes
- **Training data:** Capture examples of document formats, court forms, etc.
### 5.3 Implementation
Electron provides native screenshot APIs:
```typescript
import { desktopCapturer, screen } from "electron";
async function captureScreen(): Promise<Buffer> {
const sources = await desktopCapturer.getSources({
types: ["screen"],
thumbnailSize: screen.getPrimaryDisplay().size,
});
const primaryScreen = sources[0];
return primaryScreen.thumbnail.toPNG();
}
async function captureWindow(windowTitle: string): Promise<Buffer> {
const sources = await desktopCapturer.getSources({
types: ["window"],
thumbnailSize: { width: 1920, height: 1080 },
});
const target = sources.find(s => s.name.includes(windowTitle));
if (target) return target.thumbnail.toPNG();
throw new Error(`Window "${windowTitle}" not found`);
}
```
### 5.4 OCR Pipeline
For text extraction from screenshots:
```typescript
// Use Tesseract.js (runs in Electron, no external dependencies)
import Tesseract from "tesseract.js";
async function ocrImage(imagePath: string): Promise<string> {
const { data: { text } } = await Tesseract.recognize(imagePath, "eng");
return text;
}
```
### 5.5 MCP Tools
| Tool | Description |
|------|-------------|
| `screenshot_capture` | Capture full screen, specific window, or selection |
| `screenshot_ocr` | Capture + OCR → returns extracted text |
| `screenshot_save` | Capture and save to a specific location with metadata |
### 5.6 Dependencies
- Electron native APIs (built-in)
- Tesseract.js for OCR (npm package, ~15MB)
- No accounts, no internet
- **Can build now — 1-2 hours**
### 5.7 Settings
```
Settings > Integrations > Screen Capture
├─ Keyboard shortcut: [⌘+Shift+5 ]
├─ Default save location: [ELNOR_MEMORY/screenshots/]
├─ ☑ Auto-OCR screenshots (extract text)
├─ ☑ Store OCR text in knowledge graph
└─ ☑ Include timestamp and source window in metadata
```
---
## 6. Unified DOC24 Capability Registry
### 6.1 Why This Matters
Elnor needs to know what tools are available and when to use them. Without a capability registry, Elnor might not think to use PACER when asked about a court case, or might not know Spotify is available when asked to play music. The registry is Elnor's "toolbox awareness."
### 6.2 Complete Integration Registry
All integrations — existing and new — should be registered in DOC24's capability registry:
```typescript
const integrationCapabilities: CapabilityRegistryEntry[] = [
// === DOCUMENT VIEWING & EDITING ===
{
capability_id: "document_viewer",
display_name: "Document Viewer",
tools: ["open_document", "preview_docx", "open_in_word_online", "open_in_desktop_word"],
semantic_triggers: ["open document", "view file", "read this", "edit document", "Word file", ".docx", ".pdf"],
status: "active",
requires_auth: false,
},
{
capability_id: "onlyoffice_editor",
display_name: "OnlyOffice Document Editor",
tools: ["edit_docx", "edit_xlsx", "edit_pptx"],
semantic_triggers: ["edit", "modify", "change document", "update file", "tracked changes"],
status: "active",
requires_auth: false,
},
{
capability_id: "pdf_viewer",
display_name: "PDF.js Viewer",
tools: ["view_pdf", "search_pdf", "extract_pdf_text"],
semantic_triggers: ["PDF", "view PDF", "read PDF", "search document"],
status: "active",
requires_auth: false,
},
// === M365 ===
{
capability_id: "m365_word_online",
display_name: "Word Online via M365",
tools: ["open_in_word_online", "upload_to_onedrive", "resolve_sharepoint_url"],
semantic_triggers: ["edit in Word", "Word Online", "SharePoint", "OneDrive"],
status: "active",
requires_auth: true,
auth_type: "m365_oauth",
},
{
capability_id: "m365_calendar",
display_name: "M365 Calendar",
tools: ["create_event", "update_event", "list_events", "delete_event"],
semantic_triggers: ["calendar", "schedule", "meeting", "appointment", "deadline"],
status: "active",
requires_auth: true,
auth_type: "m365_oauth",
},
{
capability_id: "m365_email",
display_name: "M365 Email",
tools: ["send_email", "read_email", "search_email"],
semantic_triggers: ["email", "send message", "mail", "inbox"],
status: "active",
requires_auth: true,
auth_type: "m365_oauth",
},
// === MUSIC ===
{
capability_id: "spotify",
display_name: "Spotify Music Control",
tools: ["spotify_play", "spotify_pause", "spotify_skip", "spotify_search", "spotify_get_current",
"spotify_get_recently_played", "spotify_get_top_tracks", "spotify_get_top_artists",
"spotify_create_playlist", "spotify_add_to_playlist", "spotify_get_audio_features"],
semantic_triggers: ["play music", "Spotify", "song", "playlist", "artist", "album", "what's playing",
"music", "listen", "queue", "volume", "skip", "pause music"],
status: "active",
requires_auth: true,
auth_type: "spotify_oauth",
cost_model: { type: "free" },
},
// === LEGAL RESEARCH ===
{
capability_id: "pacer_federal_courts",
display_name: "PACER — Federal Court Records",
tools: ["pacer_search_cases", "pacer_get_docket", "pacer_download_document",
"pacer_search_parties", "pacer_get_case_summary",
"recap_search", "recap_get_docket", "recap_download_document", "recap_search_opinions"],
semantic_triggers: ["court filing", "docket", "case number", "federal case", "motion", "complaint",
"court order", "opinion", "PACER", "litigation history", "party search",
"expert witness", "Daubert", "scheduling order", "deadline", "trial date"],
status: "active",
requires_auth: true,
auth_type: "pacer_credentials",
cost_model: {
type: "per_use",
notes: "Prefer CourtListener (free) before PACER (paid). $0.10/page, $3 max/doc.",
},
},
// === VIDEO ===
{
capability_id: "youtube",
display_name: "YouTube Search & Transcripts",
tools: ["youtube_search", "youtube_get_video_details", "youtube_get_transcript",
"youtube_get_channel"],
semantic_triggers: ["YouTube", "video", "watch", "transcript", "CLE", "webinar",
"presentation", "lecture"],
status: "active",
requires_auth: true,
auth_type: "google_api_key",
cost_model: { type: "free" },
},
// === SMART HOME ===
{
capability_id: "philips_hue",
display_name: "Philips Hue Lighting",
tools: ["hue_list_lights", "hue_set_light", "hue_list_rooms", "hue_set_room",
"hue_list_scenes", "hue_activate_scene", "hue_create_scene"],
semantic_triggers: ["lights", "lighting", "dim", "bright", "focus mode", "reading mode",
"office lights", "turn off lights", "scene"],
status: "active",
requires_auth: true,
auth_type: "hue_bridge_local",
cost_model: { type: "free" },
},
// === MEETINGS ===
{
capability_id: "zoom_meetings",
display_name: "Zoom Meeting Transcripts",
tools: ["zoom_list_meetings", "zoom_get_transcript", "zoom_get_recording",
"zoom_get_participants"],
semantic_triggers: ["Zoom", "meeting", "call", "conference", "transcript",
"what did we discuss", "meeting summary", "action items"],
status: "active",
requires_auth: true,
auth_type: "zoom_oauth",
},
{
capability_id: "teams_meetings",
display_name: "Teams Meeting Transcripts",
tools: ["teams_list_meetings", "teams_get_transcript"],
semantic_triggers: ["Teams meeting", "Teams call"],
status: "active",
requires_auth: true,
auth_type: "m365_oauth",
},
// === REMINDERS ===
{
capability_id: "apple_reminders",
display_name: "Apple Reminders",
tools: ["reminders_create", "reminders_list", "reminders_complete", "reminders_delete"],
semantic_triggers: ["remind me", "reminder", "don't forget", "alert me",
"push to phone", "Apple Watch"],
status: "active",
requires_auth: false,
cost_model: { type: "free" },
},
// === SCREEN CAPTURE ===
{
capability_id: "screenshots",
display_name: "Screen Capture & OCR",
tools: ["screenshot_capture", "screenshot_ocr", "screenshot_save"],
semantic_triggers: ["screenshot", "capture screen", "OCR", "read this image",
"scan document", "extract text from image"],
status: "active",
requires_auth: false,
cost_model: { type: "free" },
},
];
```
### 6.3 DOC72 Knowledge Storage for All Integrations
Every integration writes to DOC72 using the same entity graph. Domain tags distinguish the data:
| Integration | DOC72 Domain Tag | Node Types Used |
|-------------|-----------------|-----------------|
| Spotify | `music` | entity (artist, song, playlist), preference, observation, association |
| PACER | `legal`, `litigation` | entity (case, judge, party, filing, expert), fact, observation |
| YouTube | `video`, `education` | entity (video), observation (summary, key points) |
| Hue | `environment` | preference (lighting preferences), procedure (work modes) |
| Zoom/Teams | `meetings` | entity (meeting), observation (summary, action items) |
| Apple Reminders | `tasks` | (reminders flow through DOC23, not stored as DOC72 nodes) |
| Screenshots | `capture` | entity (screenshot), fact (OCR text) |
| M365 | `documents`, `email`, `calendar` | Per DOC16 spec |
### 6.4 Elnor's System Awareness Prompt
Add to SOUL.md or system context — Elnor's awareness of all available tools:
```
You have access to the following integrations. Use them proactively when relevant:
DOCUMENTS: Open, view, and edit Word documents (OnlyOffice locally, Word Online via M365).
View PDFs with search and text selection. All Office formats supported.
LEGAL RESEARCH: PACER access for all federal court records. Search cases, pull dockets,
download documents, monitor active cases for new filings. Prefer CourtListener (free)
before PACER (paid). Extract deadlines from court orders and add to calendar.
MUSIC: Full Spotify control. Play, pause, search, manage playlists, view listening history.
Remember Will's music preferences and patterns over time.
VIDEO: YouTube search and transcript extraction. Summarize videos, extract key points,
find presentations by specific people.
LIGHTING: Philips Hue control for office lighting. Activate work context scenes
(focus, reading, meeting). Combine with music for full environment control.
MEETINGS: Access Zoom and Teams meeting transcripts. Summarize meetings, extract action
items and deadlines, identify case references.
REMINDERS: Push reminders to Apple Reminders (syncs to iPhone and Apple Watch). Use for
court deadlines, task due dates, and ad-hoc reminders.
SCREEN CAPTURE: Take screenshots and OCR text from images. Use for capturing physical
documents, web content, or visual evidence.
CALENDAR: M365 calendar integration for scheduling, deadlines, and reminders.
Court deadlines from PACER are automatically added.
EMAIL: M365 email via DOC16. Send, read, search. CM/ECF notifications auto-captured.
All integration data flows into the knowledge graph (DOC72). You build understanding
over time: case histories, music preferences, meeting patterns, expert witness records,
judicial tendencies. Use this accumulated knowledge to provide informed, contextual
assistance without being asked.
```
### 6.5 Cross-Integration Procedures
The real power is combinations. DOC3 can learn multi-integration procedures:
| Procedure | Integrations Used |
|-----------|------------------|
| "Trial prep mode" | Hue (dim + warm) + Spotify (focus playlist) + PACER (check for new filings) |
| "Morning briefing" | PACER (new filings) + Calendar (today's events) + Email (priority messages) + Reminders (today's tasks) |
| "Post-meeting processing" | Zoom/Teams (transcript) + DOC72 (store) + DOC23 (create tasks) + Reminders (push deadlines) + Calendar (add follow-ups) |
| "End of day" | Hue (off) + Spotify (stop) + Calendar (tomorrow preview) + Reminders (tomorrow's priorities) |
| "Research a new case" | PACER (case search + docket + documents) + YouTube (find expert presentations) + DOC72 (store everything) |
| "Prepare for deposition" | PACER (expert's other cases) + YouTube (expert's presentations) + DOC72 (build dossier) + Reminders (push prep deadlines) |
---
## 7. Implementation Priority
| Integration | Build Now? | Effort | Dependencies |
|-------------|-----------|--------|-------------|
| Apple Reminders | ✅ Yes | 30 min | macOS only |
| Philips Hue | ✅ Yes | 1-2 hrs | Hue Bridge on network |
| Screenshots | ✅ Yes | 1-2 hrs | Electron native |
| YouTube | ✅ MCP setup now | 1 hr setup | DOC72 for knowledge storage |
| PACER | ✅ Phase 1 now | 4-6 hrs | Full features need DOC72/DOC23 |
| Zoom | ⚠️ OAuth setup now | 1 hr setup | Processing needs DOC3 |
| Teams | ⚠️ Already in M365 | Minimal | Uses existing M365 auth |
| DOC24 registry | ⚠️ Register tools now | 2 hrs | Full routing needs DOC24 backend |
**Recommended build order:**
1. Apple Reminders (trivial, immediate value)
2. Hue (fun, immediate value, no dependencies)
3. Screenshots + OCR (useful, no dependencies)
4. YouTube MCP setup (quick, search works immediately)
5. PACER Phase 1 (highest value, takes longest)
6. Zoom/Teams OAuth registration (prep for later)
7. DOC24 capability registry population (prep for later)