<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Cesar Napoles: Mission Log</title>
    <link>https://cesarnapoles.com/blog/</link>
    <description>Cesar Napoles&#39; blog: notes from the CTO seat, product launches and a Fractional CTO&#39;s take on tech news.</description>
    <language>en</language>
    <atom:link href="https://cesarnapoles.com/blog/rss.xml" rel="self" type="application/rss+xml" />
    <lastBuildDate>Thu, 12 Nov 2026 08:00:00 GMT</lastBuildDate>
    <item>
      <title>Why I&#39;m starting this blog</title>
      <link>https://cesarnapoles.com/blog/why-this-blog/</link>
      <guid isPermaLink="true">https://cesarnapoles.com/blog/why-this-blog/</guid>
      <pubDate>Thu, 12 Nov 2026 08:00:00 GMT</pubDate>
      <category>CTO Log</category>
      <description>A log from the CTO seat: real decisions, the products I launch and what I make of the news that affects startups and SMEs.</description>
      <content:encoded><![CDATA[<p>I&#39;ve spent 12+ years building and scaling software in banking, fintech, insurance and e-commerce. Almost
everything I know I learned by making decisions with incomplete information, in front of a team, a client or a
dashboard gone red. This blog is where I&#39;m going to write it down.</p>
<h2 id="what-you-39-ll-find-here"><a class="heading-anchor" href="#what-you-39-ll-find-here" aria-hidden="true" tabindex="-1">#</a>What you&#39;ll find here</h2>
<ul>
<li><strong>CTO Log.</strong> What really happens in the CTO seat: architecture decisions, hiring, incidents, roadmaps that
change mid-quarter, and what I&#39;d do differently.</li>
<li><strong>Launches.</strong> The products I build or lead, why they exist and what problem they solve.</li>
<li><strong>Signals.</strong> Industry news, read with one question in mind: what does this mean for a startup or an SME
that has to decide with a small team and little time?</li>
</ul>
<h2 id="who-i-39-m-writing-for"><a class="heading-anchor" href="#who-i-39-m-writing-for" aria-hidden="true" tabindex="-1">#</a>Who I&#39;m writing for</h2>
<p>Founders who have to make technical decisions without being technical, product teams growing faster than
their architecture, and other CTOs who want to compare notes.</p>
<h2 id="how-i-39-ll-write-it"><a class="heading-anchor" href="#how-i-39-ll-write-it" aria-hidden="true" tabindex="-1">#</a>How I&#39;ll write it</h2>
<p>Short, concrete, no fluff. If there&#39;s a number, it&#39;s one I can stand behind. If something went wrong, I&#39;ll say
so. And I won&#39;t publish anything confidential about the clients I work with: when I talk about a case, it will
be with their permission or abstracted enough that it can&#39;t be recognised.</p>
<p>I write in English and Spanish. If something here is useful to you, or you disagree, message me on LinkedIn
or book a call: the best ideas for a post always come out of a conversation.</p>
]]></content:encoded>
    </item>
    <item>
      <title>CalendaVibe: free scheduling that plugs into the calendar you already use</title>
      <link>https://cesarnapoles.com/blog/calendavibe-free-scheduling/</link>
      <guid isPermaLink="true">https://cesarnapoles.com/blog/calendavibe-free-scheduling/</guid>
      <pubDate>Tue, 10 Nov 2026 08:00:00 GMT</pubDate>
      <category>Launches</category>
      <description>Why I built CalendaVibe: booking links on Google Calendar and Outlook, Meet links, Stripe payments and teams, free to get started.</description>
      <content:encoded><![CDATA[<p>Every small team I work with ends up paying for a scheduling tool long before scheduling is the thing that
makes them money. Consultants, clinics, coaches, sales teams: they all need the same thing first. A link
someone can open, pick a free slot and be done.</p>
<p>That&#39;s the job CalendaVibe does.</p>
<h2 id="what-it-does"><a class="heading-anchor" href="#what-it-does" aria-hidden="true" tabindex="-1">#</a>What it does</h2>
<ul>
<li><strong>Booking links</strong> connected to <strong>Google Calendar</strong> and <strong>Outlook</strong>, so availability is always the real one.</li>
<li><strong>Google Meet</strong> links created for every booking, without copying and pasting anything.</li>
<li><strong>Stripe payments</strong>, so paid sessions are charged at booking time.</li>
<li><strong>Teams</strong>, so a booking can land on whoever is free instead of on one overloaded calendar.</li>
</ul>
<p>And it&#39;s free to get started. You shouldn&#39;t need a budget line to stop sending &quot;does Tuesday at 4 work?&quot;
emails.</p>
<h2 id="why-build-another-scheduling-tool"><a class="heading-anchor" href="#why-build-another-scheduling-tool" aria-hidden="true" tabindex="-1">#</a>Why build another scheduling tool</h2>
<p>Because the useful part is small and well understood, and the rest is pricing. Most tools put the
features a small business needs on day one (payments, a second team member) behind a paid tier. I wanted the
opposite: the basics free, done properly.</p>
<h2 id="how-it-39-s-built"><a class="heading-anchor" href="#how-it-39-s-built" aria-hidden="true" tabindex="-1">#</a>How it&#39;s built</h2>
<p>React on the front end, Node.js and PostgreSQL behind it. Calendar integrations are the hard part of a product
like this: time zones, recurring events, permissions and providers that each model availability their own way.
That&#39;s where most of the engineering went.</p>
<h2 id="try-it"><a class="heading-anchor" href="#try-it" aria-hidden="true" tabindex="-1">#</a>Try it</h2>
<p>If you take bookings, try it with a real link this week, and tell me what&#39;s missing. I read every message.</p>
]]></content:encoded>
    </item>
    <item>
      <title>The EU just gave you more time for high-risk AI. Don&#39;t waste it</title>
      <link>https://cesarnapoles.com/blog/eu-ai-act-digital-omnibus/</link>
      <guid isPermaLink="true">https://cesarnapoles.com/blog/eu-ai-act-digital-omnibus/</guid>
      <pubDate>Mon, 09 Nov 2026 08:00:00 GMT</pubDate>
      <category>Signals</category>
      <description>The Digital Omnibus on AI moves the AI Act&#39;s high-risk deadlines to December 2027 and August 2028. What changes for startups and SMEs, and what still applies today.</description>
      <content:encoded><![CDATA[<h2 id="what-happened"><a class="heading-anchor" href="#what-happened" aria-hidden="true" tabindex="-1">#</a>What happened</h2>
<p>The EU&#39;s Digital Omnibus on AI, Regulation (EU) 2026/1744, is now in force, and it changes the AI Act&#39;s
calendar. As summarised by Orrick and other firms:</p>
<ul>
<li><strong>High-risk systems listed in Annex III</strong> (hiring, credit scoring, education and similar uses) now have until
<strong>2 December 2027</strong>, instead of 2 August 2026.</li>
<li><strong>High-risk AI embedded in regulated products</strong> (Annex I) moves to <strong>2 August 2028</strong>.</li>
<li>The <strong>transparency duties of Article 50</strong>, such as telling people they&#39;re talking to an AI, still apply from
<strong>2 August 2026</strong>. Systems already on the market before that date get until <strong>2 December 2026</strong> for the
marking of AI-generated content.</li>
<li>The SME simplifications (lighter technical documentation, proportionate quality management, priority access
to sandboxes, lower penalty caps) are extended to a new <strong>&quot;small mid-cap&quot;</strong> category: companies with fewer
than 750 employees and up to €150 million in turnover.</li>
</ul>
<h2 id="why-it-matters-for-startups-and-smes"><a class="heading-anchor" href="#why-it-matters-for-startups-and-smes" aria-hidden="true" tabindex="-1">#</a>Why it matters for startups and SMEs</h2>
<p>The delay is good news, but it&#39;s a delay, not a cancellation. The requirements are the same; only the dates
moved. Two traps I see coming:</p>
<ol>
<li><strong>&quot;We have until 2027&quot; becomes &quot;we&#39;ll think about it in 2027&quot;.</strong> If your product scores people, screens CVs
or decides on credit, the hard part isn&#39;t the paperwork. It&#39;s the data lineage, the logging and the human
oversight that have to be designed into the system. Retrofitting that into a product that has shipped for
a year is far more expensive than building it in now.</li>
<li><strong>Forgetting what already applies.</strong> If you have a chatbot, an AI assistant or anything that generates
content for users, transparency is already your problem today, not in 2027.</li>
</ol>
<h2 id="what-i-39-d-do-this-quarter"><a class="heading-anchor" href="#what-i-39-d-do-this-quarter" aria-hidden="true" tabindex="-1">#</a>What I&#39;d do this quarter</h2>
<ul>
<li><strong>Make an inventory.</strong> List every place your product uses AI and classify each one: prohibited, high-risk,
transparency-only or minimal. It&#39;s usually a one-afternoon exercise and it changes the conversation.</li>
<li><strong>Fix the cheap transparency items now.</strong> A clear &quot;you&#39;re talking to an AI assistant&quot; notice and labelled
AI-generated content cost little and are already required.</li>
<li><strong>If anything is high-risk, design for it in the next roadmap.</strong> Logging of inputs and decisions, a human
override, and documentation of your training and evaluation data. Treat it as architecture, not compliance.</li>
<li><strong>Check whether you qualify as an SME or small mid-cap.</strong> The simplified regime is real money saved.</li>
</ul>
<p>The extra time is useful only if you spend it building the system you&#39;ll need anyway.</p>
<p><em>This is a CTO&#39;s reading of public summaries, not legal advice. For your specific case, talk to a lawyer who
works on the AI Act.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Do you need a CTO yet? A decision guide for founders</title>
      <link>https://cesarnapoles.com/blog/do-you-need-a-cto/</link>
      <guid isPermaLink="true">https://cesarnapoles.com/blog/do-you-need-a-cto/</guid>
      <pubDate>Fri, 06 Nov 2026 08:00:00 GMT</pubDate>
      <category>CTO Log</category>
      <description>Full-time CTO, fractional CTO, senior developer or agency: how to tell which one your company needs now, based on the decisions in front of you rather than headcount.</description>
      <content:encoded><![CDATA[<p>&quot;Do we need a CTO?&quot; is usually the wrong question. The useful one is: <strong>what technical decisions are we
about to make, and who is qualified to make them?</strong> The answer to that tells you what kind of help you need.</p>
<h2 id="four-options-four-different-jobs"><a class="heading-anchor" href="#four-options-four-different-jobs" aria-hidden="true" tabindex="-1">#</a>Four options, four different jobs</h2>
<ul>
<li><strong>A senior developer</strong> writes and ships code. Great when the product is clear and the risk is execution.</li>
<li><strong>An agency or freelancers</strong> build a defined scope. Great when you know exactly what to build and someone
inside can judge the result.</li>
<li><strong>A fractional CTO</strong> owns technical strategy and the big decisions a few days a month: architecture,
vendors, hiring, the roadmap. Great when the decisions are high-stakes but don&#39;t fill a full-time role yet.</li>
<li><strong>A full-time CTO</strong> does all of the above every day, and builds and leads the team. Necessary when
technology <em>is</em> the business and the team is big enough to need daily leadership.</li>
</ul>
<h2 id="signs-you-need-senior-technical-leadership-now"><a class="heading-anchor" href="#signs-you-need-senior-technical-leadership-now" aria-hidden="true" tabindex="-1">#</a>Signs you need senior technical leadership now</h2>
<ul>
<li>You&#39;re about to make a decision that&#39;s expensive to reverse: a platform rewrite, a cloud migration, a core
vendor, your first engineering hires.</li>
<li>Your developers or your agency are making architecture decisions by default, and nobody on the business
side can tell if they&#39;re good ones.</li>
<li>Delivery has slowed down and nobody can explain why in plain words.</li>
<li>Investors, a big client or an auditor are starting to ask technical due-diligence questions.</li>
<li>Cloud or vendor costs are growing faster than revenue.</li>
</ul>
<h2 id="signs-a-fractional-cto-is-enough"><a class="heading-anchor" href="#signs-a-fractional-cto-is-enough" aria-hidden="true" tabindex="-1">#</a>Signs a fractional CTO is enough</h2>
<ul>
<li>The big decisions come in waves (a launch, a migration, a funding round), not every day.</li>
<li>You have, or will soon have, someone who can execute: a lead developer, a small team or a partner.</li>
<li>You can&#39;t yet justify a full executive salary, or you don&#39;t want to hire one before you know what the role
really needs.</li>
</ul>
<h2 id="signs-you-need-a-full-time-cto"><a class="heading-anchor" href="#signs-you-need-a-full-time-cto" aria-hidden="true" tabindex="-1">#</a>Signs you need a full-time CTO</h2>
<ul>
<li>Technology is your core product and differentiation, not a supporting function.</li>
<li>The engineering team is big enough that it needs daily leadership, career paths and hiring at a steady pace.</li>
<li>Technical decisions happen every day and waiting a few days for an answer is costly.</li>
</ul>
<p>A good fractional engagement often ends exactly there: with the architecture in order, the team hired and the
profile of the full-time CTO you need written down.</p>
<h2 id="a-simple-test"><a class="heading-anchor" href="#a-simple-test" aria-hidden="true" tabindex="-1">#</a>A simple test</h2>
<p>Write down the five most important technical decisions you&#39;ll make in the next six months. If you can&#39;t
write the list, or you can&#39;t say who will make each one, you need help with technical leadership, whatever
form it takes.</p>
]]></content:encoded>
    </item>
    <item>
      <title>My first 30 days as a fractional CTO: the checklist</title>
      <link>https://cesarnapoles.com/blog/first-30-days-fractional-cto/</link>
      <guid isPermaLink="true">https://cesarnapoles.com/blog/first-30-days-fractional-cto/</guid>
      <pubDate>Thu, 05 Nov 2026 08:00:00 GMT</pubDate>
      <category>CTO Log</category>
      <description>What I look at, in what order, when I join a company as a fractional CTO: from the intro call to a prioritised roadmap the team can execute.</description>
      <content:encoded><![CDATA[<p>The first month sets the tone of any engagement. Move too fast and you recommend things you don&#39;t understand
yet. Move too slowly and you&#39;re an expensive observer. This is the checklist I follow.</p>
<h2 id="week-1-listen-before-touching-anything"><a class="heading-anchor" href="#week-1-listen-before-touching-anything" aria-hidden="true" tabindex="-1">#</a>Week 1: listen before touching anything</h2>
<ul>
<li><strong>Founders and leadership:</strong> where the business is going in the next 12 months, and which technical problem
keeps them up at night.</li>
<li><strong>The team, one by one:</strong> what slows them down, what they&#39;d fix first, what they&#39;re afraid to touch.</li>
<li><strong>Customers&#39; view:</strong> the top support tickets and the complaints sales hears. They tell you where quality
really hurts.</li>
</ul>
<p>Output: a one-page summary of goals, pains and constraints, shared back with everyone I spoke to.</p>
<h2 id="week-2-the-technical-audit"><a class="heading-anchor" href="#week-2-the-technical-audit" aria-hidden="true" tabindex="-1">#</a>Week 2: the technical audit</h2>
<ul>
<li><strong>Architecture:</strong> how the main pieces talk to each other, where the data lives, what&#39;s a single point of
failure.</li>
<li><strong>Code and delivery:</strong> how a change gets from a laptop to production, how long it takes and how often it
breaks.</li>
<li><strong>Cloud and costs:</strong> what runs where, who has access and what each part costs.</li>
<li><strong>Vendors and contracts:</strong> what you depend on and how hard it would be to leave.</li>
<li><strong>Security basics:</strong> secrets, backups, access, and whether anyone has ever restored a backup.</li>
</ul>
<p>I&#39;m not grading the team. Most problems I find are reasonable decisions that outlived their context.</p>
<h2 id="week-3-the-roadmap"><a class="heading-anchor" href="#week-3-the-roadmap" aria-hidden="true" tabindex="-1">#</a>Week 3: the roadmap</h2>
<p>Every finding goes into one of three buckets:</p>
<ol>
<li><strong>Fix now:</strong> risks that could hurt the business soon (data loss, security holes, a fragile release
process).</li>
<li><strong>Build next:</strong> the changes that unblock the product roadmap.</li>
<li><strong>Leave alone:</strong> things that look ugly but aren&#39;t worth the time today. Saying this out loud is half the
value.</li>
</ol>
<p>Each item gets an owner, an effort estimate and the business outcome it serves. If I can&#39;t link an item to an
outcome, it doesn&#39;t go on the roadmap.</p>
<h2 id="week-4-start-executing-together"><a class="heading-anchor" href="#week-4-start-executing-together" aria-hidden="true" tabindex="-1">#</a>Week 4: start executing, together</h2>
<ul>
<li>Pick one or two quick wins the team can ship in days, to build trust in the plan.</li>
<li>Agree on the working rhythm: when I&#39;m available, how decisions get made and documented, what gets reviewed.</li>
<li>Start the first structural item hands-on, alongside the team.</li>
</ul>
<h2 id="the-goal"><a class="heading-anchor" href="#the-goal" aria-hidden="true" tabindex="-1">#</a>The goal</h2>
<p>From day one the goal is a team that doesn&#39;t depend on me. Every decision gets written down, every standard
gets automated where possible and every hire raises the bar. If the company still needs me in the same way
after a year, I haven&#39;t done the job well.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Start with a modular monolith (and know when to leave it)</title>
      <link>https://cesarnapoles.com/blog/modular-monolith-first/</link>
      <guid isPermaLink="true">https://cesarnapoles.com/blog/modular-monolith-first/</guid>
      <pubDate>Wed, 04 Nov 2026 08:00:00 GMT</pubDate>
      <category>CTO Log</category>
      <description>Why I recommend a well-structured monolith to most early-stage products, the signals that it&#39;s time to split, and how to prepare the code so the split is cheap.</description>
      <content:encoded><![CDATA[<p>I&#39;ve worked on microservices and event-driven systems with Kafka in large organisations, and I&#39;ve seen them
work very well. I still recommend almost every early-stage product to start with a <strong>modular monolith</strong>. Here&#39;s
why, and how to keep the door open.</p>
<h2 id="microservices-are-an-organisational-tool"><a class="heading-anchor" href="#microservices-are-an-organisational-tool" aria-hidden="true" tabindex="-1">#</a>Microservices are an organisational tool</h2>
<p>Their main benefit is letting many teams deploy independently without stepping on each other. If you have one
team of five, you don&#39;t have that problem. What you do get is the cost: network calls instead of function calls,
distributed transactions, more infrastructure, more pipelines, harder debugging and more on-call surface.</p>
<p>For a small team that&#39;s still searching for product-market fit, that cost is paid in the one currency it can&#39;t
afford: speed of change.</p>
<h2 id="what-quot-modular-quot-means-in-practice"><a class="heading-anchor" href="#what-quot-modular-quot-means-in-practice" aria-hidden="true" tabindex="-1">#</a>What &quot;modular&quot; means in practice</h2>
<p>A monolith becomes a mess when everything can call everything. A modular monolith sets boundaries from day one:</p>
<ul>
<li><strong>Modules by business capability</strong> (billing, catalogue, users), not by technical layer.</li>
<li><strong>Each module owns its data.</strong> Other modules don&#39;t read its tables; they call its public interface.</li>
<li><strong>Explicit public interfaces.</strong> Anything not exported is private, and a lint rule or architecture test
enforces it.</li>
<li><strong>Internal events for side effects.</strong> &quot;Order paid&quot; is published inside the process; whoever cares subscribes.
The day that becomes a message on a broker, the code barely changes.</li>
</ul>
<h2 id="the-signals-that-it-39-s-time-to-split-a-module-out"><a class="heading-anchor" href="#the-signals-that-it-39-s-time-to-split-a-module-out" aria-hidden="true" tabindex="-1">#</a>The signals that it&#39;s time to split a module out</h2>
<ul>
<li>A module needs to <strong>scale very differently</strong> from the rest (a heavy background job, a spike-prone API).</li>
<li><strong>Several teams</strong> are blocked on each other&#39;s releases in the same codebase.</li>
<li>A module has <strong>different requirements</strong> for availability, security or compliance.</li>
<li><strong>Deploys are slow or risky</strong> because of the size of the whole, and modular builds no longer help.</li>
</ul>
<p>None of those is &quot;it&#39;s 2026 and microservices are what serious companies do&quot;.</p>
<h2 id="how-to-split-without-a-rewrite"><a class="heading-anchor" href="#how-to-split-without-a-rewrite" aria-hidden="true" tabindex="-1">#</a>How to split without a rewrite</h2>
<p>When a module earns its own service, the boundaries are already there: it owns its data, it has a public
interface and it communicates through events. Extracting it is moving code and replacing in-process calls with
network calls, not a six-month redesign. That&#39;s the whole point of starting modular: making the expensive
decision later, when you have the information to make it well.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Closevibe: AI that answers your customers on WhatsApp, Instagram, Messenger and email</title>
      <link>https://cesarnapoles.com/blog/closevibe-ai-sales-support/</link>
      <guid isPermaLink="true">https://cesarnapoles.com/blog/closevibe-ai-sales-support/</guid>
      <pubDate>Tue, 03 Nov 2026 08:00:00 GMT</pubDate>
      <category>Launches</category>
      <description>What Closevibe does, the problem it solves for e-commerce teams, and the architecture behind it: multi-tenant, RAG-based agents and real-time orchestration.</description>
      <content:encoded><![CDATA[<p>Online shops lose sales in conversations: a question about sizes on Instagram at 11 pm, an order status on
WhatsApp during a sales peak, an email nobody answers until Monday. Closevibe is the company I co-founded to fix
that, and where I&#39;m CTO.</p>
<h2 id="what-it-does"><a class="heading-anchor" href="#what-it-does" aria-hidden="true" tabindex="-1">#</a>What it does</h2>
<p>Closevibe automates sales and customer-service conversations for e-commerce businesses across the channels
their customers already use: <strong>WhatsApp, Instagram, Messenger and email</strong>. It answers with the shop&#39;s own
knowledge, detects what the customer wants and keeps the conversation going in real time.</p>
<p>You can see it working on this site: the chat assistant in the corner is powered by Closevibe.</p>
<h2 id="how-it-39-s-built"><a class="heading-anchor" href="#how-it-39-s-built" aria-hidden="true" tabindex="-1">#</a>How it&#39;s built</h2>
<p>I architected the platform from scratch. The pieces that matter most:</p>
<ul>
<li><strong>Multi-tenant from day one.</strong> Every shop&#39;s data, knowledge and conversations are isolated.</li>
<li><strong>RAG-based agents.</strong> Answers are grounded in each business&#39;s own content, retrieved with semantic vector
search on <strong>PostgreSQL with pgvector</strong>, instead of relying on what a model happens to remember.</li>
<li><strong>Intent detection and real-time orchestration</strong>, so the system knows whether it&#39;s facing a pre-sale
question, an order issue or something a human should take over.</li>
<li><strong>Channel integrations</strong> through the Meta Business APIs (WhatsApp, Instagram, Messenger) and email.</li>
<li><strong>The stack:</strong> Python and FastAPI, React, PostgreSQL with pgvector, Docker on GCP and Railway.</li>
</ul>
<h2 id="what-i-learned-building-it"><a class="heading-anchor" href="#what-i-learned-building-it" aria-hidden="true" tabindex="-1">#</a>What I learned building it</h2>
<p>The model is the easy part. The hard parts are the boring ones: getting the right context into each answer,
knowing when not to answer, handing over to a person cleanly and making every channel behave the same despite
each API having its own rules. That&#39;s where most of our engineering time goes, and it&#39;s what makes the
difference between a demo and something a shop trusts with its customers.</p>
<h2 id="try-it"><a class="heading-anchor" href="#try-it" aria-hidden="true" tabindex="-1">#</a>Try it</h2>
<p>If you sell online and your team spends its day answering the same questions, take a look.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
