- Revenue Diaries
- Posts
- Revenue Diaries Entry 64
Revenue Diaries Entry 64
Screwing Up with My CEO & Vibe Coding an Operating System
By the time you read this, I hope my 10-year-old is celebrating a potential Seahawks Super Bowl win. If you are reading this and they are behind, please send good vibes to the Lacy family tonight. It’s going to be a long one.
Two things to cover this weekend. One is shorter and the other long:
I’m building my own AI tool, and I have no idea what I’m doing. Learn from my mistakes in Claude Code/Chat/Cowork.
I screwed up this past week with my boss. Here’s what I learned.
Good luck to all the Seahawks and the unmentionables’ fans. I trust the game tonight will be filled with sorrow for the North East. 🙂
♥️ kyle

On Building with AI. What I’m Learning
!DING! Coffee maker is done. Thank god. It’s 5:15 AM on Monday morning, and I desperately need the caffeine infusion. Note to self: I need to stop drinking so much caffeine.
Cream. Coffee. Stir. Drink. Ahhh, alright. It’s getting better.
I sit down at my desk and start the weekly ritual: trying to figure out what the hell I'm supposed to do this week. I remember being stressed on Friday. Let’s figure out why.
Google Calendar is open in one tab. Gmail in another. Slack is pinging somewhere in the background. Asana is... I should probably check Asana. There's a Granola transcript from Wednesday’s e-team meeting that I know has three critical to-dos, but I haven't opened it yet.
Actually, there’s 45 Granola transcripts sitting there from last week… yah, you get it.
My reMarkable tablet is next to me with two pages of handwritten notes that seemed urgent at the time but now… maybe not.
Shit. They should probably sync with my Granola notes, right?
Two coffee cups later. I’ve responded to some of it but I don’t feel ready. Maybe I should spend Sunday night preparing. Right?
Nope. I’m the CMO of a technology company. I’m 41 years old. Do I want to get left behind? Of course not. It’s time to get my shit together.
And to add to everything else, I had missed a follow-up I committed to in a meeting the week before. HEY! I CARE. I PROMISE! But the item lived in a Granola transcript I meant to review, and it got buried under 47 other things scattered across all the tools. Someone on my team had to remind me.
Another cup of coffee. Sip. Sigh. I think it’s time to start coding.
And btw… I never thought I would type “start coding” at any point in my career outside of Wordpress or my Myspace page.
What I’m Currently Building
I need a single view that pulls from Gmail, Google Calendar, Google Drive, Slack, Asana, Google Tasks, Granola, (add in three other tools), and my reMarkable tablet, and tells me what matters this week.
Not everything. Just what matters.
I don't need another productivity app. I need something that knows my actual workflow and surfaces the shit I need to get done.
So I reached out to Justin Parnell to help. He started drafting a cool Weekly OS tool on Replit: a TypeScript/React/Express app called "Monday Priorities" that integrates Gmail, Calendar, and Drive and uses AI to generate a weekly priority report. He showed it to me and I thought: this is exactly what I need.
And then immediately: I have no idea how to do anything with this.
The Part Where I Have No Idea What I'm Doing
I asked him to share the code. He sent me a GitHub link.
I stared at it.

