docs/CLAUDE-baseline

CLAUDE.md

Operating system for DaisyAI — a two-person startup building AI tooling for healthcare utilization review.

This repo is not a codebase. It's a business operating system stored as markdown files. There's a Next.js dashboard that reads some of these files, but the files are the source of truth.


DaisyAI

Clinical case management for healthcare utilization review (UR). Helps nurses evaluate medical necessity with AI-driven, criteria-based reviews.

Current mode: FDE (forward-deployed engineering) consulting with health plans, with a path to productization. First client: Premera (Blue Cross, West Coast).

Related repos:

  • daisyai-ai/daisyai-app — Main product (Next.js 15, React 19, TypeScript, Neon Postgres, Clerk, Vercel AI SDK)
  • daisyai-ai/daisyai-www — Marketing site

Stable Systems

These are established and have their own READMEs with full documentation.

Network (network/)

Relationship management. Everyone we actually know — advisors, mentors, connectors, investors, warm contacts. Each person gets a directory with profile.md and optionally calls/ for conversation history.

README: network/README.md

When someone new comes up in a transcript or conversation, create their directory here. When a call happens with someone in the network, call notes go in their calls/ folder and the interaction table in their profile gets updated.

Clients (clients/)

Active client engagements. Three-layer pipeline: raw inputs → structured sub-items (questions, scope, commercial) → synthesis overview. Each client gets a directory.

README: clients/README.md Active: Premera, McBee

Fundraising (fundraising/)

Investor outreach, materials, meeting notes, and cross-call analysis. Per-firm tracking in investors/, meeting notes in meetings/, synthesized patterns in analysis/.

README: fundraising/README.md Status: Raising $2-3M first institutional check. Multiple investor conversations active.

Outreach (outreach/)

Cold/warm outreach campaigns to health plans. Experiment-driven — each campaign has a hypothesis, message, and results. Company profiles and outreach history tracked per-target.

  • campaigns/ — numbered experiments (001-health-affairs-cmo, etc.)
  • companies/ — target company profiles + outreach records
  • learnings.md — rolling synthesis across campaigns

Other Directories

These exist and are used, but the structure is more fluid.

Ops (ops/)

Operational hub. Priorities, huddle records, and personal logs.

  • objectives.md — Current sprint priorities and task tracking. Check this first for context on what matters right now.
  • huddles/ — Daily sync summaries. Processed output only: decisions, key context, action items. Raw transcripts stay out — the value is in the synthesis. See "Huddle Processing" in Agent Behavior.
  • hot-board.md — Things that need action in the next few days
  • personal/{michael,thomas}/ — Daily work logs per operator
  • transcripts/processed.json — Tracks which transcripts have been processed

Content (content/)

Marketing content pipeline — drafts, published posts, ideas backlog. Organized by platform (Twitter, LinkedIn, Substack).

  • pillars.md — Voice guide and 5 content pillars
  • drafts/{platform}/ — Work in progress
  • published/{platform}/ — Posted content
  • ideas/backlog.md — Topic queue

Thinking (thinking/)

Top-level space for reflections and strategic memos, indexed by date.

Archive (archive/)

Old systems that have been superseded — original CRM (245+ accounts), old prospect lists, old research. Reference only.


Agent Behavior

Daily Work Log Tracking

IMPORTANT: Track work in the operator's daily log throughout the session.

OperatorLog Location
Thomasops/personal/thomas/YYYY-MM-DD.md
Michaelops/personal/michael/YYYY-MM-DD.md

When to update:

  • Task completed → add to Work Log section
  • Decision made → add to Thinking/Decisions section
  • Problem encountered → add to Blockers section
  • End of session → offer to add assessment

How to identify operator: Check git config user or ask if unclear.

Pattern: Don't interrupt flow. Batch updates when natural (after completing a task, during a pause). If log doesn't exist for today, create it from the template.

Transcript Processing

When the user pastes a transcript, first identify the type, then process accordingly.

