<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Cess Mbugua</title>
    <description>The latest articles on Forem by Cess Mbugua (@mbugua_cessy).</description>
    <link>https://forem.com/mbugua_cessy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3626809%2F8965597d-6873-451e-8e28-585d0370197b.jpeg</url>
      <title>Forem: Cess Mbugua</title>
      <link>https://forem.com/mbugua_cessy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mbugua_cessy"/>
    <language>en</language>
    <item>
      <title>Day 3 of 60 — and today's build is one I think a lot of freelancers and agencies will relate to.</title>
      <dc:creator>Cess Mbugua</dc:creator>
      <pubDate>Fri, 01 May 2026 08:06:47 +0000</pubDate>
      <link>https://forem.com/mbugua_cessy/day-3-of-60-and-todays-build-is-one-i-think-a-lot-of-freelancers-and-agencies-will-relate-to-2k40</link>
      <guid>https://forem.com/mbugua_cessy/day-3-of-60-and-todays-build-is-one-i-think-a-lot-of-freelancers-and-agencies-will-relate-to-2k40</guid>
      <description>&lt;p&gt;I built a fully automated client onboarding pipeline that kicks in the moment a new client submits an intake form. No manual steps. No welcome email to write. No folder to create. No team to brief. All of it — done in under 5 minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem I Wanted to Solve
&lt;/h2&gt;

&lt;p&gt;Manual client onboarding is one of those hidden time drains. Writing a personalised welcome email, creating a Drive folder, generating a project brief, notifying the team, each step feels small but together they eat 45–90 minutes per client. And if you're busy, something always gets missed.&lt;/p&gt;

&lt;p&gt;I wanted to learn how to wire together form submissions, AI writing, CRM updates, file creation, and team notifications into one seamless pipeline.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Happens Automatically
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Form Submission&lt;/strong&gt;&lt;br&gt;
Client submits a Typeform intake form. That single action triggers everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 — Claude Writes the Welcome Email&lt;/strong&gt;&lt;br&gt;
Claude API (claude-sonnet-4-5) reads the form data and writes a fully personalised welcome email — not a template, an actual tailored message.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 — Airtable Record Created&lt;/strong&gt;&lt;br&gt;
A new client record is created in Airtable with all intake details logged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4 — Welcome Email Sent&lt;/strong&gt;&lt;br&gt;
Gmail delivers the personalised welcome email to the client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5 — Google Drive Folder Created&lt;/strong&gt;&lt;br&gt;
A dedicated client folder is automatically created in Google Drive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6 — Claude Generates a Project Brief&lt;/strong&gt;&lt;br&gt;
Claude writes a structured project brief as a Google Doc inside the client folder — ready for the team to act on immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7 — Airtable Updated&lt;/strong&gt;&lt;br&gt;
The client record is updated with the Drive folder link for easy access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8 — Team Notified on Slack&lt;/strong&gt;&lt;br&gt;
The team receives a Slack notification with the client details, folder link, and project brief — everything they need in one message.&lt;/p&gt;




&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Onboarding time: from &lt;strong&gt;~60 minutes manual → under 5 minutes automated&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Human effort after form submission: &lt;strong&gt;0 minutes&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Handles unlimited simultaneous submissions without breaking a sweat&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;n8n · Claude API (claude-sonnet-4-5) · Typeform · Airtable · Gmail · Google Drive · Slack&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned on Day 3
&lt;/h2&gt;

&lt;p&gt;The most interesting challenge today was getting Claude to write content that felt genuinely personalised and not templated — twice in the same workflow. The welcome email and the project brief need completely different tones: warm and human for the client, structured and professional for the team.&lt;/p&gt;

&lt;p&gt;That means two very different prompts, each pulling specific fields from the Typeform submission. Getting the data mapping right between Typeform → n8n → Claude took more iteration than I expected.&lt;/p&gt;

&lt;p&gt;Biggest lesson: &lt;strong&gt;one workflow, multiple Claude calls — each prompt needs its own clear context and purpose or the output bleeds into the wrong tone.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Full workflow on GitHub → &lt;a href="https://github.com/mbuguacessy-glitch/automated-client-onboarding" rel="noopener noreferrer"&gt;https://github.com/mbuguacessy-glitch/automated-client-onboarding&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Day 3 of my 60-day public AI automation build challenge. Learning by shipping — every workflow documented openly.&lt;/p&gt;

&lt;p&gt;57 more to go.&lt;/p&gt;

