My AI Agent System

The AI agent space has been accumulating orthodoxies faster than it has been accumulating results. Every major provider ships their own agentic framework with the implicit argument that the right abstraction layer will solve the coordination problem. I tried OpenClaw. There was an aha moment — there usually is — but it collapsed quickly under the weight of my actual requirements: a sprawling, hybrid workload that spans product development, content, sales, and personal writing, all of it threaded through years of accumulated context I was not about to abandon or migrate.

So I built the system myself. Three components. Notion as the neural center of memory and management. GitHub — deployed on Cloudflare — as the execution backbone, polling every five minutes via global cron job. Cursor as the runtime environment where agents actually fire. That is the entire stack.

The philosophy behind it starts with a conviction I now treat as axiomatic: any agentic system lives or dies on two variables — context quality and toolset breadth — and the interface through which you govern both. Sophisticated orchestration on top of thin context is theater. What I needed was a single source of truth that could serve simultaneously as input, output, memory, and control panel. Notion already was that for me. Tens of thousands of pages of accumulated knowledge, years of structured databases, a UI I trust on both desktop and mobile. The switching cost was prohibitive, but more importantly, the switching motive was absent. Why fragment what is already unified?

The Notion agent database is the architecture made visible. Each row is an agent. Polish Journal. Market Research. Lead Finder. Each row carries a cron schedule, a designated model, linked instruction documents detailing full SOPs, and metadata fields — last run time, status, current output. The GitHub project reads this database every five minutes, identifies agents due to run, opens a Cursor session with full context loaded, and fires. The session inherits whatever MCP and API integrations the agent requires: social media posting via unified social API, Gmail for outbound email on my behalf, Notion read-write for both consuming instructions and depositing results. When the agent finishes, its output lands back in Notion, where it frequently becomes the input for the next agent in the chain.

The model selection is deliberately non-dogmatic. Cursor's Composer — effectively unlimited under the pro and ultra plans — handles the majority of agent workloads. For tasks that sit outside the coding-and-engineering orientation baked into Cursor's underlying system prompt — pitching a VC, drafting a content strategy, generating a cold email that does not read like it was written by a language model trained on Stack Overflow — I route through OpenRouter. A pure prompt, the correct model for the task, no framework-imposed personality bleeding into the output. The architecture treats model selection as a runtime parameter, not an infrastructure commitment. You do not marry a single LLM provider. That restraint costs almost nothing and buys everything.

For via.email — the product I am building, an email-native AI agent platform — this same system builds the thing it is nominally about. Agents review the backlog, write features, research competitors, generate FAQ copy, draft blog posts, schedule social content, produce post graphics from templates, identify and approach leads, surface VC prospects, and manage influencer outreach. Sub-agents nest inside primary agents: one ideates articles, one drafts them, one reviews them, one audits the published archive on a rolling basis. The system eating its own cooking is not irony — it is the validation condition.

The personal layer matters as much as the professional one. I write. The friction between a raw idea and a polished piece in my voice, meeting all my structural expectations, is where most ideas quietly die. I have reduced that friction by roughly 99.9% through a transcription-to-publication pipeline that is almost entirely automated. The agent does not replace the thinking. It eliminates the tax on the thinking.

What the major providers get wrong — and what OpenClaw got wrong for my purposes — is the assumption that abstraction is generosity. Lock a user into your orchestration layer, your memory schema, your model, and you have simplified their life. What you have actually done is made their context legible only to you. The moment your roadmap diverges from their needs, they are stranded. Building on Notion, GitHub, and Cursor means the context lives in a format I already own, the execution layer is configurable down to the model and the API call, and the control interface fits inside a workflow I have used for years. The system has no opinions about what I should be doing. It only asks what I want done and when.

That absence of opinion is the hardest thing to buy from a platform and the easiest thing to build for yourself.