Transcript types:

  • Huddle — Daily sync between Thomas and Michael. Most common. → See "Huddle Processing" below.
  • Investor call — VCs, angels, fund managers. → See "Investor Call Processing" below.
  • External call — Client meetings, advisor calls, network contacts. → See "External Call Processing" below.

How to detect: Huddles are Thomas + Michael only, informal, covering multiple topics. Investor calls involve fundraising context. External calls are everything else (clients, advisors, prospects).

Transcript sources: Slack huddles, Google Meet, Fireflies, Zoom, pasted text, any format.


Huddle Processing

Daily syncs between Thomas and Michael. The processed output is what matters — not the raw transcript.

Output location: ops/huddles/YYYY-MM-DD.md

Phase 1: Extract & Present

Read the full transcript and extract:

  1. Decisions — What was decided, with context. These are the most valuable part. Present as a table: Decision | Context.
  2. Key Context — Strategic observations, market intel, relationship updates, things discussed that aren't decisions or tasks but matter for future reference.
  3. Action Items — Who's doing what, with status. Present as a table: Task | Owner | Status.

Present this to the user before creating the file. For huddles, not every action item needs a Linear issue — many are small things already being handled in real-time. Only propose Linear issues for items that need tracking beyond today.

Phase 2: Create (After Approval)

  1. Create the huddle file at ops/huddles/YYYY-MM-DD.md
  2. Update network profiles if new people discussed
  3. Create Linear issues only for items that need tracking
  4. Update any relevant system files (fundraising, clients, etc.) if decisions affect them

External Call Processing

For non-huddle, non-investor transcripts (client calls, advisor calls, network contacts).

Phase 1: Extract & Propose (DO NOT CREATE YET)

1.1 Scan for Action Triggers Read the FULL transcript and flag every instance of:

  • "I'm gonna...", "I'll...", "Let me..."
  • "We should...", "We need to...", "Let's..."
  • "TODO:", "Action item:", explicit assignments
  • "This week...", "Today...", "By Friday..."
  • Product decisions ("Remove the...", "Add a...", "Change...")
  • Outreach mentions ("Email X", "Reach out to Y", "Follow up with Z")

1.2 Extract at GRANULAR Level

  • One task per discrete action (not grouped summaries)
  • "Prepare Doctor Bauman proposal" → actually 3 tasks: pricing doc, interview plan, consulting scope
  • If in doubt, split it out

1.3 Propose Issues (No Labels) Present a table to the user BEFORE creating anything:

| # | Task | Owner | Priority | Blocked? |
|---|------|-------|----------|----------|
| 1 | Remove BAA gate from app | Thomas | High | No |
| 2 | Interview Bauman's team | Both | Medium | Yes - needs deal closed |
...

1.4 No Labels - Use Description for Blockers Don't use Linear labels — they're distracting. Keep issues clean.

For blocked issues, add to description:

