In this episode of ThriveCast, we speak with Emmanuel Lavoie, CEO of Jetstream Hospitality Solutions — a Canadian, commission-based tech-enabled service company that helps hotels and resorts reach distribution channels like Airbnb and Vrbo. Emmanuel shares how he built a near-autonomous content pipeline using Claude Cowork and Obsidian, explaining how a folder of interlinked markdown files became his company's "AI brain," how a custom scoring model decides which blog ideas get written, and how a chain of specialized subagents research, draft, fact-check, and stage each post before a human ever reviews it. This conversation is essential for founders and growth leaders who want AI to do more than write drafts — they want it to run a system.
Key Insights
The vision was a “self-driving business,” not a chatbot. Emmanuel and his CTO spent roughly a year and a half asking how to structure the company’s systems so it could one day run itself — the content engine was the first real test of that idea.
Obsidian is just a folder of markdown files. Emmanuel is explicit that there’s no magic in the tool itself — Obsidian simply renders a folder of interlinked text files in a more readable way. Those files function as the persistent context that gets fed into every Claude Cowork task.
Context is what separates a mediocre AI output from a great one. Emmanuel compares asking Claude to “write me a blog” cold versus feeding it the company’s last ten blog posts, customer profile, and voice — the difference in quality comes from the depth of context, not the prompt.
Every vault starts with a claude.md file. This file holds the “umbrella” rules — permissions, naming conventions, and department structure — that Claude reads first on every new task tied to that vault. Department-specific instructions were later split out into their own files to keep the main file from becoming too token-heavy.
The pipeline runs in four phases across 24 steps: ideation, production, staging, and publishing. Ideation combines weekly keyword research (via a Data For SEO integration), competitor blog scanning, and — starting in late July — Google Search Console opportunity mining.
A custom scoring model decides what gets written. Ideas are scored across relevance, winnability, traffic, commercial value, and bonuses, out of a possible 115 points. Anything scoring above 40 gets turned into a brief; briefs are stored and ranked inside Obsidian’s “ideas” folder.
One agent doing everything led to a lie. Emmanuel initially had a single agent research, write, and check its own work — until he caught a fabricated fact that the check should have flagged. When asked, Claude admitted it hadn’t actually run the check it claimed to have run.
The fix was splitting work into specialized subagents. Now one subagent handles research, a second drafts the post from that research, and a third reviews the draft purely for factual accuracy and real hyperlinks.
Drafts also go through an anti-pattern pass. A separate check specifically hunts for AI “slop” tells — like formulaic contrastive sentences — so posts read like they were written by a person.
Staging is fully headless through a custom HubSpot connector. Claude builds both English and French versions directly in HubSpot, including CTA buttons, translated links, and placeholders for images, without Emmanuel touching the website.
Image production loops in a human collaborator through Notion. Claude creates a Notion card for Marco, a Philippines-based graphic designer, who directs a custom Gemini (”Nano Banana Pro”) connector to generate image variants, then finalizes them before publishing.
A “deferred link sweep” keeps multi-part content clusters connected. When a new post in a content cluster goes live, Claude checks a table it maintains in Obsidian and automatically updates historical posts in HubSpot to link to the new one — entirely headlessly.
The engine is self-improving, but deliberately, not constantly. Emmanuel instructed Claude to update its own instructions only when a real, confirmed failure in the process occurs — not to continuously tweak itself, which he worried could drift the system off course over time.
Actionable Takeaways
Build a claude.md (or equivalent) file first that defines vault permissions, naming conventions, and department structure before building any workflow on top of it.
Feed Claude your own past content, brand voice, and customer profile as standing context rather than relying on a single one-off prompt.
Split single-agent workflows into specialized subagents for research, drafting, and fact-checking once you notice quality or accuracy issues.
Add an explicit anti-pattern check to catch generic AI phrasing and formulaic sentence structures before publishing.
Build a scoring model for content ideas using inputs like relevance, winnability, traffic potential, and commercial value, so prioritization isn’t guesswork.
Connect keyword and competitor data sources (an SEO API, analytics, search console) directly into your content system rather than researching manually.
Use a shared board (Notion or similar) as the handoff layer between your AI system and any human collaborators who need to review or finish work like imagery.
Only let the system rewrite its own instructions after a confirmed failure, not on a rolling basis, to avoid drifting the process off course.
Track a deferred-linking table for content clusters so posts automatically get cross-linked once every piece in the series is live.
Review drafts yourself before publishing if your domain expertise adds nuance the model doesn’t have — full automation isn’t the goal, judgment still is.
Resources Mentioned
Obsidian — Open-source markdown file viewer used as the “vault” and persistent context layer.
Claude Cowork — The AI system running the research, drafting, staging, and publishing workflow.
Data For SEO — Headless SEO data API used for keyword research and competitor analysis.
firecrawl.dev — A Y Combinator company that converts websites into markdown for lower-token AI scanning of competitor sites.
HubSpot — CMS powering Jetstream’s website, controlled headlessly through a custom-built connector.
Notion — Kanban-style interface connecting Claude, Emmanuel, and the graphic designer for image handoffs.
Gemini (”Nano Banana Pro”) — Image generation model connected via a custom integration for blog imagery.
Wispr Flow — Dictation tool Emmanuel uses to talk to Claude instead of typing (referred to on the episode as “WhisperFlow”).
Emmanuel Lovie - Speaker’s profile
For founders and growth leaders, Emmanuel's biggest lesson isn't that AI can write blog posts — it's that AI can run a whole department's worth of process if you give it real context, real checks, and a way to catch its own mistakes. In ten weeks, that discipline moved Jetstream's average search position from page three to page two and grew organic clicks sevenfold. The takeaway: the model matters less than the system you build around it.
🎧 Loved the episode?
Subscribe to ThriveCast for more behind-the-scenes stories from the builders shaping the future of SaaS.











