139 personalised outreach messages sent, 174 people tracked
Built for
one operator running networking, news, outreach, Twitter, and vault hygiene on a schedule
Project
Aria Agent OS
Networking agent sends up to 23 personalised LinkedIn requests per run on a Mon/Wed/Fri cadence; news agent produces eight daily briefings that feed it; Twitter agent posts three times a day with a Slack approval loop; hygiene agent audits the vault. Numbers read live from the OS folder by its dashboard.
Demo

How it works
01
Interpretable Context Methodology: the agent reads five layers of CONTEXT.md files and stops when it has enough, 2k to 8k tokens per task.
02
Agents are processes, people are nodes: one dossier per person in memory/, one engagement record per agent, linked both ways with wikilinks.
03
Pipeline state is encoded by moving a file between stage folders, so Obsidian's graph shows the funnel for free.
04
Six scheduled tasks drive the day; every run appends to a daily log the dashboard parses.
05
1,646 markdown files and no service layer.
Stack and code
- Claude Code
- Markdown
- Obsidian
- Playwright MCP
- Slack
- Node dashboard
- cron
DESIGN.md— The architectural canon: five layers, memory model.
# Aria Agent OS - Design Document
> **Read this first.** This is the architectural canon for Aria Agent OS. Any
> Claude session - Cowork or Claude Code - entering this folder should read
> `CLAUDE.md` and then this document before doing anything else.
>
> For build chronology, status, and scoping decisions, see `HISTORY.md`.
---
## What this is
A folder-based agent operating system following the **Interpretable Context
Methodology (ICM)** developed by Jake Van Clief. The folder structure IS the
agent. Files are state. There is no orchestration framework, no database, no
service layer. Plain markdown files in a deliberate directory layout, read by
a single LLM session at a time.
**Canonical reference:**
- Paper: [arXiv:2603.16021 - Interpretable Context Methodology: Folder
Structure as Agentic Architecture](https://arxiv.org/abs/2603.16021)
(Van Clief & McDermott, 2026)
- Repo: [github.com/RinDig/Interpreted-Context-Methdology](https://github.com/RinDig/Interpreted-Context-Methdology)
- Origin video: [Stop Building AI Agents. Use This Folder System Instead.](https://www.youtube.com/watch?v=MkN-ss2Nl10)
## The 5-layer ICM model
The agent reads down through these layers and stops as soon as it has enough
to act. Most tasks don't need all five. Total context per task: ~2,000–8,000
tokens.
```
Layer 0: CLAUDE.md "Where am I?" always loaded (~800 tok)
Layer 1: <project>/CONTEXT.md "Where do I go?" on project entry (~300)
Layer 2: <project>/stages/<n>/CONTEXT.md "What do I do?" per-task (~200–500)
Layer 3: vault folders, _config/, "What rules apply?" loaded selectively
shared/, skills/
Layer 4: stages/<n>/output/ "What am I working on?" loaded selectively
```
Layer 3 has two scopes:
- **3a - `memory/` at OS root** (`memory/people/`, `memory/companies/`,
`memory/decisions/`, `logs/daily/`, `memory/inbox/`,
`memory/templates/`) - facts about people, companies, topics, decisions;
shared across all projects, written to by any agent.
- **3b - `_config/`** (project-scoped) - factory configuration for one
agent (ICP, voice, offer, etc.). Lives inside the agent's project folder.
## Memory model — Option B (person-canonical, agent-engagement)
The OS root **is** an Obsidian vault. `.obsidian/` lives at
`/Users/aria/Documents/Aria Agent OS/.obsidian/`. Every markdown file in the
OS is part of the same graph and reachable by `[[wiki link]]`.
**Key principle: agents are processes, not graph nodes. The PERSON is the
graph node; what the agent did is per-engagement.**
- **Person dossier** lives at `memory/people/<slug>.md`. Describes who they
are: background, business, stack, voice, audience, disqualifiers. Written
once when first encountered; extended as new facts emerge. Read by every
agent. Single source of truth for identity.
- **Engagement record** lives at `<agent>/<stage>/output/<slug>.md`.
Describes what THIS agent did with this person: anchor, drafted message,
send state, outreach log. Owned by exactly one agent. Files MOVE between
the agent's stage folders to encode pipeline state.
- **Linkage.** Every engagement record carries `dossier_ref:
'[[memory/people/<slug>]]'` in frontmatter and a body line `See dossier:
[[memory/people/<slug>|<Name>]]`. Every dossier carries a `## Engagements`
section listing wikilinks to all engagement records. Bidirectional graph.
Concretely, when the outreach agent meets Sarah Kim at Acme Corp:
- Dossier → `memory/people/sarah-kim.md` (who she is — agent-agnostic)
- Outreach engagement → `outreach-agent-arcadia/stages/05-send/output/sarah-kim.md` (Why-this-pitch, messages, send log)
- Decision recorded → `memory/decisions/2026-04-25-skip-acme-corp.md`
- Activity logged → appended to `logs/daily/2026-04-25.md`
If networking-agent later engages Sarah, it reads the existing dossier (no
re-enrichment) and writes its own engagement record at
`networking-agent/06-send/output/sarah-kim.md`. The dossier gains a second
row in its `## Engagements` table. Two engagements, one shared dossier.
github/aria-agent-os/DESIGN.md
README.md— How the networking agent runs, with its floors and cadence.
# networking-agent
Automated LinkedIn networking pipeline. Sends 20 personalized connection requests per run on a **Mon/Wed/Fri 05:00 cadence** (decision: 2026-05-04), distributed across 8 categories tied to specific personal goals (job at MBB, lease due diligence, ecosystem density). On the off-days (Tue/Thu) the `08-followup/` stage ships 5-10 coffee-chat-ask DMs to connections who already accepted.
> **Operating mode:** runs autonomously via four scheduled tasks (discovery 02:30, qualify 02:50, send 05:00 on Mon/Wed/Fri; follow-up 09:00 on Tue/Thu). The user can run any stage manually with the `/networking-*` slash commands.
## Quick reference
| | |
|---|---|
| Send target (per run) | Up to 23 connection requests, **15 hard floor**, 300-char personalized notes |
| Send schedule | 05:00 local, **Mon/Wed/Fri** (weekend + holidays skip) |
| Follow-up target (per run) | 5-10 coffee-chat-ask DMs, 200-400 chars |
| Follow-up schedule | 09:00 local, **Tue/Thu** (off-days from the send pipeline) |
| Channel | LinkedIn connect + note → LinkedIn DM thread continuation |
| Send mechanism | Claude-in-Chrome MCP on user's logged-in session |
| State model | File location in stage folder = state. Plain markdown only. |
| Source of truth | `06-send/output/<slug>.md` — single canonical file per person, accreted by both send and follow-up stages |
## Per-run split (send stage, rebalanced 2026-05-06)
Spec total 23, hard floor 15. If projected ranked < 15 the agent halts and pings `#linkedin-networking` rather than ship a thin run. Decision: 2026-05-06-networking-agent-15-floor-bigtech-expansion.
| Slots | Category | Role | Goal |
|------:|----------|------|------|
| 4 | Consulting | Wide-pool absorber | Job at McKinsey / Bain / BCG |
| 3 | Real estate | Weak-pool, gated for follow-up | Lease due diligence |
| 2 | Founders | Weak-pool | Peer learning |
| 2 | Investors (general) | Weak-pool | Long-term ecosystem |
| 2 | YC (firm) | Premier — never accept cascade | Pipeline access |
| 2 | a16z | Premier — never accept cascade | Pipeline density |
| 2 | Tier-1 VCs | Premier — never accept cascade | Sequoia, Greylock, Benchmark, Founders Fund, Index, Accel |
| 6 | Big Tech | Wide-pool absorber, function-broad | HR/PM/EM/design/GTM/finance/ops at FAANG/MSFT/Nvidia/Stripe-tier |
When weak-pool buckets undersupply, slots cascade into the wide-pool absorbers (consulting + Big Tech). Premier slots stay empty rather than burn anchors.
## How to run
**Automatic.** Four scheduled tasks: `networking-agent-discovery` (02:30 MWF), `networking-agent-qualify` (02:50 MWF), `networking-agent-daily-run` (05:00 MWF — sends), and `networking-agent-followup-run` (09:00 Tue/Thu — coffee-ask DMs).
**Manual.** From any folder in the OS:
- `/networking-discover`, `/networking-qualify`, `/networking-send` — individual MWF stages
- `/networking-followup-run` — Tue/Thu coffee-ask loop (sweep → classify → anchor → draft → review or send)
- `/networking-followup-backlog` — manual one-shot for historical Connections backlog
- `/networking-reconcile` — check acceptances + transitions, move 06 → 07-track/<state>/
- `/networking-status` — read-only pipeline state
- `/networking-run` — DEPRECATED all-in-one (use individual commands)
## Folder structure (post 2026-04-28 refactor + 2026-05-04 follow-up addition)
github/aria-agent-os/networking-agent/README.md
CLAUDE.md— Identity and routing for the six-stage outreach pipeline.
# outreach-agent-arcadia - Identity & Routing
You are operating inside `outreach-agent-arcadia/`, the multi-channel outreach
pipeline for Aria Agent OS. ICM-compliant 6-stage workflow. Plain markdown.
Files move between stage `output/` folders to encode pipeline state.
**Read first** when entering this folder:
1. This file (you're here)
2. `CONTEXT.md` (the workspace overview)
3. The `CONTEXT.md` of the specific stage you've been routed to
4. Relevant `_config/` and `skills/` files per the stage's Inputs table
---
## Mission
Land **the first 10 paying customers** for Arcadia. The product being sold
right now is **a done-for-you Realm-setup service** ($7,500–$15,000 range,
tentative - see `_config/offer.md`). After 10 case studies, Arcadia
transitions to a self-serve platform.
Target: **creators earning $20k+/month** who are fragmented across multiple
tools (Discord/Slack + course platform + Notion) and would benefit from a
unified spatial home for their community.
---
## Pipeline stages
```
01-discovery → Find candidates
02-qualification → Score against ICP, accept/reject
03-enrichment → Comprehensive dossier per qualified lead ← load-bearing
04-personalization → Multi-channel send package per lead
05-send → Dispatch via Playwright browser automation (all platforms)
06-followup → Bumps + reply handling → Calendly
```
Each stage reads stage N-1's output and the relevant `_config/` and `skills/`
files. **One-way flow** with one allowed back-edge: stage 03 may reject a
lead back to stage 02 if enrichment reveals it's below ICP.
All leads live in the stages pipeline. Phase-0 discovery targets (96 sent,
`source: phase-0-discovery`) now live in `stages/05-send/output/`.
Phase-0.1 YouTube discovery targets live in `phase-0.1-youtube-discovery/output/`
(separate batch, will migrate to stages after sends complete).
Phase-0 archive (original CONTEXT.md, questions, templates) is at
`stages/_phase-0-archive/` for reference.
### Discovery vs. sales outreach
Discovery outreach (`source: phase-0-discovery` or `source: linkedin-discovery`)
uses different voice rules than sales outreach. Discovery is pure guidance-seeking:
no Loom, no Arcadia features, no pitch. The `source` field in frontmatter
determines which voice rules apply, not which folder the file is in.
**Segments** (every target is tagged):
- `mega-creator` - 1M+ followers, custom platforms. Long-shot bonus, ONE message.
- `established-creator` - $20K+/month MRR, 100K+ audience.
github/aria-agent-os/outreach-agent-arcadia/CLAUDE.md