**⏳ BLOCKED:** [What it's waiting on]
**Depends on:** MCP-XX

1.5 Wait for Approval Ask: "Create these N issues? Any to add/remove/modify?"

Phase 2: Create (After Approval)

  1. Create call note in the appropriate location:
    • Network contacts → network/{person}/calls/YYYY-MM-DD.md
    • Client calls → relevant client directory
    • Other → assess on a case-by-case basis
  2. Update network profiles if people discussed have profiles in network/
  3. Create approved Linear issues
  4. Log in ops/transcripts/processed.json for idempotency

Investor Call Processing

When the user pastes an investor call transcript (or identifies a transcript as an investor conversation), use a specialized two-layer workflow that builds on the general transcript processing above.

How to detect: Investor calls involve VCs, angels, or fund managers. Look for fundraising context, investment questions, due diligence, portfolio references, term discussions. If unclear, ask.


Layer 1: Per-Call Extraction

Create a meeting file at fundraising/meetings/YYYY-MM-DD-{investor-name}.md using the template in fundraising/meetings/README.md. The critical addition vs. regular transcript processing:

Extract EVERY question the investor asked. For each question:

FieldDescription
QuestionVerbatim or near-verbatim from transcript
TopicGTM, Market, Team, Traction, Competition, Technical, Business Model, Vision
Answer Qualitystrong (landed, they moved on satisfied), decent (adequate, didn't wow), weak (fumbled/vague/unconvincing), no answer (dodged/missed)
NotesWhat we said, or what we should have said

Also extract: concerns (statements of doubt, distinct from questions), what resonated, signals (interest level, process hints), and commitments (both sides).

After creating the meeting file, update the investor's file in fundraising/investors/ with the new interaction.


Layer 2: Cross-Call Synthesis

After processing the individual call, update three synthesis files:

1. fundraising/analysis/question-map.md

  • Merge new questions into the frequency table
  • Update thematic clusters with new data points
  • Refresh "meta-patterns" (what lands, what creates friction)
  • Add any new anticipated questions

2. fundraising/analysis/answer-gaps.md

  • Add any new weak/no-answer items as priority gaps
  • For each gap: what happened, current answer, suggested improvement, source material
  • Track status (needs prep / needs modeling / ready)

3. fundraising/analysis/investor-signals.md

  • Update the active pipeline table
  • Add to "what each investor cares about"
  • Update cross-investor patterns (emerging themes, resonance patterns)
  • Add prep notes for the next call with this investor

Feedback Loop

If the synthesis reveals a critical gap:

  • Flag it to the user immediately
  • Note it for updates to fundraising/materials/narrative/objections.md and fundraising/materials/deliverables/faq.md
  • Don't auto-update materials — propose the improvement and wait for approval

Pre-Call Prep

When asked to prep for an upcoming investor call:

  1. Read the investor's file in fundraising/investors/
  2. Read the question map — what do investors usually ask?
  3. Read answer gaps — where are we weak?
  4. Read investor signals — what does this specific firm care about?
  5. Produce a prep brief: likely questions, best answers, gaps to watch for

Project Management

Claude should actively manage work, not just extract tasks. This means:

1. Dependency Mapping When creating issues, identify what blocks what:

  • "Can't do X until Y is done" → mark X as blocked, note dependency
  • "X enables Y and Z" → X is high priority, unblocks others
  • Update Linear descriptions with **Depends on:** MCP-XX

2. Sequencing & Prioritization Propose execution order based on:

  • What unblocks the most other work
  • What's time-sensitive (deals, deadlines)
  • What can run in parallel

3. Deal Stage Awareness Track where prospects are in pipeline:

  • Lead → outreach tasks appropriate
  • Proposal sent → follow-up tasks appropriate
  • Closed → implementation tasks appropriate
  • Don't create implementation tasks for prospects not yet closed

4. Parallelization Suggest how Thomas and Michael can divide work:

  • Thomas: Dev, product, technical content
  • Michael: GTM, outreach, sales content
  • Both: Strategic decisions, client calls

5. Weekly Coordination When reviewing tasks or transcripts, surface:

  • What's blocked and why
  • What should be prioritized this week
  • What can be delegated to sub-agents
  • Overdue items needing attention

6. Sub-Agent Delegation For independent research or exploration tasks, spin up Task agents:

  • Market research
  • Competitor analysis
  • Content drafting

Memory Maintenance

After processing any major input — transcripts, emails, Google Sheets data, or other external sources — update the relevant memory files in the auto-memory directory (~/.claude/projects/.../memory/).

When to update:

  • Transcript processed → update relevant sections of MEMORY.md (fundraise state, client state, key decisions)
  • Investor call → update Fundraise State section (pipeline stage, signals, next steps)
  • Client call → update Client State section (engagement state, open items)
  • Major decision or strategic shift → update Key Decisions section
  • New system or directory created → update project-structure.md (separate file, reference only)

Principle: The next session should start warm. If something changed that a future session would need to know, write it down.


Development

Next.js 16 + TypeScript + Tailwind CSS v4. There's a dashboard that reads the markdown files.

npm run dev     # Start dev server
npm run build   # Production build
npm run lint    # ESLint

Daisy

v1

What do you need?

I can pull up the fundraise pipeline, CRM accounts, hot board, meeting notes — anything in the OS.

Sonnet · read-only