I didn't know how to fork it. I didn't know what forking was. Sounds weird, right? I figured it out (there's a button), forked it to my own GitHub, and then stared at that for a while.
I opened Claude Code and asked it for help. I told it I had this GitHub repo and wanted to work on it locally.
Claude Code asked me if I'd cloned the repo yet.
I typed back: "What does that mean?"
This is where I should tell you I felt stupid. And I did, a little. But mostly I just felt... behind. Like I'd missed the class where everyone learned this vocabulary. Like Spanish Class… year 2000… Frankton, Indiana.
Claude Code walked me through it. Cloning a repo means downloading the code to your computer so you can work on it. There's a command for that. I ran the command. It worked.
Small win.
We confirmed the connectors were working…. All live. All pulling data. Then we added Granola as a direct MCP integration.
Another small win.
Then everything got a little screwy.
The original project's authentication is wired to Replit's infrastructure. Which means it works great on Replit, but if you want to run it locally (on your own computer, outside their platform) it doesn't work. The OAuth flow (that's the "sign in with Google" part) breaks because it's expecting to be on Replit's servers.
Fixing that means reworking how the whole auth system works. Which I don't know how to do yet.
So we put a pin in it.
Then the Granola connector installed but wouldn't load mid-session. Something about MCP servers needing to restart when you add them. I tried /exit in Claude Code. Nothing happened. I tried /exitwait. Still there. I closed the desktop app entirely. Reopened it. That worked.
I had to Google the difference between /exit, /exitwait, and closing the app (still not totally clear on this, honestly).
Then we got to my reMarkable tablet. Turns out there's no official API. The best workaround is a janky email-to-Gmail-to-Drive pipeline where you email yourself notes from the tablet, Gmail picks them up, and Drive stores them so the app can read them.
Let’s hope it works.
I’m learning, and that’s important.
Honestly, it was more of the vocabulary gap that was the real barrier. Not the actual concept.
When Claude Code told me to "clone the repo," I didn't know what that meant. But once it explained it "download the code to your computer" I got it immediately. Same with OAuth, API tokens, MCP, and scopes.
None of these ideas are complicated. They're just wrapped in jargon that assumes you already know them.
The other thing I'm learning: building something is way messier than I expected. You think you're going to follow a straight path from A to B, and instead you end up solving eighteen tiny problems that don't feel related until suddenly they are.
Authentication doesn't work outside Replit. Granola won't load without a restart. reMarkable doesn't have an API. Each one feels like a blocker until you figure out the workaround. And then it's just a thing you solved.
What's Left?
I still need to connect Asana. Google Tasks should be straightforward since it uses the same Google OAuth we already set up. Slack just released their super fancy Slackbot that should probably be connected to this thing. The reMarkable workaround needs testing. And at some point I need to figure out how to actually deploy this thing so I'm not running it from my laptop every Monday morning.
But here's what's different now: I know I can figure this out.
Three weeks ago, if you'd asked me to build a web app that integrates eight different services and uses AI to prioritize my week, I would've said, “Yep. I probably should but I don’t have time right now.” And I would’ve been right. I don’t have time. But it’s important to make the time.
There are thousands, if not millions, of people building. Justin was amazing at helping me get started, but I needed to do the work. And I’m not done yet.
The tool doesn’t work end-to-end, and I ran out of time this weekend. But I’m further than I thought I’d get.
So, why am I telling you this?
We live in an absolutely amazing time. You can build whatever you want. It’s unprecedented. I can feel the shift already happening…
Well, it happened two years ago, I’m just slow.
And I bet a lot of you are watching this technological event happen and feeling some version of “I should probably learn this.”
And then we don’t. Because we're busy. Because it's not our core skill. Because someone on the team is probably better at it. Because you can pay someone to do it for you.
Or you can get started now because you read this stream-of-consciousness post from a random CMO guy based in Indianapolis, IN.
Start here. Great. Ready to get started? I’m not an expert. I’ve been slowly rolling this thing for 20 minutes here and there. Either way, here’s where I’d start:
Start with Claude. I’m slowly moving everything over from GPT and Gemini to focus all my work in Claude: Chat/Cowork/Code. Get started for free. You talk to it like a person. You tell it what you're trying to build, and it writes the code. When you get stuck, you just ask it what the error means. It explains it in plain English.
Find something that already exists and modify it. Don't start from scratch. Justin was kind enough to help me start the process. Phone a friend. Search for a template. Fork the hell out of it. There are thousands of starter projects on GitHub for almost anything you want to build.
The vocabulary will feel like a wall. It's not. Repo, clone, fork, OAuth, API token, MCP… they could sound intimidating but they aren’t. But once someone explains them once, they're just... words for normal concepts. And if you forget? Ask the robot.
Expect it to be messy. You're not going to build something polished on your first try. That's fine. The goal isn't to ship a perfect product. The goal is to close the gap between "I need this tool" and "I built this tool." Even if it's janky.
If you want to see what I'm building, I'll share updates as I go. The repo is public on my GitHub (just search "Kyle Lacy Monday Priorities" and you'll find it). It doesn't fully work yet. But it's mine, and that matters.
And if you build something send it to me. I want to see it.
Guess what? This isn’t about becoming a developer. This isn’t about outsourcing everything to a robot. It’s about learning. It’s about evolving.
If you've ever thought "I wish there was a tool that did X," and then immediately thought "but I don't know how to build it," I'm here to tell you: you're closer than you think.
You just have to be willing to not know what "clone the repo" means and willing to drink that third cup of coffee.
Yesterday I Screwed Up With My CEO
I screwed up royally this week and got defensive with my CEO. Not proud of it. But I'm going to tell you about it anyway because the job is hard, and pretending otherwise doesn't help anyone.
Surprise... I'm not perfect. :)
Earlier this week, Alessio Artuffo surfaced some feedback from the sales team on a marketing strategy we've been running. He didn't attack it. He just shared the information and asked for a follow-up. Pretty reasonable, right?
My head trash filled, reptilian brain didn't think so. No f'in way. Nope.
I immediately went passive-aggressive in the chat because I thought he was questioning the team, the strategy, and me as a CMO.
What do you mean the team isn't perfect? What do you mean our strategy needs adjusting??
That's not it. The real story is that I have head trash. Earlier in my career, I was called a "wuss" (but with different letters) by an owner in front of a management team. I've been told I acted like a "petulant child" by another boss. It was completely out of line on their part, and it has stuck with me. However, I did learn some valuable lessons due to therapy, reading, and working my ass off to overcome the insecurity.
Well, it's still there but most days, I overcome it. This week? It bubbled up.
Instead of letting it simmer, Alessio called me. We talked for five minutes while we were both on the way to the airport. I apologized. Explained I was stressed about something unrelated, which triggered old patterns I'm still working through.
His response? "Hey man. Sometimes I'm a jerk too. Nobody is perfect. The most important thing is to immediately talk about it, ask questions, and move on. That's the only way to work."
How refreshing to work for someone who thinks conflict resolution means clarifying questions and confronting it... instead of letting it simmer until it blows up.
I'm sharing this because it's never all fun and games. The exec job is hard. But it's made easier when you surround yourself with people who are passionate, care, and have high EQs.
And who picks up the phone when you're being an idiot.
