VC Second Brain 사례 노트와 회의록을 AI 컨텍스트로 쓰기

Second Brain: 내 노트와 회의록을 AI가 찾고 읽게 만들기

Second Brain은 Obsidian 노트, 회의 오디오, 회의록, 채팅 기록, 메모리를 모아 AI 채팅의 참고자료로 붙이는 시스템이다. 초보자에게는 개인 도서관으로 설명하면 쉽다. 자료를 책장에 넣고, 질문이 오면 관련 책을 찾아 책상 위에 펼쳐준다.

FastAPI Next.js STT APIs meeting_chunks Memory Tiers
사용자 질문

지난 회의에서 제품 출시 일정 관련해서 결정된 내용을 찾아줘.

자동으로 붙는 context

meeting_chunks 4개, selected_meeting transcript 1개, working memory 2개

AI 답변

결정 사항, 담당자, 후속 작업을 회의록 근거와 함께 정리한다.

공개 강의용 안전 재현 화면이다. 실제 프로젝트의 개인 표시와 민감한 대화 내용은 넣지 않았다.

이 앱은 무엇을 자동화하나

사용자가 직접 노트와 회의록을 뒤지지 않아도, AI가 관련 자료를 찾아 읽고 답하게 만든다.

Frontend

지식창고 화면

채팅, 회의록, 검색, 소스, 메모리, 플래닝 화면이 있다. 사용자는 자료를 고르고 질문한다.

Backend

검색과 채팅 주방

FastAPI와 claude-chat 서버가 검색, STT, provider 호출, meeting context 주입을 맡는다.

DB

지식과 기억 장부

notes, meetings, meeting_chunks, chat history, memory_items, usage log가 저장된다.

회의 오디오가 AI 답변 근거가 되는 순서

STT는 음성을 글자로 바꾸는 기능이다. RAG는 그 글자 조각을 나중에 찾아 AI에게 붙이는 흐름이다.

1 Upload

회의 오디오나 노트를 넣는다. 큰 오디오는 upload job으로 처리한다.

2 Transcribe

Deepgram, Soniox, Mistral, ElevenLabs 같은 STT API가 음성을 텍스트로 바꾼다.

3 Chunk / Embed

회의록을 조각내고 embedding을 저장한다. 각 조각은 검색 가능한 카드가 된다.

4 Retrieve

질문과 가까운 meeting_chunks, notes, memory를 찾고 순위를 섞어 고른다.

5 Chat / Memory

선택한 회의록과 검색 결과를 context로 붙이고, 중요한 내용은 memory로 승격한다.

Second Brain에서 핵심 단어가 하는 일

선택한 회의록이 context에 들어가는 방식

selected meetings는 사용자가 명시적으로 고른 회의록을 AI 책상 위에 통째로 펼쳐주는 기능이다.

Selected Meeting Context

전체 회의록 주입 구조

<system-reminder>
  <selected_meetings>
    meeting_id: meet_2026_06_25
    title: 제품 출시 일정 회의
    speakers:
      - PM: 제품 일정 담당
      - Ops: 운영 담당
    transcript:
      PM: 출시 후보일은 7월 둘째 주입니다.
      Ops: 운영 준비는 7월 첫째 주까지 끝내야 합니다.
  </selected_meetings>
</system-reminder>
Retrieval Packet

자동 검색으로 붙는 자료

{
  "sources": [
    {
      "kind": "meeting_chunk",
      "title": "제품 출시 일정 회의",
      "distance": 0.11,
      "excerpt": "출시 후보일은 7월 둘째 주..."
    },
    {
      "kind": "memory",
      "tier": "working",
      "content": "현재 제품 출시 일정 조율 중"
    }
  ],
  "instruction": "근거가 있는 내용만 답변에 사용"
}

채팅 호출과 결과값 예시

사용자의 질문, provider 선택, 선택한 회의록 ID가 API 요청으로 들어가고, 백엔드는 context를 붙인 답변을 만든다.

요청

회의록을 붙인 채팅 요청

{
  "route": "/api/claude-chat",
  "provider": "codex",
  "message": "지난 회의에서 출시 일정 결정사항만 정리해줘",
  "selected_meeting_ids": ["meet_2026_06_25"],
  "sources": ["meetings", "memory", "notes"]
}
결과

근거가 붙은 답변

{
  "answer": [
    "출시 후보일은 7월 둘째 주입니다.",
    "운영 준비 마감은 7월 첫째 주입니다.",
    "PM과 Ops가 후속 작업 담당입니다."
  ],
  "used_context": {
    "selected_meetings": 1,
    "meeting_chunks": 4,
    "memory_items": 2
  },
  "usage_log": "llm_cli_usage_log_553"
}

AI가 답변 전에 보는 책상

System Prompt

답변 방식, 도구 사용 규칙, 현재 provider의 런타임 규칙을 넣는다.

Chat History

대화 흐름을 유지하기 위해 이전 사용자/AI 메시지를 넣는다.

Retrieved Chunks

질문과 의미가 가까운 meeting_chunks, notes, memory를 검색해 붙인다.

Selected Meetings

사용자가 고른 회의록은 전체 transcript를 명시적으로 넣는다.

Answer + Logs

답변 후 chat history와 provider별 사용량 로그가 DB에 남는다.

Second Brain의 주요 장부들

장부역할초보자 비유
meetings회의 기본 정보회의 폴더
meeting_transcriptsSTT 결과 전문회의록 원문
meeting_chunks검색용 회의록 조각색인 카드
memory_items오래 보관할 기억중요 메모장
chat_sessions채팅 대화 기록상담 기록지
embed_cost_daily임베딩 비용 집계검색 비용 영수증

수강생에게 이렇게 설명하면 쉽다

1. AI는 기억하는 게 아니라 다시 읽는다

중요한 자료를 DB에 넣어두고, 질문할 때마다 관련 조각을 찾아 다시 context로 넣는다.

2. 회의록은 통째로도, 조각으로도 쓴다

selected meeting은 전체 회의록 주입, semantic search는 가까운 조각 검색이다. 둘은 역할이 다르다.

3. provider마다 비용 장부가 다르다

STT, embedding, LLM CLI/API는 과금 방식이 달라서 사용량 로그도 기능별로 나눠야 한다.

복사했습니다