For the past six years, I have focused on knowledge management and productivity. This journey led me to start OSlash and spend a significant amount of time (and money π) working with LLMs.
Everything I write below is based on empirical evidence, prompt experimentation, and guesswork. As the Manus team says, “It’s not elegant, but it works” 1
Note: I have drawn inspiration from Manus and discussions with engineering teams at Anthropic regarding their internal guidelines for Claude Projects and Code.
This is a semi-automated attempt to build a personal OS for work - in this case being a GTM engineer for a fast growing dev tool company.
My goal is to design an OS that:
- Remembers everything about my company, strategy, and style
- Researches automatically before drafting anything
- Works anywhere - from my IDE or even my phone via Github
I want to run multiple instances of Claude Code in parallel, so I use a tool called Conductor (similar to Cursor Agent ). If I were to do this project again, I would probably just use Cursor.2
I have also used various models, from Opus 4.1 and 4.5 to smaller models for simple file commands.
How to start
Start with Claude Code in a single Github repo and provide guidelines to create the following files with context about your company, yourself, and your role.
- Start with CLAUDE.md - Tell Claude who you are
- Add context files - ex companies.md, prospects.md, competitors.md, tools.md
- Large Data files - CSV, JSON (leads, competitors, companies)
- Documentation (Markdown) for playbooks, templates, and meeting notes
CLAUDE.md
This is the most important file. Claude reads this first to understand who you are, what your role is, and what actions you need to take. You can ask Claude for code directly to configure the md file and keep it updated.
What Each File Does (And How They Link)
Here I am writing from GTM perspective your file structure might be different and will evolve with time. You can create as many files as possible, just make sure they are linked to CLAUDE.md
- CLAUDE.md - Claude’s identity and style guide
- GTM_CONTEXT.md - Strategy, ICP, and positioning
- COMPETITORS.md - Competitive intelligence
- OUTREACH_TEMPLATES.md - Email/LinkedIn templates
- MEETING_INDEX.md - Master meeting index
- meetings/notes/*.md - Individual meeting notes
- env folder - API keys (environment folder for using external tools)
The Hierarchy of Context
Claude reads files in this order of priority:
1. CLAUDE.md (ALWAYS read first)
βββ "This is who I am and how I communicate"
2. Task-specific context (based on what you're asking)
βββ Email? β OUTREACH_TEMPLATES.md
βββ Competitor question? β COMPETITORS.md
βββ Strategy question? β GTM_CONTEXT.md
βββ Meeting reference? β MEETING_INDEX.md β specific notes
3. Recent context (for follow-ups)
βββ Conversation history based on your query box
Make the entire setup to run on cloud and mobile
- I want to ensure that I can use everything on the go (on my mobile). The best interface and workflow I found is Github Actions .
- Claude Code now has a native integration. You can push all your code to a Github repository, including large files like CSV and JSON, using Github LFS .
- I can simply ask Claude for my top three priorities as an issue, and I will receive the results.
When you ask Claude to draft an email:
# Github Action loads these files:
cat CLAUDE.md >> context.txt # Your identity
cat context/GTM_CONTEXT.md >> context.txt # Your strategy
cat context/OUTREACH_TEMPLATES.md >> context.txt # Your templates
cat context/MEETING_INDEX.md >> context.txt # Recent learnings
# Then sends to Claude with your request
When you ask about a competitor:
# Github Action loads:
cat CLAUDE.md >> context.txt
cat context/COMPETITORS.md >> context.txt # Competitor intel
cat context/MEETING_INDEX.md >> context.txt # What came up in meetings
When you ask about recent decisions:
# Github Action loads:
cat CLAUDE.md >> context.txt
cat context/MEETING_INDEX.md >> context.txt # Has "Recent Decisions" table
# Claude can reference specific meetings if needed
External APIs
The Github Action is just the interface. The real power comes from connecting external APIs that do the heavy lifting. Here’s how I integrate multiple APIs to create a complete GTM system.
- If you’re creating a list of prospects for your company, use Parallel AI to generate a list of look-alike companies based on your competitors’ customer case studies.
- Use Selenium or a headless browser to run automation directly in Chrome. This is easier if you are using Cursor Agent. For example, you can automate Sales Navigator requests for all ICPs on LinkedIn.
- In my case - I used Coresignal API to make a list of all the companies who are hiring AI engineers.
- And then use Firecrawl to visit company websites before drafting emails, verifying of ICP etc.
- You can also add multiple webhooks to connect with GTM tools and enrich them directly in HubSpot, Slack, and draft Gmail responses. You can even get creative and use a terminal-based mail client like Mutt 3.
Note: it helps to create a .env file to store all your API keys securely in one folder (both for models and external tools)
# .env - Store your API keys here (add to .gitignore!)
# ===========================================
# Core AI APIs
# ===========================================
ANTHROPIC_API_KEY=sk-ant-your-key-here
OPENAI_API_KEY=sk-your-openai-key-here
# ===========================================
# Lead Discovery & Enrichment
# ===========================================
# Parallel.ai - Web-scale entity discovery
PARALLEL_API_KEY=your-parallel-api-key
# Firecrawl - Web scraping and search
FIRECRAWL_API_KEY=fc-your-firecrawl-key
# ===========================================
# CRM & Notifications
# ===========================================
HUBSPOT_API_KEY=pat-your-hubspot-key
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/xxx/xxx/xxx
Building Institutional Memory with Meeting Notes
One of the most powerful parts of this system is how it captures and compounds knowledge from every meeting.
Instead of insights disappearing after calls, they become permanent contexts that Claude can reference.
Every meeting gets recorded, transcribed, and structured into searchable context.
Folder structure:
meetings/
βββ MEETING_NOTES_PROMPT.md # Prompt template for extraction
βββ README.md # How to use the system
βββ notes/
βββ _TEMPLATE.md # Template for new notes
βββ 2026-01-09_partner-call.md
βββ 2026-01-08_vendor-eval.md
βββ 2026-01-06_strategy-ceo.md
βββ ...
Every meeting gets recorded, transcribed, and structured into searchable context. I have a written custom recipe in Granola to make transcripts more actionable.
Example MEETING_INDEX.md structure:
| Date | Meeting Title | Type | Participants | Notes | Key Topics |
|------|---------------|------|--------------|-------|------------|
| 2026-01-09 | Partner GTM Call | Partner | Team, Partner | [π](../meetings/notes/2026-01-09_partner-call.md) | Positioning, Packaging |
| 2026-01-08 | Vendor Evaluation | Vendor | Team, Vendor | [π](../meetings/notes/2026-01-08_vendor-eval.md) | Signals, HubSpot |
| 2026-01-06 | Strategy Session | Internal | Team | [π](../meetings/notes/2026-01-06_strategy.md) | SEO, Content |
## Key Insights by Theme
### π― GTM Strategy
- **2026-01-06**: PLG caps at $1-2M; enterprise must cover the rest
- **2026-01-05**: ICP is only 2-5k accounts; need high-touch
### π° Positioning
- **2026-01-09**: "Sell the architecture, not just the product"
- **2026-01-06**: "Better accuracy β lower costs β better agents"
### π’ Competitive Intel
- **2026-01-08**: Competitor X = strong in segment Y
- **2026-01-06**: We're losing SEO on "keyword Z"
## Open Action Items
- [ ] Build quarter plan for revenue target
- [ ] Start outreach campaign (700 emails)
- [ ] Fix CRM tracking
## Recent Decisions
| Date | Decision | Context |
|------|----------|---------|
| 2026-01-09 | Evaluate new partner | Fractional CMO for positioning |
| 2026-01-06 | Programmatic SEO experiment | "Build X with Y" content |
My Transcript Recipe which you can start using with Gong, Granola or any Note Taking call:
I just had a meeting. Extract structured notes for my GTM project.
Here's the transcript:
[PASTE TRANSCRIPT]
Extract:
1. **Meeting Metadata** - Date, participants, type
2. **Summary** - 2-3 sentences max
3. **Key Discussion Points** - Top 3-5 topics with conclusions
4. **Decisions Made** - What was agreed upon
5. **Action Items** - Who, what, when
6. **GTM Insights**:
- Customer signals (pain points, needs, objections)
- Competitive intel (mentions of competitors)
- Positioning (what resonated, messaging ideas)
- Market insights (trends, opportunities)
7. **Open Questions** - What still needs answers
8. **Follow-up** - Next meetings, who to loop in
Format as clean markdown I can save directly.
I manually then paste all the notes to the MEETING_INDEX.md
After a few weeks of meetings, you can ask Claude:
@claude Based on our recent meetings, what positioning is resonating with prospects? What objections keep coming up?
Claude reads the meeting index and responds with synthesized insights from all your conversations.
Or when drafting outreach:
@claude Draft an email to a consulting partner. Reference what we learned from the X meeting about how to position for agencies.
Claude pulls specific insights from that meeting into your email.
This is how you build institutional memory that compounds over time. Every meeting is added to MEETING_INDEX.md which is referred to by CLAUDE.md.
This has been so successful that our company now has a separate Github repo for all customer calls.
Why This Architecture Works
1. Single source of truth: Each type of information has ONE home (single folder structure). The file structure is the system.
ai-gtm-system/
βββ CLAUDE.md # WHO you are (identity)
βββ context/ # WHAT you know (knowledge)
β βββ GTM_CONTEXT.md
β βββ COMPETITORS.md
β βββ EMAIL_GUIDELINES.md
β βββ MEETING_INDEX.md
βββ meetings/ # WHAT happened (history)
β βββ notes/
βββ scripts/ # HOW to do things (automation)
βββ .github/workflows/ # WHERE to run (infrastructure)
2. Layered context: Context loads in layers, from general to specific to recent. General (CLAUDE.md) β Specific (templates) β Recent (meetings)
Layer 1: IDENTITY (always loaded)
βββββββββββββββββββββββββββββββββββββββ
β CLAUDE.md β
β - Who I am β
β - My communication style β
β - Core company facts β
β - What we NEVER say β
βββββββββββββββββββββββββββββββββββββββ
β
Layer 2: DOMAIN (loaded based on task)
βββββββββββββββββββββββββββββββββββββββ
β GTM_CONTEXT.md (strategy) β
β COMPETITORS.md (if competitive) β
β EMAIL_GUIDELINES.md (if emailing) β
β TEMPLATES.md (if drafting) β
βββββββββββββββββββββββββββββββββββββββ
β
Layer 3: RECENT (loaded for relevance)
βββββββββββββββββββββββββββββββββββββββ
β MEETING_INDEX.md (recent insights)β
β Specific meeting notes β
β Recent email threads β
βββββββββββββββββββββββββββββββββββββββ
3. Compounding knowledge: Every meeting adds to the system
MEETING_INDEX.md
- 50+ meetings
- Clear positioning playbook
- Objection handling guide (battle-tested)
- Competitive intelligence database
- Pricing feedback from 20 conversations
4. Easy updates: Change one file, and all future responses will improve. (EMAIL_GUIDELINES.md is referenced in all the different folders and is linked to GTM_CONTEXT.md.)
5. Traceable: You can see exactly where Claude got its information
Your question: "How should I position against Competitor X?"
Claude's response:
"Based on your competitive intel, Competitor X is strong in enterprise
but weak in developer experience. From your Jan 8 meeting with [Partner],
they mentioned customers switching because of [specific reason]..."
You can verify:
βββ COMPETITORS.md β Line 45: "Competitor X: strong enterprise, weak DX"
βββ meetings/notes/2026-01-08_partner.md β "Customers switching because..."
Issues in the current system
-
Context gets lost. Even with all the different folder structures, Claude doesn’t automatically know which file to reference. You have to:
- Remember which files exist
- Explicitly mention them or hope Claude reads them
- Re-reference files as the conversation gets long
- Periodically say “read CLAUDE.md and GTM_CONTEXT.md” to refresh context.
-
Working with large files in JSON/CSV takes time and the workflow is not suitable for Github action
- Can’t fit in context window
- Github Actions has output limits
- Processing is slow and expensive
- No way to query subsets
-
As the chat window gets longer, context rotting occurs, leading to loss of relevant information.
-
I have more than 40 guideline files, I often forget what to invoke. A better retrieval system linked to a vector database (by creating a separate collection folder for every data) might solve this issue.
-
Each conversation starts fresh - Claude doesn’t remember:
- The email style you preferred yesterday
- The decision you made last week
- The leads you already contacted (I am experimenting with knowledge graph solution here)
-
Context Engineering for AI Agents: Lessons from Building Manus - https://manus.im/blog/Context-Engineering-for-AI-Agents-Lessons-from-Building-Manus ↩︎
-
Cursor Agents help you run multiple agents in parallel unlike Claude Code via Terminal ↩︎
-
Create IMAP with Google and get a mail client that works within your terminal ↩︎