Files
noteflow/docs/sprints/phase-5-evolution/sprint-25-langgraph/sprint-27-cross-meeting/README.md
2026-01-22 16:15:56 +00:00

2.2 KiB

Sprint 27: Cross-Meeting RAG

Size: M | Owner: Backend + Client | Phase: 5 - Platform Evolution Effort: ~1 sprint | Prerequisites: Sprint 26 (Meeting Q&A MVP)


Objective

Enable workspace-scoped Q&A and annotation suggestions across multiple meetings.


Key Tasks

Extend SegmentRepository with workspace-scoped search:

async def search_semantic_workspace(
    self,
    query_embedding: list[float],
    workspace_id: UUID,
    project_id: UUID | None = None,
    limit: int = 20,
) -> list[tuple[Segment, float]]:
    """Search segments across all meetings in workspace/project."""

Task 2: WorkspaceQA Graph

Create infrastructure/ai/graphs/workspace_qa.py:

  • Similar to MeetingQA but omits meeting_id filter
  • Groups results by meeting for citation display
  • Returns cross-meeting citations

Task 3: Annotation Suggester

Add annotation suggestion output to graph:

class SuggestedAnnotation:
    text: str
    annotation_type: AnnotationType
    segment_ids: list[int]
    confidence: float

Task 4: Conversation History

Implement thread persistence with checkpointer:

  • Store conversation turns in graph state
  • Support follow-up questions
  • Maintain context across requests

Task 5: Apply Annotation Flow

UI flow to apply suggested annotations:

  1. Display suggested annotations in AskPanel
  2. User clicks "Apply" on suggestion
  3. Call existing AddAnnotation RPC
  4. Update UI to show applied status

Acceptance Criteria

  • Cross-meeting queries return results from multiple meetings
  • Suggested annotations can be applied with one click
  • Conversation history persists across requests
  • Follow-up questions reference previous context
  • make quality passes

Files Created/Modified

Action Path
Modified src/noteflow/infrastructure/persistence/repositories/segment_repo.py
Created src/noteflow/infrastructure/ai/graphs/workspace_qa.py
Modified src/noteflow/application/services/assistant/assistant_service.py
Modified client/src/components/meeting/AskPanel.tsx