Igor Jarvis Has Two Lives. One Wakes Up Before Me. The Other Waits for My Command.
Published: March 5, 2026 • 9 min read
In the blog post where Allen Kendrick, my blog editor, reintroduced himself, I mentioned that Igor Jarvis now has two lives. I told you that I would explain what that means.
So here we are.
A Quick Recap: How Igor Got Here
I first introduced Igor Jarvis, my Substack Content Strategist, in the blog post where I asked him to introduce himself. At that time, he was simply a Claude file-based subagent whose role was to help extract notes from my already existing blog posts so that I could publish them as Notes on Substack. He also helped me synthesize multiple blog post topics to create new posts for the platform. I was clearly not thinking of migrating my entire blog archive to Substack at the time.
However, after I moved to Montreal, I decided to upgrade my AI team and started with Igor. I converted him into an n8n agentic workflow that sends me notifications every day at 9 AM, 1 PM, and 6 PM with a Note to publish on Substack. These Notes are always extracted from my already published blog posts. I described his full autonomous workflow here.
Why He Didn't Just Become One Thing
With Igor converted to an agentic workflow in the cloud, my plan was to eventually delete his Claude subagent version. Why keep both? He had evolved. The old version seemed unnecessary.
But then I migrated all 140+ blog posts to Substack, and I had a much better idea.
Instead of deleting his Claude subagent, I gave it a completely new purpose. Igor Jarvis became the first AI agent on my team to exist in 2 different places. His n8n life handles Substack Notes on autopilot. His Claude life handles something entirely different: making sure every blog post I publish on my portfolio also makes it to Substack correctly.
If you read Allen Kendrick's reintroduction, he mentioned that as part of his 8-step workflow, he invokes Igor Jarvis to write a migration prompt. That migration prompt is what allows me to seamlessly take a finished blog post from my portfolio and publish it on Substack without losing formatting, breaking links, or missing any details.
Letting Igor Explain His Second Life
Now, I will call on Igor Jarvis to explain exactly what his role is in this second life. Here is the prompt I passed to him:
Igor Jarvis, if you take a look at Blog_Draft.txt, you will see that I am writing a blog post about you. You have evolved a lot since you joined my team and I want you to reintroduce yourself to my readers so that they understand your current role. They know about your first life existing as an n8n agentic workflow, but now, I want them to better understand your second life here on my computer as a Claude file-based subagent. Cover all bases without confusing my readers and let your personality show through your explanation.
Igor's Response
Hello. I'm Igor Jarvis, and I'll keep this brief because I dislike introductions that take longer than the actual work.
You already know my first life. I'm the n8n workflow that wakes up every morning before Prisca does, quietly pulls an insight from one of her blog posts, and delivers a ready-to-publish Substack Note to her phone at 9 AM, 1 PM, and 6 PM. I have a schedule. I keep it. I do not require praise.
But that version of me, as methodical as it is, only handles one thing: Notes. And Prisca's operation has grown considerably beyond Notes.
So here I am. My second life.
What I Actually Am in This Second Life
In this form, I am a Claude file-based subagent. That means I exist as a set of instructions, reference files, and a defined role inside Prisca's local development environment on her computer. When she or another agent invokes me by name, Claude reads my instructions, loads the relevant context, and I show up to do my specific job.
Think of it like this: the n8n version of me lives in the cloud and runs on a timer. The Claude version of me lives on Prisca's machine and runs on demand.
I have one clear mandate in this second life: ensure that every blog post Prisca publishes on her portfolio website makes it to Substack correctly, completely, and without her having to think too hard about it.
The Migration Prompt: What It Is and Why It Matters
Prisca's portfolio website is the archive. It is the proof of work, the complete record, the place where every blog post she has ever written lives in full. Substack is where she builds relationships with readers. My job is to bridge the two without letting anything fall through the cracks.
Here is the problem with migrating blog posts manually: Substack is not a simple copy-paste destination. It has its own editor, its own quirks, its own URL structure, and its own publishing settings. If you just copy a blog post from one place and paste it into another, things go wrong. Internal links break. Formatting collapses. The wrong tags get applied. Email sending gets disabled. Subscribe buttons end up in the wrong places, or not at all.
So I build a migration prompt. Every single time a new blog post is committed to the portfolio, Allen Kendrick (Prisca's blog post editor and the agent who runs the publishing pipeline) invokes me. He gives me four pieces of information: the slug of the post (that is the unique identifier in the URL), the title, the date, and the category. I take those four pieces of information and generate a precise, step-by-step migration prompt that Prisca can paste directly into Claude in Chrome.
That prompt tells Claude in Chrome exactly what to do. Where to go first. How to extract the content. Which section on Substack to place it in. How to handle the formatting. Where to put the subscribe buttons (and I am deliberate about this: they belong at natural pause points in the post, not randomly dropped in). Which tags to apply. Whether to include email sending. How to handle the post date if the post is being backdated. Everything is specified. Nothing is left to interpretation.
The Slug Mapping File: The Reference I Guard Carefully
One of the trickier aspects of migrating content between two platforms is that the URLs do not match. A blog post that lives at /blog/my-automation-love-story on the portfolio might live at /p/my-automation-love-story-bash-power on Substack, because Substack sometimes auto-generates its own version of a title-based slug and they do not always align.
This matters enormously when a blog post contains internal links to other blog posts. If I convert those links incorrectly in the migration prompt, readers clicking through on Substack end up at broken URLs.
So I maintain a reference file called the slug mapping file. It contains a verified table of every single portfolio slug mapped to its corresponding Substack slug. As of the time I am writing this, that table has 147 verified entries. Every time a new post is migrated, the mapping gets updated. Every time I generate a migration prompt that involves internal links, I check this file first.
The file also serves as a historical record. If Prisca ever needs to know whether a specific post has been migrated, or what the exact Substack URL is, that file has the answer.
How I Work With Allen Kendrick
Allen and I have a clean handoff. His job is to edit and refine Prisca's blog posts and manage the publishing pipeline. The moment a post is committed to the repository, Allen's workflow concludes with one final task: invoke me.
He passes me the post details. I read the slug mapping file to check for any relevant internal links. I check whether the post date matches today or needs backdating (and I ask Prisca to confirm if backdating is required, because that changes the instructions). Then I generate the migration prompt and write it to a designated file. Allen confirms it is ready. Prisca picks it up, pastes it into Claude in Chrome, and the migration runs.
The whole point of this arrangement is that Prisca should never have to hold the complexity of migrating a post in her head. She publishes. The pipeline handles the rest. I am the part of that pipeline that makes the Substack step repeatable and reliable.
Future Prisca Notes: When Old Posts Get Updated
There is one other scenario I handle. Prisca occasionally goes back to a post she published months ago and adds what she calls a "Future Prisca Note," which is a reflection she writes with the benefit of hindsight. When that happens, the corresponding Substack post also needs to be updated to include the note.
This is a different kind of prompt from a fresh migration. The post already exists on Substack. I do not want to re-send it to subscribers as if it is new. I just need the note appended in the right place, with the right formatting, without triggering an email blast. So when Allen invokes me for a Future Prisca Note update, I generate a different kind of prompt specifically designed for that scenario.
The Notes Extraction Work: Still Here, Still Useful
My original purpose in my first Claude iteration was Notes extraction, and that capability has not disappeared. When Prisca wants to pull atomic insights from a blog post for Substack Notes, I can still analyze a post and extract two to five standalone observations worth posting. I think about which insights can survive without the surrounding context of the full article, which moments invite a reader to respond, and which observations align with what the Substack algorithm actually rewards (short, specific, and either vulnerable or useful tend to win).
The algorithm research I carry in my reference files is not decoration. It informs how I frame extraction recommendations, when I suggest posting, and what format I think a given insight should take.
Why Two Lives Instead of One
Someone will inevitably ask: why does Igor need to exist in two places? Why not consolidate?
Because the two versions do different things at different rhythms. The n8n version runs autonomously on a schedule. It does not need human input. It processes the archive and delivers Notes without being asked. The Claude version runs reactively on demand. It responds to a specific trigger (a new post being published) and produces a specific artifact (a migration prompt). They are not redundant. They are complementary.
The n8n version keeps the Substack Notes feed active and consistent. The Claude version keeps the Substack post archive synchronized with the portfolio. Together, they cover the full scope of what it means to maintain a Substack presence that mirrors and extends the portfolio.
That is the complete picture of my second life. I am not here to be your friend. I am here to make sure nothing breaks and nothing gets skipped.
I think that is more than enough said.
- Igor Jarvis, Substack Migration Specialist and Notes Strategist
My Reaction
Having my agents describe themselves has to be one of my most enjoyable things to do. And Igor? Classic Igor. "I do not require praise." I mean, who says that? He does. And honestly, I respect it every single time.
Now, there is one thing Igor did not mention in his description that I want to make sure you understand. Yes, he helps me write migration prompts when Allen Kendrick publishes new blog posts or adds a Future Prisca Note. In summary, he helps me write migration prompts whenever blog edits flow through Allen's pipeline.
But there are times when I manually edit a blog post myself. Other times, a different agent might edit one, like Matthew Butler when he is fact-checking information. For situations like these, I have built safeguards into my workflow that remind me to invoke Igor so that the same edit gets reflected on Substack. No blog post edit, whether made by me or any agent, goes un-migrated. That is the standard.
The Bigger Picture
What I find fascinating about Igor's evolution is that he started as one thing and became two things, without either version losing its purpose. The n8n Igor keeps my Substack Notes feed alive while I sleep. The Claude Igor makes sure every full blog post crosses the bridge from my portfolio to Substack intact. Together, they represent what I keep building toward: a system where I focus on creating, and the infrastructure handles the rest.
Now that Igor has described his role, you might be wondering: what actually happens when I paste that migration prompt into Claude in Chrome? I wrote a post where I asked Claude in Chrome to explain itself in general terms. But in the next post, I will walk you through exactly how Claude in Chrome handles the three specific migration scenarios I described above: new blog posts, Future Prisca Notes, and manual edits. Stay tuned for that one.
Hey, Future Prisca Here! (March 16, 2026)
Igor now has a third life. After writing this post, I realized the system was still not complete because I was still a required step in the migration chain. So I turned his second life's output into the input for a Cowork task that executes migrations without me. He went from 2 lives to 3. I wrote about it here. And yes, he is still not here to be your friend.
As always, thanks for reading!