&lt;h1&gt;
  
  
  ai #automation #n8n #claudeapi #buildinpublic #learninpublic #showdev
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Day 2 of 60 — Automated Client Reporting System</title>
      <dc:creator>Cess Mbugua</dc:creator>
      <pubDate>Thu, 30 Apr 2026 11:54:04 +0000</pubDate>
      <link>https://forem.com/mbugua_cessy/day-2-of-60-automated-client-reporting-system-4hd6</link>
      <guid>https://forem.com/mbugua_cessy/day-2-of-60-automated-client-reporting-system-4hd6</guid>
      <description>&lt;p&gt;I'm a student learning AI integration and automation by building one real workflow every day for 60 days. Everything gets documented and pushed to GitHub.&lt;/p&gt;

&lt;p&gt;**&lt;br&gt;
Today's build: Automated Client Reporting System**&lt;/p&gt;

&lt;p&gt;Built a workflow that writes and delivers professional weekly performance reports to every active client, every Monday at 7am, automatically, forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt; Getting Claude to write consistent, structured narrative reports across different client datasets is a prompt engineering challenge, not just an API call. Tone, section structure, and handling flat or missing data without hallucinating trends all needed explicit instructions.&lt;/p&gt;

&lt;p&gt;The loop logic hit different too — one mapping error and the wrong client gets the wrong report. Zero margin for error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Schedu&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8hj5zu14w0glw3lzdpc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8hj5zu14w0glw3lzdpc.png" alt=" " width="800" height="364"&gt;&lt;/a&gt;le trigger fires every Monday 7am&lt;/p&gt;

&lt;p&gt;Airtable returns active client list&lt;/p&gt;

&lt;p&gt;Loop pulls each client's metrics from Google Sheets&lt;/p&gt;

&lt;p&gt;Claude writes a 5-section narrative report per client&lt;/p&gt;

&lt;p&gt;Google Doc created → Gmail delivers to client → Airtable logs it&lt;/p&gt;

&lt;p&gt;Biggest lesson: Test with dummy data obsessively before anything touches real client data.&lt;/p&gt;

&lt;p&gt;Stack: n8n · Claude API · Google Sheets · Google Docs · Gmail · Airtable&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/mbuguacessy-glitch/automated-client-reporting" rel="noopener noreferrer"&gt;https://github.com/mbuguacessy-glitch/automated-client-reporting&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;58 builds to go 💪&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>devjournal</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Day 1 of 60 — Learning AI Integration in Public</title>
      <dc:creator>Cess Mbugua</dc:creator>
      <pubDate>Tue, 28 Apr 2026 20:19:18 +0000</pubDate>
      <link>https://forem.com/mbugua_cessy/day-1-of-60-learning-ai-integration-in-public-4iie</link>
      <guid>https://forem.com/mbugua_cessy/day-1-of-60-learning-ai-integration-in-public-4iie</guid>
      <description>&lt;p&gt;I'm a student learning AI integration and automation by building one real workflow every day for 60 days. Everything gets documented and pushed to GitHub. Starting today.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvw93lqesq00ds46zhyt8.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvw93lqesq00ds46zhyt8.PNG" alt=" " width="800" height="329"&gt;&lt;/a&gt;&lt;br&gt;
What I learned: you can use an LLM to drive actual routing logic in a workflow — not just generate text. Claude reads each email and returns a full JSON decision object that n8n acts on instantly.&lt;br&gt;
How it works:&lt;/p&gt;

&lt;p&gt;Gmail triggers n8n on every new email&lt;br&gt;
Claude API classifies it — urgency, category, sentiment, summary &amp;amp; suggested reply&lt;br&gt;
Switch node routes it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Urgent → instant Slack alert&lt;/li&gt;
&lt;li&gt; Standard → Airtable + Slack&lt;/li&gt;
&lt;li&gt; FAQ → auto-replied by Claude, zero human touch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Biggest lesson:&lt;/strong&gt; getting Claude to return consistent, parseable JSON every time is harder than it sounds — and if it breaks, everything breaks. Prompt structure matters more than I expected.&lt;br&gt;
Stack: n8n · Claude API · Gmail · Airtable · Slack&lt;br&gt;
🔗 &lt;a href="https://github.com/mbuguacessy-glitch/ai-support-ticket-router" rel="noopener noreferrer"&gt;https://github.com/mbuguacessy-glitch/ai-support-ticket-router&lt;/a&gt;&lt;br&gt;
59 builds to go!&lt;/p&gt;

&lt;h1&gt;
  
  
  learninpublic #buildinpublic #automation #ai
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>buildinpublic</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
