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 recordslearnings.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 dayspersonal/{michael,thomas}/— Daily work logs per operatortranscripts/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 pillarsdrafts/{platform}/— Work in progresspublished/{platform}/— Posted contentideas/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.
| Operator | Log Location |
|---|---|
| Thomas | ops/personal/thomas/YYYY-MM-DD.md |
| Michael | ops/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:
- Decisions — What was decided, with context. These are the most valuable part. Present as a table: Decision | Context.
- Key Context — Strategic observations, market intel, relationship updates, things discussed that aren't decisions or tasks but matter for future reference.
- 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)
- Create the huddle file at
ops/huddles/YYYY-MM-DD.md - Update network profiles if new people discussed
- Create Linear issues only for items that need tracking
- 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)
- 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
- Network contacts →
- Update network profiles if people discussed have profiles in
network/ - Create approved Linear issues
- Log in
ops/transcripts/processed.jsonfor 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:
| Field | Description |
|---|---|
| Question | Verbatim or near-verbatim from transcript |
| Topic | GTM, Market, Team, Traction, Competition, Technical, Business Model, Vision |
| Answer Quality | strong (landed, they moved on satisfied), decent (adequate, didn't wow), weak (fumbled/vague/unconvincing), no answer (dodged/missed) |
| Notes | What 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.mdandfundraising/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:
- Read the investor's file in
fundraising/investors/ - Read the question map — what do investors usually ask?
- Read answer gaps — where are we weak?
- Read investor signals — what does this specific firm care about?
- 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