content: enrich project notes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
lucaronin
2026-02-21 11:59:59 +01:00
parent 6e5c87f321
commit 3bbf4dd15d
40 changed files with 1125 additions and 40 deletions

View File

@@ -7,4 +7,30 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Launch Sponsorship Packages
Define and launch the first structured sponsorship tiers. Create media kit and pricing deck.
## Overview
This project formalized Refactoring's monetization through sponsorships by creating structured packages that sponsors could evaluate and purchase. Before this, sponsorship deals were ad-hoc and inconsistent — pricing varied per deal, deliverables were loosely defined, and there was no media kit to send prospects.
The goal was to create three clear tiers (Logo, Spotlight, and Deep Dive) with fixed pricing, well-defined deliverables, and a professional media kit PDF. This would make outreach scalable and give [[person-luca-rossi]] a repeatable process instead of negotiating every deal from scratch. The project directly supported [[2024-double-revenue]] by establishing the revenue engine for the year.
## Goals
- Define three sponsorship tiers with clear deliverables and pricing (Logo: $500, Spotlight: $1,200, Deep Dive: $2,500)
- Create a professional media kit PDF with audience demographics, open rates, and testimonials
- Set up a Stripe billing workflow for recurring sponsors
- Draft email templates for outreach, follow-up, and renewal
- Close the first 3 paying sponsors before end of [[24q1]]
## Key decisions
- **Three tiers, not two or four.** Considered a simpler two-tier model, but having three gives sponsors a clear upgrade path. The Logo tier serves as a low-friction entry point.
- **Monthly pricing, not per-issue.** Charging monthly (4 issues) simplifies invoicing and gives sponsors more predictable budgets. This also aligns with how [[measure-sponsorship-mrr]] is tracked.
- **No exclusivity clauses.** Decided against offering category exclusivity because the newsletter audience is too broad to guarantee meaningful exclusivity, and it would limit revenue potential.
## Notes
- The media kit took longer than expected — gathering accurate audience data required exporting from Substack and ConvertKit, which have inconsistent analytics. Settled on a conservative subscriber count to maintain credibility.
- [[person-matteo-cellini]] provided useful feedback on the pricing deck layout. His experience with B2B sales helped shape the value proposition framing.
- First three sponsors came from warm outreach to developer tool companies who had previously engaged with newsletter content. Cold outreach conversion was near zero at this stage.
- This project established the foundation for [[procedure-sponsor-onboarding]] and [[procedure-quarterly-sponsor-outreach]], which were formalized later in [[24q2]].

View File

@@ -7,4 +7,30 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Plan 2024 Cycling Season
Plan races, training blocks, and equipment upgrades for the 2024 cycling season.
## Overview
This project laid out the full 2024 cycling calendar — target events, training blocks, rest weeks, and equipment needs. The main objective was to complete two gran fondos in 2024, supporting [[2024-complete-two-gran-fondos]], while maintaining a sustainable training load that would not interfere with work commitments.
Planning happened in January and February so that structured training could begin in March. This included selecting target events, mapping out a periodized training plan (base, build, peak, recovery), and identifying any gear upgrades needed before the season. [[person-paco-furiani]] helped review the training plan and suggested adjustments based on his own racing experience.
## Goals
- Select two target gran fondos for 2024 (spring and autumn)
- Design a 24-week periodized training plan with base, build, and peak phases
- Establish weekly volume targets: 8-12 hours per week during build phase
- Budget and plan equipment upgrades (new wheelset, tire strategy for events)
- Set up tracking in Strava and TrainingPeaks for [[measure-cycling-km-per-month]]
## Key decisions
- **Granfondo di Varese (May) and Granfondo dell'Appennino (September)** selected as the two target events. Varese was chosen for its accessibility and moderate difficulty; Appennino for its challenging profile that would test peak fitness.
- **Polarized training model** rather than threshold-heavy. After reading several studies on amateur endurance performance, decided that 80/20 (easy/hard) distribution would be more sustainable alongside a demanding work schedule.
- **No coach for now.** Considered hiring a cycling coach but decided to self-coach for 2024 using structured plans from TrainingPeaks. If results are good, revisit for 2025.
## Notes
- The biggest risk to the plan was always going to be consistency — weeks with heavy newsletter deadlines or sponsor calls tend to eat into training time. Built in buffer weeks to account for this.
- Realized during planning that the winter base phase was already partially missed. Adjusted by extending the base phase by two weeks and compressing the first build block slightly.
- Equipment decision: went with a new set of carbon wheels (Campagnolo Bora WTO 45) rather than upgrading the frame. Better bang for the buck in terms of performance gain per euro.
- This plan feeds directly into [[24q2-spring-gran-fondo]] for the first event execution and into [[topic-cycling-training]] for ongoing training notes.

View File

@@ -7,4 +7,30 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Podcast Season 1 Launch
Launch the Refactoring podcast with 6 episodes recorded in advance. Focus: engineering culture.
## Overview
This project launched the Refactoring podcast — a long-form interview show focused on engineering culture, technical leadership, and the human side of building software. The idea had been brewing for months, but the decision to actually ship was driven by [[2024-launch-podcast]] as a key goal for the year.
The strategy was to batch-record 6 episodes before publishing anything, so that the launch would have a backlog and a consistent weekly cadence from day one. This meant spending most of January and February on guest outreach, recording, and editing, with the public launch in mid-March. [[person-sara-ricci]] joined as editor toward the end of the project to handle post-production, which proved essential for maintaining quality while keeping up with the newsletter schedule.
## Goals
- Record 6 episodes before public launch (buffer for consistent weekly releases)
- Secure guests with strong engineering leadership backgrounds (CTOs, VPEs, Staff+ engineers)
- Set up podcast hosting, RSS feed, and distribution to Apple Podcasts, Spotify, and YouTube
- Design cover art and episode template graphics
- Establish [[procedure-podcast-recording]] and [[procedure-podcast-editing]] workflows
## Key decisions
- **Interview format, not solo.** Considered doing solo episodes or co-hosted commentary, but interviews leverage guest audiences for cross-promotion and are more engaging for a new show with no existing listener base.
- **Season model, not continuous.** Adopted a seasonal structure (8-10 episodes per season) with breaks between seasons. This prevents burnout and allows time to plan each season's theme. Season 1 theme: "Engineering Culture."
- **Audio-first, video as bonus.** Recorded video but optimized for audio quality. Video clips are used for social promotion, but the primary distribution is audio podcasts. This reduced production overhead significantly.
## Notes
- Guest booking was the hardest part. Sent about 40 outreach emails to get 8 confirmed guests (6 recorded, 2 cancelled). Cold outreach to high-profile CTOs had about a 5% response rate. Warm intros from [[person-matteo-cellini]] and [[person-david-kim]] were far more effective.
- The first two episodes had noticeable audio quality issues — learned the hard way that remote recordings via Zoom are not sufficient. Switched to Riverside.fm for episodes 3-6, which was a significant improvement.
- Launch week saw about 1,200 downloads across the first 3 episodes, which was above the initial target of 500. The newsletter cross-promotion was the primary driver — [[measure-podcast-downloads]] tracked closely with newsletter send days.
- This project created the foundation for [[24q3-podcast-season-2]] and all subsequent seasons. The workflows established here, particularly [[procedure-podcast-recording]], have remained largely unchanged.

View File

@@ -7,4 +7,30 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Redesign Newsletter Template
Redesign the Refactoring email layout for better readability and visual hierarchy.
## Overview
The Refactoring newsletter template had been largely unchanged since launch — a plain text-heavy layout that worked at small scale but felt increasingly dated as the subscriber base grew. This project redesigned the email template for better readability, visual hierarchy, and sponsor placement. The redesign needed to improve the reading experience while also making sponsorship placements more visually distinct and valuable, supporting [[2024-double-revenue]].
The new template introduced a cleaner header, better typography spacing, a dedicated sponsor block with clear visual boundaries, and a structured footer with social links and podcast promotion. It was tested across major email clients (Gmail, Apple Mail, Outlook) and went through three iterations based on feedback from a small group of beta readers.
## Goals
- Redesign the email template with improved visual hierarchy and readability
- Create a dedicated, visually distinct sponsor placement section
- Ensure compatibility across Gmail, Apple Mail, Outlook, and mobile clients
- Improve click-through rate on inline links by at least 15%
- Establish the new template as the standard for [[procedure-weekly-newsletter]]
## Key decisions
- **Single-column layout.** Evaluated two-column layouts with sidebar content, but testing showed that single-column performs significantly better on mobile (where 65%+ of opens happen). Simplicity won.
- **Sponsor block above the fold.** Moved the sponsor placement from mid-article to just below the header intro. This increased sponsor visibility without feeling intrusive, since the block is clearly labeled and visually separated. Sponsors noticed and appreciated the change.
- **No images in the main body.** Kept the template text-focused with minimal imagery. Images in email are unreliable (blocked by many clients), increase load time, and distract from the content. The only image is the sponsor logo.
## Notes
- The biggest surprise was how much email client rendering varies. A layout that looked perfect in Gmail was broken in Outlook. Ended up using a very conservative CSS approach with inline styles and table-based layout for maximum compatibility.
- [[person-sara-ricci]] helped with copy feedback on the new footer and CTA sections. Her editorial eye caught several awkward phrasings in the template boilerplate.
- A/B tested the new template against the old one over two issues. The new template showed a 22% increase in click-through rate, primarily driven by better link placement and the structured "further reading" section at the bottom.
- [[measure-open-rate]] remained stable through the transition, confirming that the redesign did not trigger spam filters or cause deliverability issues. This was a real concern given how sensitive email infrastructure is to template changes.

View File

@@ -7,4 +7,30 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Set Up Investing Framework
Define a personal investment policy statement and set up automated monthly contributions to index funds.
## Overview
As Refactoring's revenue grew, it became clear that personal finance needed a more structured approach. This project defined a personal investment policy statement (IPS) and set up automated monthly contributions to a diversified portfolio of index funds. The goal was to remove emotion and ad-hoc decision-making from investing and replace it with a simple, repeatable system.
Before this project, savings were sitting in a low-yield savings account with no clear allocation strategy. The framework needed to be simple enough to maintain alongside a busy content business, while being sophisticated enough to actually build long-term wealth. Research phase took about three weeks, followed by account setup and automation.
## Goals
- Draft a personal Investment Policy Statement defining asset allocation, risk tolerance, and rebalancing rules
- Open a brokerage account with a low-cost provider (selected Degiro for European access and low fees)
- Set up automated monthly contributions (20% of net monthly revenue)
- Define a target allocation: 70% global equities (VWCE), 20% bonds (VAGF), 10% cash reserve
- Create a quarterly review checklist to assess allocation drift and rebalance if needed
## Key decisions
- **Passive index funds, not individual stocks.** After extensive reading (Bogle, Bernstein, Housel), decided that passive investing is the only approach that makes sense for someone whose primary income comes from a content business. Time spent stock-picking is time not spent on the newsletter.
- **Single accumulating ETF for equities (VWCE).** Rather than splitting across US, European, and emerging market ETFs, chose a single all-world accumulating ETF. Simplicity reduces friction and the urge to tinker.
- **20% of revenue, not a fixed amount.** Tying contributions to revenue percentage means the system scales with business growth and naturally reduces in leaner months without requiring manual adjustment.
## Notes
- The hardest part was actually committing to a framework and stopping the research phase. There is an infinite amount of personal finance content online, and it is easy to fall into analysis paralysis. Set a hard deadline of February 15 to finalize the IPS and stop reading.
- [[person-marco-bianchi]] shared his own investment framework, which was helpful for validating the approach. His suggestion to keep a separate 6-month emergency fund in a high-yield savings account was incorporated.
- The [[24q2-stock-screener]] experiment later in the year was a brief detour into individual stock analysis, but it reinforced the decision to stick with passive investing. The time spent did not justify the marginal (and uncertain) returns.
- Quarterly reviews are tracked as part of [[responsibility-personal-finance]]. The first two reviews in 2024 showed minimal drift, confirming that the set-and-forget approach works as intended.

View File

@@ -7,4 +7,30 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Write 10 Pillar Articles
Write 10 in-depth articles targeting high-traffic SEO terms in the developer/engineering space.
## Overview
This project focused on creating 10 long-form "pillar" articles — comprehensive, SEO-optimized pieces targeting high-traffic search terms in the engineering leadership and developer productivity space. These articles serve a dual purpose: they drive organic search traffic to the Refactoring website (feeding [[measure-subscribers]] growth) and establish topical authority that supports [[2024-reach-50k-subscribers]].
Each article was 2,500-4,000 words, thoroughly researched, and structured for both readability and search engine performance. Topics were selected based on keyword research using Ahrefs, focusing on terms with decent search volume (1K-10K monthly) and moderate competition. The articles were published on the Refactoring blog and cross-promoted through the newsletter over [[24q2]].
## Goals
- Research and select 10 high-value keyword targets using Ahrefs
- Write 10 articles of 2,500-4,000 words each, with clear structure and internal linking
- Optimize each article for on-page SEO (meta descriptions, headers, image alt text)
- Publish on a bi-weekly cadence throughout Q2
- Achieve first-page Google ranking for at least 3 target keywords within 6 months
## Key decisions
- **Evergreen topics only.** All 10 articles target topics that will remain relevant for 2+ years (e.g., "how to run effective 1:1s," "staff engineer vs. engineering manager"). Avoided trending or news-driven topics that would decay quickly.
- **Newsletter-first drafts, then expanded for SEO.** Several articles started as popular newsletter issues that were expanded with additional depth, examples, and structure. This reduced research time and ensured the topics had proven audience interest.
- **No freelance writers.** Considered outsourcing some articles but decided that the Refactoring voice is too distinctive to delegate at this stage. [[person-sara-ricci]] edited all 10 pieces, which maintained quality while freeing time for drafting.
## Notes
- Writing 10 pillar articles in one quarter while maintaining the weekly newsletter was extremely demanding. Weeks 5-8 were particularly brutal — the output quality dipped on newsletter issues during that period. In hindsight, 7-8 articles would have been more sustainable.
- The article on "Engineering Manager vs. Tech Lead" became the highest-performing piece, ranking on page 1 within 8 weeks and driving ~3,000 monthly organic visits. This single article accounted for about 30% of the total organic traffic from all 10 pieces.
- Internal linking between pillar articles and existing newsletter content created a noticeable boost in site-wide SEO metrics. Average session duration increased by 40% during Q2.
- This project directly informed [[topic-content-strategy]] and established the content pillar framework that was later extended in [[25q1-newsletter-seo-sprint]].

View File

@@ -7,4 +7,30 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Build Podcast Landing Page
Create a dedicated landing page for the Refactoring podcast with episode archive and subscribe CTA.
## Overview
After launching the podcast in [[24q1-podcast-season-1]], it became clear that there was no proper home for the show on the web. Episodes were scattered across Apple Podcasts, Spotify, and YouTube, but there was no single page where listeners could browse the archive, read show notes, and subscribe. This project created a dedicated landing page on the Refactoring website to serve as the podcast's canonical home.
The page needed to work both as a discovery tool for new listeners and as a reference for existing ones. It also needed to support sponsor visibility, since podcast sponsorships were part of the package tiers defined in [[24q1-launch-sponsorship-packages]]. The page was built using the existing site's tech stack (Next.js) and went live in early May.
## Goals
- Design and build a podcast landing page with episode archive, show notes, and embedded audio player
- Include subscribe CTAs for Apple Podcasts, Spotify, YouTube, and RSS
- Add a "Featured Guest" section to highlight notable episodes and drive social proof
- Integrate sponsor logos and links for current podcast sponsors
- Ensure the page is mobile-responsive and loads quickly (target: <2s LCP)
## Key decisions
- **Static generation, not dynamic.** Each episode page is statically generated at build time from a markdown file with frontmatter metadata. This keeps hosting costs zero (Vercel free tier) and ensures fast page loads. New episodes trigger a rebuild via a GitHub webhook.
- **Embedded player, not custom.** Used the native Spotify/Apple embed widgets rather than building a custom audio player. The maintenance cost of a custom player was not justified given that most listeners use their preferred podcast app anyway.
- **Show notes as full articles.** Rather than just listing bullet points, each episode's show notes page is a full article with key takeaways, timestamps, and links. This gives the pages SEO value and provides genuine utility for listeners who prefer reading to listening.
## Notes
- The page design went through two iterations. The first version was too sparse — just a list of episodes with play buttons. [[person-giulia-conti]] suggested adding guest photos and pull quotes, which made the page significantly more engaging.
- Getting the embedded players to render correctly across browsers was more annoying than expected. Spotify's embed widget has inconsistent height behavior on Safari. Ended up using a fixed-height iframe with a fallback link.
- The landing page became the default link shared in the newsletter for podcast promotion, replacing direct Spotify/Apple links. This centralized analytics tracking through [[measure-podcast-downloads]] and gave better visibility into listener behavior.
- Page traffic is modest (~500 unique visitors/month) but steady, and it ranks for several long-tail podcast-related keywords. The SEO investment in show notes is paying off gradually.

View File

@@ -7,4 +7,30 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Hire Editor (Sara)
Hire a part-time editor to raise newsletter quality and free up writing time.
## Overview
By mid-2024, writing the weekly newsletter, managing sponsorships, recording podcast episodes, and handling business operations was becoming unsustainable as a solo operation. The most impactful hire at this stage was an editor — someone who could elevate the writing quality, reduce revision cycles, and free up time for higher-leverage activities like strategy and guest relationships.
After a lightweight hiring process, [[person-sara-ricci]] joined as a part-time editor in May 2024. Sara had previous experience editing technical content for developer publications, which was critical — engineering leadership content requires an editor who understands the domain, not just grammar. This hire directly supported scaling [[responsibility-content-production]] and was a prerequisite for hitting [[2024-reach-50k-subscribers]].
## Goals
- Define the editor role: scope, hours, compensation, and working relationship
- Source and evaluate 5-10 candidates through network referrals and job boards
- Run a paid trial edit with top 3 candidates using a real newsletter draft
- Onboard the selected editor with style guide, editorial calendar, and tooling access
- Achieve a steady-state workflow where drafts go through one editorial pass before publish
## Key decisions
- **Part-time contractor, not full-time employee.** The workload did not justify a full-time hire yet, and contractor status keeps the arrangement flexible as the business scales. Sara works approximately 15 hours/week.
- **Paid trial before commitment.** Rather than hiring based on interviews alone, asked the top 3 candidates to edit the same newsletter draft. This revealed huge differences in editorial judgment that interviews could not surface. Sara's edits were the most substantive — she restructured sections and challenged weak arguments, not just fixed typos.
- **Editor has veto power on publish readiness.** Gave Sara explicit authority to push back on drafts that are not ready. This was uncomfortable at first but has significantly improved quality. If Sara says it needs another pass, it gets another pass.
## Notes
- The hiring process took about 4 weeks from posting to signed contract. Received ~30 applications, shortlisted 8, did calls with 5, trial edits with 3. The trial edit step was by far the most valuable signal.
- Biggest adjustment was learning to write "editor-friendly" first drafts — meaning rough structure and arguments are solid, but prose is intentionally unpolished. Trying to write perfectly on the first pass and then having an editor change it creates friction. Better to write fast and let Sara shape the prose.
- Sara also took on podcast show notes editing, which was not in the original scope but made sense as her familiarity with the content grew. This expanded into the workflow documented in [[procedure-podcast-editing]].
- [[person-matteo-cellini]] recommended Sara — they had worked together at a previous company. Network referrals continue to be the best hiring channel for roles that require domain expertise.

View File

@@ -7,4 +7,30 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Set Up Sponsor CRM
Build an Airtable CRM to track sponsor outreach, deal status, invoices, and renewal dates.
## Overview
With sponsorship deals increasing after [[24q1-launch-sponsorship-packages]], tracking outreach, deal status, invoicing, and renewals in a spreadsheet was no longer viable. This project built a proper CRM system in Airtable to manage the full sponsor lifecycle — from initial outreach through booking, fulfillment, reporting, and renewal.
The CRM needed to support [[procedure-quarterly-sponsor-outreach]] and [[procedure-sponsor-onboarding]] while being lightweight enough for a one-person sales operation (with occasional help from [[person-matteo-cellini]] on outreach). The system went live in April 2024 and has been the backbone of sponsor management since, directly supporting [[2024-double-revenue]].
## Goals
- Design an Airtable base with tables for Companies, Contacts, Deals, Invoices, and Placements
- Build views for pipeline management (kanban), upcoming renewals, and revenue tracking
- Set up automations for deal stage notifications and renewal reminders (30 days before expiry)
- Import existing sponsor data from the old spreadsheet (~15 companies, ~25 deals)
- Document the CRM workflow and train [[person-matteo-cellini]] on outreach tracking
## Key decisions
- **Airtable, not a dedicated CRM tool.** Evaluated HubSpot, Pipedrive, and Notion. HubSpot was overkill (and expensive) for ~50 deals/year. Pipedrive was close but lacked the flexibility for tracking placement fulfillment. Airtable's combination of structured data, views, and automations hit the sweet spot for this scale.
- **Deal-centric model, not contact-centric.** The primary entity is the Deal (a specific sponsorship booking), not the Contact or Company. This reflects the actual workflow — most actions are about advancing a specific deal, not managing a relationship in the abstract.
- **Automated renewal reminders at 30 and 7 days.** Renewal is the highest-leverage moment in the sponsor lifecycle. Automating reminders ensures no renewal slips through the cracks, which was happening with the spreadsheet system.
## Notes
- Migrating from the spreadsheet exposed several data quality issues — duplicate companies, inconsistent naming, missing invoice dates. Cleaning this up took a full day but was worth it for a clean foundation.
- The kanban view for pipeline management became the default "daily check" for sponsor operations. Being able to see all deals by stage (Prospect, Outreach, Negotiation, Booked, Fulfilled, Renewed) at a glance changed how proactive the outreach process feels.
- Airtable's automation limits on the free plan were a constraint. Upgraded to the Team plan ($20/month) to get enough automation runs. The cost is trivial relative to the revenue it manages.
- [[measure-sponsorship-mrr]] is now calculated directly from the CRM data, which eliminated the manual reconciliation that was happening before. Revenue reporting went from a quarterly headache to an always-current dashboard.

View File

@@ -7,4 +7,31 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Spring Gran Fondo 2024
Train for and complete the Granfondo di Varese — 130km route, 2200m elevation.
## Overview
This was the first of two target events for 2024, as planned in [[24q1-plan-cycling-season]]. The Granfondo di Varese — 130km with 2,200m of elevation gain — served as both a fitness benchmark and a motivational milestone for the spring training block. The event was scheduled for late May, giving a solid 12-week build phase from March through mid-May.
Preparation included structured interval training (3 sessions/week), long weekend rides (4-5 hours), and two recon rides on sections of the actual course. The goal was not to race competitively but to complete the full route in under 5 hours and 30 minutes, maintaining good form throughout. This project directly advanced [[2024-complete-two-gran-fondos]].
## Goals
- Complete the Granfondo di Varese full route (130km, 2,200m elevation) in under 5:30
- Execute the 12-week build training plan with at least 80% adherence
- Complete two course recon rides to familiarize with key climbs and descents
- Maintain race weight (72kg) through the build phase
- Log all training data for post-event analysis via [[measure-cycling-km-per-month]]
## Key decisions
- **Full route, not the medio.** The event offered a 90km "medio" option. Chose the full 130km because the training plan was designed for it, and the shorter route would not provide a meaningful fitness test. If the legs failed on race day, it would be better to know that at full distance.
- **Conservative pacing strategy.** Rather than going hard on the first climb (which is where most amateurs blow up), planned to ride the first 60km at 75% of threshold power and increase effort in the second half. This negative-split approach is less exciting but far more reliable.
- **No travel the day before.** Drove to Varese two days before the event to avoid travel fatigue. Stayed at a simple hotel near the start line. The extra cost was worth the better sleep and relaxed morning.
## Notes
- Finished in 5:17, which was well within the target. The conservative pacing strategy worked perfectly — felt strong on the final climb while many riders around were walking. Negative split confirmed: second half was 3 minutes faster than the first.
- Training adherence was about 85%, which was above target. The two weeks lost to a mild cold in April were compensated by extending the build phase slightly and cutting one recovery week short.
- [[person-paco-furiani]] rode the event as well and finished about 20 minutes ahead. His feedback on nutrition strategy (eating every 30 minutes from the start, not waiting until hungry) was a game-changer. Applied the same approach going forward.
- Biggest lesson: the mental game matters more than fitness above a certain threshold. The climbs at km 90-110 were physically manageable but mentally draining. Having a clear pacing target on the bike computer helped maintain focus.
- Post-event recovery took about 10 days before training resumed. This feeds into preparation for the autumn event, which was later scoped as a separate project.

View File

@@ -7,4 +7,30 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Speak at Codemotion Milan
Prepare and deliver a 30-min talk on newsletter growth for technical founders.
## Overview
Codemotion Milan 2024 invited [[person-luca-rossi]] to deliver a 30-minute talk on growing a newsletter business as a technical founder. The talk, titled "From Side Project to 50K Subscribers: Building a Content Business in Public," covered the Refactoring growth story, key inflection points, and practical lessons for engineers considering content as a career path or side business.
This was the first major conference speaking engagement and represented an important step in building personal brand credibility beyond the newsletter audience. Conference talks drive a different kind of trust than written content — they put a face and voice to the brand, which strengthens both subscriber acquisition and sponsor confidence. The talk was well-received and led to several valuable connections, including two future podcast guests.
## Goals
- Write and rehearse a 30-minute talk with slides
- Target key themes: newsletter economics, audience building, and the engineering-to-content pipeline
- Deliver the talk at Codemotion Milan in October 2024
- Record the talk for repurposing as a YouTube video and newsletter content
- Generate at least 200 new newsletter subscribers from the event
## Key decisions
- **Story-driven structure, not a how-to.** Rather than a generic "10 tips for growing a newsletter" format, structured the talk as a chronological narrative of the Refactoring journey. Stories are more memorable and more authentic than advice lists.
- **Include real numbers.** Shared actual subscriber counts, revenue milestones, and open rates. Transparency is a core Refactoring value and it differentiates the talk from vague "I grew my audience" presentations. This decision was slightly uncomfortable but generated the most positive feedback.
- **No live demo.** Considered showing the newsletter creation process live but decided the risk of technical issues on stage was not worth it. Used screenshots and short video clips instead.
## Notes
- Preparation took about 3 weeks of part-time work — mostly slide design and rehearsal. Rehearsed the full talk 5 times, including twice in front of [[person-sara-ricci]] and [[person-matteo-cellini]] who gave tough but useful feedback on pacing and clarity.
- The audience was about 300 people, skewing toward mid-career developers and engineering managers. Q&A was lively — the most common question was about time management (how to write a weekly newsletter while also doing other work). This became a topic for a future newsletter issue.
- Post-talk networking led to meeting [[person-emma-wilson]] and [[person-david-kim]], both of whom later appeared as podcast guests in [[24q3-podcast-season-2]] and [[25q2-podcast-season-3]] respectively.
- The talk recording was published on YouTube and performed modestly (~2,500 views in 3 months), but the subscriber spike from the event itself was about 180 — slightly below the 200 target but still a strong result for a single event. The real value was in credibility and relationship building, not direct conversion.

View File

@@ -7,4 +7,31 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Expand Sponsor Verticals
Target cloud infra, devtools, and AI/ML companies as new sponsor categories.
## Overview
The first two quarters of sponsorship revenue came primarily from developer tools (CI/CD, monitoring, testing platforms). While this vertical was reliable, concentration risk was high — losing one or two devtools sponsors could significantly impact [[measure-sponsorship-mrr]]. This project expanded the sponsor base into three new verticals: cloud infrastructure, AI/ML platforms, and developer education.
Expanding verticals required adapting the outreach messaging and media kit to resonate with different buyer personas. Cloud infra companies care about enterprise decision-makers in the audience; AI/ML companies want to reach early adopters; education companies want ambitious individual developers. [[person-matteo-cellini]] led much of the outreach effort, using the CRM built in [[24q2-sponsor-crm]] to manage the pipeline. This project was critical for [[2024-double-revenue]].
## Goals
- Identify 30+ target companies across cloud infrastructure, AI/ML, and developer education verticals
- Adapt the media kit with vertical-specific audience data and case studies
- Run targeted outreach campaigns for each vertical (10+ companies each)
- Close at least 5 new sponsors from the new verticals by end of [[24q3]]
- Achieve vertical diversification: no single vertical should represent more than 40% of sponsorship revenue
## Key decisions
- **Three verticals, not more.** Considered also targeting recruitment platforms and SaaS tools, but decided to focus on three verticals where the audience fit was strongest. Spreading too thin would dilute outreach quality.
- **Vertical-specific case studies.** Rather than using a generic media kit, created tailored one-pagers for each vertical showing relevant audience segments. For example, the cloud infra pitch highlighted the percentage of readers who are engineering managers or directors (the buying decision-makers for infrastructure).
- **Higher pricing for AI/ML vertical.** AI/ML companies had larger marketing budgets and higher urgency to reach developers. Tested a 20% price premium on the Deep Dive tier for this vertical, and it held without pushback.
## Notes
- Cloud infrastructure was the easiest vertical to crack — many companies were already familiar with newsletter sponsorships and had established budgets for developer marketing. Closed 3 deals in this vertical within 6 weeks.
- AI/ML was more volatile — companies had budget but were less predictable. Two deals fell through after verbal commitment because of budget freezes. The companies that did close were excellent sponsors with high renewal rates.
- Developer education was harder than expected. Many education companies preferred affiliate/commission models over flat-rate sponsorships. Only closed 1 deal in this vertical during Q3, though it renewed for 3 months.
- By end of Q3, vertical distribution was: devtools 35%, cloud infra 30%, AI/ML 25%, education 10%. This was a significant improvement from the previous 85% devtools concentration.
- The outreach templates developed during this project became part of [[procedure-quarterly-sponsor-outreach]] and continue to be used with minor updates.

View File

@@ -7,4 +7,31 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Podcast Season 2
Record and release 8 episodes focused on engineering leadership and org design.
## Overview
Building on the momentum from [[24q1-podcast-season-1]], Season 2 expanded the podcast to 8 episodes with a focused theme on engineering leadership and organizational design. The season explored how high-performing engineering teams are structured, how technical leaders make decisions, and the human dynamics that make or break engineering organizations.
The production workflow was significantly smoother this time — [[person-sara-ricci]] handled all post-production editing using the [[procedure-podcast-editing]] workflow established during Season 1, and [[person-paco-furiani]] helped with guest research and outreach. The landing page built in [[24q2-build-podcast-landing-page]] served as the canonical home for all episodes. Season 2 launched in July and ran through September.
## Goals
- Record and publish 8 episodes on engineering leadership and org design
- Secure higher-profile guests (target: at least 2 guests with 10K+ Twitter following)
- Grow average episode downloads to 2,000 (up from Season 1's ~1,500 average)
- Introduce a podcast sponsorship slot (mid-roll read) aligned with newsletter sponsor packages
- Improve audio quality: all episodes recorded on Riverside.fm with backup local recordings
## Key decisions
- **Themed season with a narrative arc.** Rather than random topics, structured Season 2 around a progression: from individual contributor leadership (episodes 1-2) to team dynamics (3-4) to org design (5-6) to executive leadership (7-8). This gave the season a cohesive feel and encouraged binge listening.
- **Mid-roll sponsor read, not pre-roll.** Tested sponsor placements and found that mid-roll reads (inserted at a natural break around the 15-minute mark) had significantly better recall and click-through than pre-roll. This aligned with the sponsorship packages from [[24q1-launch-sponsorship-packages]].
- **No video this season.** Dropped the video component entirely to reduce production overhead. The video clips from Season 1 generated minimal YouTube traction, and the effort-to-impact ratio was poor. Refocused entirely on audio quality.
## Notes
- Guest booking was easier in Season 2 — having a published Season 1 with real download numbers made outreach emails far more credible. Response rate improved from ~15% to ~30%.
- [[person-emma-wilson]] (VP Engineering at a Series C startup) was the standout guest — her episode on "Building Engineering Culture from Scratch" became the most downloaded episode of the season (~3,200 downloads) and was widely shared on LinkedIn.
- Average downloads per episode reached 2,100, exceeding the 2,000 target. The newsletter cross-promotion and improved show notes SEO from [[24q2-build-podcast-landing-page]] were the primary growth drivers.
- The podcast sponsorship slot generated about $1,500 in additional monthly revenue during the season, which validated the channel as a revenue stream alongside newsletter sponsorships.
- [[measure-podcast-downloads]] showed a clear pattern: downloads spike on newsletter send days and taper gradually. This confirms that the newsletter audience is the primary distribution channel for the podcast.

View File

@@ -7,4 +7,31 @@ Status: Abandoned
Owner: "[[person-luca-rossi]]"
---
# Launch Premium Newsletter Tier
Experiment with a paid tier. Abandoned after 6 weeks due to low conversion.
## Overview
This project explored adding a paid subscription tier to the Refactoring newsletter. The hypothesis was that a segment of the audience would pay $10/month for premium content — deeper case studies, exclusive interviews, and a private community. If successful, this would create a second revenue stream alongside sponsorships and reduce dependency on a single monetization model.
The premium tier launched in mid-July with a 2-week free trial. After 6 weeks of operation, conversion rates were significantly below projections (0.3% vs. the 2% target), and the incremental content burden was unsustainable alongside the free newsletter and podcast. The project was abandoned in early September. While the outcome was a clear negative, the experiment provided valuable data about the audience's willingness to pay and the true cost of premium content production.
## Goals
- Design the premium tier: pricing, content cadence, and exclusive features
- Set up Substack paid subscriptions with a 2-week free trial
- Create 4 premium-only deep dives to serve as the initial content library
- Acquire 200 paying subscribers within the first 6 weeks
- Evaluate viability: target a sustainable $2,000/month from paid subscriptions
## Key decisions
- **$10/month, not $5 or $15.** Benchmarked against similar engineering newsletters. $5 felt too cheap to justify the effort; $15 was above what comparable newsletters charged. $10 was the market rate, but it turned out the audience was not price-sensitive — they simply did not want to pay for content that was perceived as similar to the free tier.
- **Deep dives as the core premium offering.** Rather than gating regular newsletter issues, created separate premium-only deep dives (3,000-5,000 words). This preserved the free newsletter's value while offering something genuinely different. The problem was that the deep dives took 8-10 hours each to write, making the unit economics terrible at low subscriber counts.
- **Abandoned rather than pivoted.** Considered pivoting to a community-only premium tier (no premium content, just Discord access), but decided the timing was wrong. The audience was not large enough to sustain a vibrant paid community. Revisiting community as a concept in [[25q3-community-launch]] with a different approach.
## Notes
- The 0.3% conversion rate was the clearest signal. Industry benchmarks for engineering newsletters suggest 1-3% is typical. Being at 0.3% meant the value proposition was fundamentally off, not just undermarketed.
- The 60 subscribers who did convert were highly engaged and gave positive feedback. Several said they subscribed to "support the newsletter" rather than for the premium content itself. This suggests a patronage model (like Patreon) might work better than a content-gated model.
- The biggest cost was not financial but attentional. Writing premium deep dives while maintaining the free newsletter, podcast, and sponsor obligations created unsustainable pressure during July-August. [[person-sara-ricci]] flagged this early and was right.
- Key lesson: for a sponsorship-funded newsletter, adding paid subscriptions creates a conflict. Free reach drives sponsor value; gating content behind a paywall reduces reach. The two models work against each other unless the audience is very large. Better to focus on growing [[measure-subscribers]] and increasing sponsor rates.
- This experiment informed the decision to try [[25q1-paid-newsletter-trial]] with a completely different approach (annual pricing, bundled with podcast content).

View File

@@ -7,4 +7,31 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Summer Reading Sprint
Read 6 books in July-August. Topics: history, business, and philosophy of science.
## Overview
July and August are traditionally lighter months for the newsletter (sponsors pause, audience engagement dips during European summer holidays), which creates space for deeper reading. This project set an intentional reading goal of 6 books in two months, focused on history, business, and philosophy of science — topics that inform the newsletter's intellectual depth without being directly "content research."
The sprint contributed to [[2024-read-24-books]] and was structured around dedicated morning reading blocks (7:00-8:30 AM, before work) and longer sessions during weekends. The mix of topics was deliberate: history for perspective, business for practical frameworks, and philosophy of science for clearer thinking about complex systems.
## Goals
- Read 6 books in July and August (3 per month)
- Topic mix: 2 history, 2 business, 2 philosophy of science
- Write brief reading notes for each book in the vault
- Identify at least 3 ideas from the reading that can be developed into newsletter issues
- Maintain the reading habit: minimum 45 minutes per day, 6 days per week
## Key decisions
- **Curated list, not discovery-driven.** Selected all 6 books before the sprint began rather than picking the next book after finishing one. This avoided the decision fatigue that usually slows down reading between books. The list was finalized in late June.
- **Physical books only.** Committed to reading physical copies rather than Kindle during the sprint. The tactile experience and absence of screen distractions improved focus and retention. Kindle is fine for casual reading, but for a concentrated sprint, physical books won.
- **Notes in the vault, not Goodreads.** All reading notes written as markdown files in the personal vault rather than on Goodreads or a public platform. The notes are for personal reference and newsletter idea generation, not social signaling.
## Notes
- Completed 5 of 6 books (83% completion). The sixth book (a dense history of the Scientific Revolution) was about 60% finished by end of August and completed in early September. Close enough to call it a success.
- The standout read was "The Innovator's Dilemma" (re-read) — it directly influenced thinking about the newsletter's competitive dynamics and informed two Q4 newsletter issues on disruption in developer tools.
- Morning reading blocks worked exceptionally well. The consistency of a fixed time slot made the habit nearly automatic by the third week. This approach has been maintained beyond the sprint.
- [[person-marco-bianchi]] recommended "The Structure of Scientific Revolutions" (Kuhn), which turned out to be the most intellectually challenging and rewarding book of the sprint. The concept of paradigm shifts maps surprisingly well onto how engineering organizations evolve.
- Three newsletter issues in Q4 drew directly from the reading: one on Christensen's disruption theory applied to DevOps tools, one on historical patterns in technology adoption, and one on mental models from philosophy of science. The reading-to-content pipeline works, but with a 2-3 month delay.

View File

@@ -7,4 +7,30 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Team Annual Review
Design and run the first structured annual review for Matteo, Paco, and Sara.
## Overview
As the Refactoring team grew from a solo operation to a small but functional team, it became clear that informal check-ins were not sufficient for aligning on expectations, giving structured feedback, and planning development. This project designed and executed the first formal annual review process for the three team members: [[person-matteo-cellini]] (sponsorship outreach), [[person-paco-furiani]] (operations and podcast support), and [[person-sara-ricci]] (editing).
The goal was not to create a heavyweight corporate HR process but to establish a lightweight, honest, and useful review cycle that fits a small indie team. Reviews happened in December 2024, covering the full calendar year, and set the stage for [[25q1]] planning. The process was designed to be reusable and will run annually going forward.
## Goals
- Design a review template covering: role scope, key accomplishments, areas for growth, and goals for next year
- Write a self-assessment prompt for each team member to complete before the review meeting
- Conduct 1-hour review conversations with each team member
- Document agreed-upon goals and any compensation adjustments for 2025
- Establish this as a repeatable annual process with a calendar reminder and documented procedure
## Key decisions
- **Conversation-first, not form-first.** The review is structured around a 1-hour conversation, not a lengthy written form. The self-assessment is a short (half-page) prompt to help team members reflect before the meeting. The conversation is where the real feedback happens.
- **Bidirectional feedback.** Each team member was explicitly asked to give feedback on working with [[person-luca-rossi]] — what works, what does not, what they need more of. This was uncomfortable but produced the most actionable insights of the entire process.
- **Compensation adjustments tied to review, not negotiation.** Rather than waiting for team members to ask for raises, proactively included compensation review as part of the process. All three team members received adjustments based on expanded scope and demonstrated value.
## Notes
- [[person-sara-ricci]]'s review was the most impactful. She articulated clearly that the editing workflow needed more lead time — receiving drafts 24 hours before publish was creating unnecessary stress and reducing edit quality. This led to adjusting the [[procedure-weekly-newsletter]] timeline to give her 48 hours minimum.
- [[person-matteo-cellini]] expressed interest in taking on more strategic work beyond outreach execution. This was a growth signal — his Q4 performance on [[24q3-new-sponsor-verticals]] showed he could handle strategic thinking, not just tactical execution. Agreed to expand his role in 2025.
- [[person-paco-furiani]] was the most straightforward review — he is happy with his current role scope and compensated fairly. His main feedback was wanting more visibility into the business roadmap, which is a fair ask. Started sharing quarterly plans with the full team afterward.
- The process took about 6 hours total (prep + 3 conversations + documentation). This is very manageable for a small team. The key learning: do this every year, not just when it feels necessary. Scheduled the 2025 review for December in advance.

View File

@@ -7,4 +7,31 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Black Friday Newsletter Campaign
Run a curated Black Friday campaign with tool recommendations. +1200 subscribers in 3 days.
## Overview
Black Friday represents a unique opportunity for a technical newsletter: readers are actively looking for tool and resource recommendations, and companies are offering significant discounts. This project designed and executed a curated Black Friday campaign — a special edition newsletter with hand-picked tool recommendations for engineering leaders and developers, paired with a subscriber acquisition push through social media and cross-promotions.
The campaign ran from November 25-29, 2024, and generated +1,200 new subscribers in 3 days — the single largest acquisition spike of the year. The key insight was that curation is the value: readers do not want to sift through hundreds of generic deals. They want a trusted voice telling them which 10-15 tools are actually worth buying. This directly supported [[2024-reach-50k-subscribers]] and pushed the subscriber count past the 48K mark.
## Goals
- Curate a list of 15-20 Black Friday deals on developer tools, SaaS products, and learning resources
- Negotiate exclusive or enhanced discount codes with at least 5 companies
- Publish a special-edition newsletter issue on Black Friday week
- Run a social media campaign (Twitter, LinkedIn) driving traffic to the newsletter signup with the deal list as the lead magnet
- Acquire 1,000+ new subscribers during the campaign window
## Key decisions
- **Curated recommendations, not affiliate links.** While affiliate revenue was tempting, prioritized trust over short-term monetization. Every recommendation was a tool that [[person-luca-rossi]] personally uses or has thoroughly evaluated. Included honest caveats alongside recommendations. This authenticity drove shares and word-of-mouth signups.
- **Gated the full list behind email signup.** Shared 5 deals publicly on social media with a CTA to "get the full list of 20 deals" via newsletter signup. This was the primary acquisition mechanism and converted at approximately 35% of landing page visitors.
- **Separate from regular sponsor placements.** Black Friday sponsors paid a premium rate for a dedicated section, clearly labeled as "sponsored picks." This maintained editorial integrity while monetizing the high-attention window. Three sponsors participated at $3,000 each.
## Notes
- The +1,200 subscribers in 3 days was remarkable, but retention was the real test. At the 30-day mark, 78% of Black Friday subscribers were still active (industry benchmark is ~60% for acquisition spikes). This suggests the deal-seekers were genuinely interested in the newsletter's regular content, not just the deals.
- Negotiating exclusive discount codes with tool companies was easier than expected. Most developer tool companies are eager for newsletter placement during Black Friday and will create custom codes quickly. Started these conversations in early November — next year, will start in October.
- [[person-matteo-cellini]] handled sponsor coordination for the campaign, managing the three premium placements. His work on the CRM ([[24q2-sponsor-crm]]) made tracking these deals seamless.
- The social media push was amplified significantly by retweets/reshares from the tools featured in the list. This organic amplification was not planned but accounted for an estimated 30-40% of the total reach. Will be more intentional about asking for shares in future campaigns.
- [[measure-subscribers]] jumped from ~46,800 to ~48,000 during the campaign. Combined with organic growth, this put the year-end total within striking distance of the 50K target set in [[2024-reach-50k-subscribers]].

View File

@@ -7,4 +7,32 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Cycling Year in Review 2024
Review the 2024 cycling season and plan 2025: races, training peaks, and gear.
## Overview
This project reviewed the full 2024 cycling season — training volumes, event results, fitness progression, and gear decisions — and used the analysis to plan the 2025 season. The review covered everything from the spring training plan established in [[24q1-plan-cycling-season]] through the two gran fondos and into the autumn detraining period.
The review was conducted in November-December, using data from Strava, TrainingPeaks, and personal notes. It combined quantitative analysis (volume, intensity distribution, power data) with qualitative reflection (what felt good, what caused fatigue, where motivation dipped). The output was both a retrospective document and a set of concrete recommendations for [[25q1-strength-program]] and the 2025 race calendar.
## Goals
- Compile and analyze full-year training data: total distance, climbing, hours, and TSS
- Review performance at both gran fondos (Varese in May, Appennino in September)
- Assess the effectiveness of the polarized training model adopted in Q1
- Identify 3-5 specific areas for improvement in 2025
- Draft a preliminary 2025 season plan including target events and training philosophy adjustments
## Key decisions
- **Add structured strength training for 2025.** The year review revealed that upper body and core fatigue was a limiter on long climbs. Pure cycling volume is not enough — need complementary strength work. This directly led to [[25q1-strength-program]].
- **Target the Stelvio in 2025.** The two 2024 gran fondos were rewarding but relatively conservative choices. For 2025, the stretch goal is the Stelvio — one of cycling's most iconic climbs. This requires a step up in training specificity and altitude preparation. Supports [[2025-ride-stelvio]].
- **Hire a coach for 2025.** Self-coaching worked reasonably well in 2024 (both events completed within targets), but the Stelvio goal requires more sophisticated periodization and real-time plan adjustments. Will look for a coach in Q1.
## Notes
- Full-year numbers: 8,200 km ridden, 98,000m elevation gain, approximately 320 hours on the bike. This was above target (7,500 km) and sustainable — no overtraining symptoms or significant injuries.
- The polarized model (80% easy / 20% hard) was broadly successful, though the actual distribution ended up closer to 75/25 because "easy" rides often crept into moderate territory. Discipline on easy days is something to improve.
- [[person-paco-furiani]] completed the same two events and his season review is a useful comparison point. His higher-volume approach (10,500 km) yielded better absolute results but also led to a knee issue in October. Reinforces the value of sustainability over pure volume.
- The Campagnolo Bora WTO 45 wheels purchased pre-season were the best equipment decision of the year. Noticeable improvement on climbs and crosswind stability. No regrets on prioritizing wheels over frame upgrade.
- [[measure-cycling-km-per-month]] data shows clear seasonal pattern: low in Jan-Feb (800-900km/month), building through Mar-May (1,000-1,200km), peaking in Jun-Aug (1,200-1,400km), and tapering in Sep-Nov. December was deliberately rest-focused (~400km).
- The retrospective feeds directly into [[topic-cycling-training]] notes and sets the direction for 2025 season planning.

View File

@@ -7,4 +7,31 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Start Laputa App Project
Begin building Laputa — a custom Tauri desktop app for managing the personal knowledge vault.
## Overview
After years of managing a personal knowledge vault in Obsidian and finding it increasingly insufficient for the structured, frontmatter-heavy workflow that had evolved, this project kicked off the development of Laputa — a custom desktop application built specifically for the vault's unique requirements. The app is built with Tauri v2 (Rust backend) and React (TypeScript frontend), designed to read and write the same markdown files with YAML frontmatter that the vault already uses.
The motivation was not to replace Obsidian for general note-taking, but to build a purpose-built tool for the structured data layer — types, relationships, properties, and views that Obsidian handles poorly. Laputa treats the vault as a lightweight database of markdown files, offering a four-panel UI with type-aware navigation, property editing, and relational browsing. This project covers the initial spike: architecture decisions, proof of concept, and first working prototype. It advances [[2025-ship-laputa]] as the longer-term goal.
## Goals
- Define the technical architecture: Tauri v2, React 18, CodeMirror 6, Vite
- Build a proof of concept that reads markdown files from a directory and displays them in a panel UI
- Implement frontmatter parsing in Rust (using serde and gray_matter)
- Create the basic four-panel layout: type sidebar, note list, editor, and property panel
- Validate that the app can handle the full vault (~9,200 markdown files) without performance issues
## Key decisions
- **Tauri v2, not Electron.** Tauri produces much smaller binaries, uses less memory, and leverages native webview rather than shipping a full Chromium instance. For a single-user desktop app, Tauri's trade-offs (no cross-platform webview consistency, newer ecosystem) are acceptable. The Rust backend is also more natural for file I/O heavy workloads.
- **Files as the source of truth, not a database.** Laputa reads and writes markdown files directly. No SQLite, no JSON store, no separate database. This means the vault remains portable, version-controllable with git, and readable in any text editor. The cost is that some queries are slower than they would be with a database, but for ~10K files, filesystem operations are fast enough.
- **CodeMirror 6, not ProseMirror or TipTap.** CodeMirror 6 provides the best foundation for a reveal-on-focus markdown editor — showing rendered markdown by default but revealing raw syntax when the cursor enters a block. This is the editing model that feels most natural for power users.
## Notes
- The initial proof of concept took about 3 weeks of focused evening/weekend work. Getting Tauri v2 set up and communicating between the Rust backend and React frontend required working through several documentation gaps — Tauri v2 was still relatively new and the ecosystem was evolving.
- Performance testing with the full vault (~9,200 files) showed that initial directory scanning takes about 2 seconds, and frontmatter parsing adds another 1.5 seconds. This is acceptable for app startup, though indexing will need optimization for real-time search.
- [[person-david-kim]] (who works on developer tools) provided useful early feedback on the UI concept during a podcast conversation. His perspective on tool-building for personal use versus building products helped frame the project's scope.
- The mock data layer (`src/mock-tauri.ts`) was built early and proved invaluable for browser-based testing. Being able to develop and test the React frontend without the Rust backend running dramatically accelerated UI iteration.
- This project transitions directly into [[25q1-laputa-v1]] for the first real milestone of the app.

View File

@@ -7,4 +7,31 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Build Sponsor Dashboard
Build an Airtable dashboard giving sponsors real-time click and performance data.
## Overview
As the sponsor base grew through 2024, reporting became a bottleneck. After each newsletter issue, sponsors would ask for performance data — click counts, open rates, and placement impressions. This data was being compiled manually from ConvertKit analytics and sent via email, which was time-consuming and error-prone. This project built an Airtable-based dashboard that gives sponsors self-serve access to real-time performance data for their placements.
The dashboard connects to the CRM built in [[24q2-sponsor-crm]] and pulls performance data from ConvertKit's API via a Zapier integration. Each sponsor gets a unique link to a filtered Airtable view showing only their placements, metrics, and invoice history. This project was a significant step toward professionalizing the sponsor experience and supporting [[2024-double-revenue]] through improved retention and upsell conversations.
## Goals
- Build an Airtable dashboard with per-sponsor performance data (clicks, CTR, impressions)
- Set up a Zapier integration to pull click and open data from ConvertKit after each newsletter send
- Create unique, filtered dashboard links for each sponsor (no login required, link-based access)
- Include historical performance trends (week-over-week, month-over-month)
- Reduce sponsor reporting time from ~2 hours/week to near-zero
## Key decisions
- **Airtable interface, not a custom web app.** Considered building a custom dashboard with Next.js and a database, but the engineering effort was not justified for ~20 active sponsors. Airtable's Interface Designer provides 80% of the functionality at 5% of the development cost. Can always migrate to a custom solution if the sponsor base grows significantly.
- **Self-serve access via unique links.** Rather than requiring sponsors to log into a portal, each sponsor gets a unique Airtable shared view URL. This is simpler for both parties — no password management, no onboarding friction. The trade-off is that anyone with the link can see the data, but the risk is low for non-sensitive marketing metrics.
- **Automated data ingestion, manual quality checks.** The Zapier integration pulls data automatically after each send, but [[person-matteo-cellini]] reviews the numbers weekly before they appear on sponsor dashboards. This catches any data anomalies (e.g., bot clicks, tracking issues) before sponsors see them.
## Notes
- The dashboard launch received very positive feedback from sponsors. Several mentioned it was the most transparent reporting they had seen from any newsletter sponsorship. This transparency became a competitive advantage in renewal conversations.
- The Zapier integration was the most fragile part of the system. ConvertKit's API rate limits and occasional data delays caused the integration to fail about once a month. Building retry logic and error notifications helped, but this remains a maintenance burden.
- Sponsor self-serve reporting reduced [[person-matteo-cellini]]'s weekly reporting workload from approximately 2 hours to about 15 minutes (just the quality review). This freed significant time for outreach and relationship management.
- The dashboard data also proved valuable for internal analysis. Being able to see click-through rates across all sponsors and placements revealed which types of copy and positioning perform best, informing both editorial decisions and sponsor pitch strategy.
- One unexpected benefit: sponsors who could see their own performance data were more likely to experiment with different ad copy and CTAs. This improved their results and, by extension, their satisfaction and renewal rates. The dashboard supported [[measure-sponsorship-mrr]] growth indirectly through improved retention.

View File

@@ -7,4 +7,31 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Laputa App V1
Ship the first working version of Laputa with 4-panel layout, inspector, and quick open.
## Overview
Following the proof of concept built in [[24q4-laputa-start]], this project delivered the first working version of Laputa with a complete four-panel layout, a property inspector, and a quick-open command palette. V1 represents the transition from "can this work?" to "I can actually use this daily" — the app became the primary interface for browsing and editing the vault, replacing Obsidian for structured data workflows.
The four-panel layout includes a type sidebar (showing all note types like Project, Person, Quarter), a filterable note list, the main editor panel with CodeMirror 6, and a property inspector for viewing and editing YAML frontmatter fields. Quick Open (Cmd+K) enables instant navigation across all ~9,200 vault files. This milestone is a key step toward [[2025-ship-laputa]] and was completed during [[25q1]].
## Goals
- Implement the four-panel layout with resizable panels and responsive behavior
- Build the property inspector panel for viewing and editing frontmatter properties
- Implement Quick Open (Cmd+K) with fuzzy search across all vault files
- Add type-aware sidebar navigation with collapsible sections and file counts
- Achieve sub-200ms navigation between notes (read file, parse frontmatter, render editor)
## Key decisions
- **CodeMirror 6 with reveal-on-focus editing.** The editor shows rendered markdown by default but reveals raw syntax when the cursor enters a block. This hybrid approach was chosen over a pure WYSIWYG editor (TipTap/ProseMirror) because power users need direct access to markdown syntax, especially for frontmatter and wiki-links. The reveal-on-focus model provides the best of both worlds.
- **Frontmatter parsing in Rust, rendering in React.** The Rust backend parses YAML frontmatter and provides structured data to the frontend via Tauri commands. This keeps the parsing fast and consistent, while React handles all presentation logic. The alternative — parsing in JavaScript — would be slower for bulk operations and harder to keep consistent with the Rust-side file operations.
- **Mock layer for browser development.** Built `src/mock-tauri.ts` to return realistic test data when running in a browser without the Tauri backend. This allows UI development and testing in Chrome without starting the full Rust backend, which dramatically accelerated the development loop.
## Notes
- The biggest engineering challenge was making the editor performant with large files. Some vault files are 5,000+ lines, and CodeMirror 6's default configuration struggled with these. Enabling viewport-based rendering and lazy decoration computation solved the performance issues.
- Quick Open search across 9,200 files needed careful optimization. The initial naive approach (filter on every keystroke) was too slow. Implemented a pre-built search index that loads at startup and supports fuzzy matching with sub-50ms response times.
- [[person-david-kim]] tested an early build and identified several UX issues with the property inspector — particularly around editing array-type frontmatter fields (like tags and aliases). His feedback led to a redesigned array editor with inline add/remove controls.
- The mock data layer proved its value immediately. It allowed running Playwright E2E tests and visual verification in Chrome without any Rust toolchain setup. This made CI testing feasible and significantly reduced the feedback loop for UI changes.
- V1 was usable but rough around the edges. The editor lacked many creature comforts (undo/redo state persistence, find-and-replace, syntax highlighting for YAML). These were deferred to [[25q2-laputa-v2]] to keep V1 scope manageable.

View File

@@ -7,4 +7,31 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Newsletter SEO Sprint
30-day SEO sprint: 5 high-traffic articles + internal linking overhaul.
## Overview
Building on the pillar article strategy from [[24q2-10-pillar-articles]], this project was a concentrated 30-day sprint to boost organic search traffic and subscriber acquisition. The sprint had two components: writing 5 new high-traffic articles targeting keywords identified in an updated Ahrefs analysis, and overhauling the internal linking structure across all existing content to improve site-wide SEO authority.
The sprint ran through February 2025 and was timed to take advantage of the post-holiday traffic recovery in the engineering content space. By this point, the blog had about 40 published articles, but many lacked internal links and had suboptimal meta descriptions. The combination of new content and structural improvements was designed to create a compounding traffic effect that would support [[2025-reach-85k-subscribers]] through organic growth.
## Goals
- Write and publish 5 new SEO-optimized articles (2,500-4,000 words each)
- Audit and update internal links across all existing blog posts (target: every article links to at least 3 other articles)
- Update meta descriptions and title tags for the 20 highest-traffic existing articles
- Improve site-wide Core Web Vitals scores (target: all pages in "Good" range)
- Achieve a 30% increase in organic search traffic within 90 days of sprint completion
## Key decisions
- **Concentrated sprint, not ongoing drip.** Rather than publishing one SEO article per month, concentrated the effort into a 30-day window. This allowed full focus on SEO without the context-switching cost of alternating between newsletter writing and SEO writing. The trade-off was that the regular newsletter required extra preparation in advance to cover the sprint period.
- **Internal linking overhaul as a force multiplier.** The internal linking audit was actually higher-impact than the new articles. Many existing articles had zero internal links, meaning Google could not discover or weight them properly. Adding contextual links between related articles created a proper content topology that improved rankings site-wide.
- **Content refresh over new content for some keywords.** For 3 keywords where existing articles were already ranking on page 2-3, chose to refresh and expand those articles rather than write new ones. Refreshing existing URLs preserves accumulated link equity and is faster than starting from scratch.
## Notes
- The 30% organic traffic increase was achieved in about 75 days (ahead of the 90-day target). The internal linking overhaul was the primary driver — several existing articles jumped from page 2 to page 1 within weeks of gaining internal links.
- [[person-sara-ricci]] edited all 5 new articles and the refreshed content. The editing workload during the sprint was significant, and she flagged that future sprints should give her more lead time. Noted for next time.
- The article on "How to Run Effective Engineering All-Hands" became the strongest performer, reaching #3 on Google for its target keyword and driving ~1,500 monthly organic visits. This single article generated an estimated 200 new subscribers per month through its email capture CTA.
- Core Web Vitals optimization required some technical work — lazy loading images, reducing JavaScript bundle size, and optimizing font loading. These changes improved site speed across the board and had a modest positive effect on rankings.
- This sprint validated the content pillar strategy and demonstrated that concentrated SEO investment compounds over time. The articles written in [[24q2-10-pillar-articles]] continued to grow in traffic alongside the new content, suggesting that the internal linking network creates a rising-tide effect. Feeds into [[topic-newsletter-growth]] and [[topic-content-strategy]].

View File

@@ -7,4 +7,31 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Increase Sponsorship Rates Q2
Raise ad rates by 25% for Q2 based on audience growth and click-through data.
## Overview
With the subscriber base approaching 60K and click-through performance data showing consistent improvement through 2024, the sponsorship rates set during [[24q1-launch-sponsorship-packages]] were underpriced relative to the audience value delivered. This project prepared and executed a 25% rate increase across all sponsorship tiers, effective for Q2 2025 bookings.
The rate increase required careful preparation: assembling performance data, updating the media kit, communicating the changes to existing sponsors, and adjusting outreach messaging for new prospects. The goal was to increase [[measure-sponsorship-mrr]] without losing existing sponsors. [[person-matteo-cellini]] led the communication with current sponsors while [[person-luca-rossi]] handled the strategic positioning and media kit updates.
## Goals
- Analyze per-sponsor performance data to build the justification case (CTR, impressions, conversions)
- Update the media kit with current audience size, demographics, and performance benchmarks
- Communicate the rate increase to all existing sponsors with 60 days advance notice
- Update pricing across all three tiers: Logo ($625), Spotlight ($1,500), Deep Dive ($3,125)
- Retain at least 80% of existing sponsors through the transition
## Key decisions
- **25% increase, not 15% or 30%.** Benchmarked against similar-sized engineering newsletters and found the current rates were 20-35% below market. A 25% increase brings pricing to market rate while leaving room for another adjustment in 12-18 months as the audience continues to grow.
- **Grandfathered pricing for 90 days.** Offered existing sponsors who renewed before April 1 the option to lock in the old rate for one additional quarter. This rewarded loyalty and created urgency for renewals, which improved cash flow predictability.
- **Performance data as the lead message.** Rather than leading with "rates are going up," led with "here is how your sponsorship performed." Sharing concrete performance data first made the rate increase feel like a natural consequence of value delivered, not an arbitrary price hike.
## Notes
- Sponsor retention through the increase was 88% — above the 80% target. The two sponsors who did not renew cited budget constraints (not value concerns), which is a healthy signal. They indicated interest in returning at a future date.
- [[person-matteo-cellini]] handled the sponsor communication calls and reported that the response was overwhelmingly positive. Several sponsors said the previous rates felt "too cheap" and appreciated the transparency about pricing methodology.
- The rate increase translated to approximately $3,200/month in additional MRR, which was a significant contribution to [[2025-reach-22k-mrr]]. This was the highest-leverage revenue action of Q1 — no new sponsors needed, just better pricing for existing value.
- The updated media kit now includes a "Performance Highlights" section with anonymized case studies showing sponsor CTR and conversion data. This has become one of the most effective tools in the outreach process.
- Key lesson: rate increases should be proactive and regular (annually), not reactive and rare. Waiting too long to adjust pricing means leaving significant revenue on the table. The discomfort of raising prices is always greater in anticipation than in reality.

View File

@@ -7,4 +7,32 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Newsletter Referral Program
Launch a referral program rewarding subscribers who bring in new readers.
## Overview
Word-of-mouth had always been the newsletter's strongest organic growth channel, but it was entirely passive — readers shared when they felt like it, with no structured incentive. This project launched a formal referral program that rewards subscribers who bring in new readers, turning the most engaged audience members into active growth ambassadors. The program contributes to [[2025-reach-85k-subscribers]] and [[measure-subscribers]] growth.
The program was built using SparkLoop (a referral platform designed for newsletters) and integrated with the existing ConvertKit setup. Rewards are tiered: 3 referrals earns a digital resource pack, 10 referrals earns a private Q&A session, and 25 referrals earns a 1-year premium membership. The program launched in February 2025 and immediately became the second-largest subscriber acquisition channel after organic search.
## Goals
- Design a tiered reward structure that motivates sharing without creating perverse incentives (spam, fake signups)
- Set up SparkLoop integration with ConvertKit for automated tracking and reward fulfillment
- Create shareable assets: personalized referral links, social cards, and email forward templates
- Acquire 2,000+ new subscribers through the referral program in Q1
- Achieve a referral conversion rate of at least 20% (referred visitors who subscribe)
## Key decisions
- **SparkLoop, not a custom solution.** Evaluated building a custom referral system with unique links and a tracking database, but SparkLoop handles fraud detection, analytics, and reward automation out of the box. The $99/month cost is trivially justified by the subscriber value it generates.
- **Digital rewards, not physical.** Physical rewards (stickers, merchandise) create fulfillment complexity and shipping costs. Digital rewards (resource packs, access, sessions) scale infinitely and are more aligned with what the audience values. The private Q&A session at 10 referrals proved to be the most motivating tier.
- **Anti-fraud measures from day one.** Required referred subscribers to confirm via double opt-in and excluded signups from disposable email domains. This reduced fraudulent referrals to less than 2% of total, which is well below SparkLoop's industry average of 5-8%.
## Notes
- The referral program generated approximately 2,400 new subscribers in the first 8 weeks — above the 2,000 target. About 15% of the existing subscriber base activated their referral link, which is strong engagement for a referral program.
- The conversion rate on referred visitors was 28%, significantly above the 20% target. This makes sense: referred visitors arrive with a personal recommendation from someone they trust, which dramatically reduces the "should I subscribe?" friction.
- The top referrer brought in 47 new subscribers in the first month. Sent a personal thank-you email and offered an hour-long call. This kind of super-referrer engagement is worth cultivating.
- [[person-elena-rossi]] suggested adding a leaderboard showing top referrers (anonymized). Implemented this as a monthly "Referral Champions" section in the newsletter footer. It created a subtle competitive dynamic that boosted engagement.
- One unexpected finding: referred subscribers have higher 30-day retention (85%) compared to subscribers from other channels (~72% average). This suggests that referral-acquired subscribers are genuinely interested in the content, not just casually signing up.
- The program runs continuously and feeds into [[topic-newsletter-growth]]. The per-subscriber acquisition cost through referrals is approximately $0.40 (cost of SparkLoop + digital rewards amortized), compared to $2-3 for paid acquisition channels.

View File

@@ -7,4 +7,32 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# New Strength Program
Start a 12-week strength program to complement cycling and prevent injury.
## Overview
The [[24q4-cycling-year-review]] identified a clear gap: upper body and core strength were limiters on long climbs, and pure cycling volume was not addressing them. This project introduced a structured 12-week strength training program to complement the cycling training plan, with the primary goal of improving climbing performance and reducing injury risk for the 2025 season — specifically for [[2025-ride-stelvio]].
The program followed a progressive overload model with three sessions per week (Monday, Wednesday, Friday mornings), focusing on core stability, hip strength, and upper body endurance. The sessions were designed to be cycling-compatible — meaning they build functional strength without adding excessive muscle mass that would penalize climbing performance. The program ran from January through March 2025.
## Goals
- Complete a 12-week strength program with at least 85% session adherence
- Focus areas: core stability (planks, dead bugs, pallof press), hip strength (single-leg squats, hip thrusts), upper body endurance (rows, push-ups, shoulder press)
- Sessions capped at 45 minutes to fit before the work day
- Improve core endurance test (plank hold) from 2:00 to 3:00+ minutes
- No negative impact on cycling performance metrics (FTP, weekly TSS)
## Key decisions
- **Gym-based, not home-based.** Considered a bodyweight-only home program for convenience, but decided that gym access (barbells, cable machines) allows for more precise progressive overload. Signed up at a gym 10 minutes from home with early morning hours (opens 6:30 AM).
- **Three sessions per week, not two or four.** Two sessions would not provide sufficient stimulus for meaningful adaptation. Four would risk interfering with cycling recovery, especially during build-phase weeks. Three sessions, alternating between upper/lower focus, hit the sweet spot.
- **No heavy squats or deadlifts.** Traditional powerlifting movements build too much leg mass for a cyclist targeting climbing performance. Instead, focused on single-leg movements and moderate-weight, higher-rep schemes that build strength endurance rather than maximal strength.
## Notes
- Session adherence was 89% (32 of 36 planned sessions). The four missed sessions were all during a particularly heavy newsletter week in February. Built in makeup sessions the following week when possible.
- The plank hold test improved from 2:00 to 3:25 — well above the 3:00 target. More importantly, subjective feedback from early-season rides confirmed that upper body fatigue during long climbs was significantly reduced.
- [[person-paco-furiani]] joined for several sessions and followed a modified version of the same program. Training together added accountability and made the early morning sessions more tolerable.
- The biggest adaptation was not physical but scheduling. Finding 45 minutes three mornings per week while also cycling 8-10 hours per week and running a content business required ruthless calendar management. The key was treating strength sessions as non-negotiable appointments.
- No measurable negative impact on cycling FTP (remained at ~275W throughout the program). This confirmed that the moderate-weight, endurance-focused approach was compatible with cycling performance.
- The program transitions into a maintenance phase (2 sessions/week) during the peak cycling season. Detailed in [[topic-cycling-training]] notes.

View File

@@ -7,4 +7,32 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Cycling Trip: Dolomites
5-day cycling trip with Alessandro. Stelvio + Mortirolo. 650km total.
## Overview
This was the centerpiece event of the 2025 cycling season — a 5-day cycling trip through the Dolomites with [[person-paco-furiani]], tackling two of cycling's most legendary climbs: the Stelvio and the Mortirolo. The trip totaled approximately 650km with over 12,000m of elevation gain, and it represented the culmination of the training work from [[25q1-strength-program]] and the 2025 season plan outlined in [[24q4-cycling-year-review]].
The trip was planned as both a personal challenge and a goal completion event for [[2025-ride-stelvio]]. Route planning, accommodation booking, and logistics were handled in April-May, with the ride itself taking place in the second half of June when the high-altitude passes are reliably open and the weather is most favorable. Each day featured one major climb plus connecting roads through the valleys.
## Goals
- Complete the Stelvio from Bormio (the hardest side: 21.5km, 1,533m elevation gain, avg 7.1% gradient)
- Complete the Mortirolo from Mazzo (12.4km, 1,300m elevation gain, avg 10.5% gradient)
- Ride 5 consecutive days with an average of 130km and 2,400m elevation per day
- Maintain a sustainable pace throughout — no bonking, no mechanical failures, no injuries
- Document the trip with photos and notes for the vault and a potential newsletter piece
## Key decisions
- **Stelvio from Bormio, not Prato.** The Bormio side is considered the hardest but also the most dramatic — 48 hairpin turns through alpine scenery. The Prato side is more famous (classic from the Giro d'Italia) but less challenging. Chose difficulty over fame.
- **Self-supported, not organized tour.** Rather than joining a commercial cycling tour, planned the trip independently. This allowed full control over pacing, rest stops, and daily distance. Carried minimal gear (jersey pockets + a small saddle bag) and relied on valley-town hotels rather than mountain huts.
- **Rest day strategy: active recovery on day 3.** Rather than a full rest day mid-trip, did a short flat recovery ride (50km, no significant climbing) on day 3. This kept the legs moving and prevented the stiffness that comes from a complete rest day mid-tour.
## Notes
- The Stelvio was everything expected and more. Completed the climb in 2:08, which was within the target window (sub 2:15). The final 5km above the tree line, with the glacier visible ahead, were genuinely transcendent. The strength training from [[25q1-strength-program]] made a noticeable difference — upper body and core held up far better than they would have a year ago.
- The Mortirolo was harder than the Stelvio in terms of pure suffering. The sustained 10%+ gradients for 12km with minimal respite are relentless. Finished but it required every ounce of mental discipline. [[person-paco-furiani]] later said it was the hardest thing he has done on a bike.
- Nutrition strategy (eating every 25 minutes, starting from the first pedal stroke) worked perfectly. No bonking episodes across all 5 days. This was a direct application of the lesson from [[24q2-spring-gran-fondo]].
- Day 4 featured unexpected rain on the descent from Passo Gavia, which made the wet hairpins genuinely nerve-wracking. Descended very conservatively (brake check every turn) and lost about 40 minutes compared to the planned schedule. Safety over speed — always.
- The trip generated a newsletter issue ("What Climbing the Stelvio Taught Me About Endurance") that became one of the most engaged pieces of the year. The personal story format resonated strongly with readers, even those who do not cycle.
- [[measure-cycling-km-per-month]] for June peaked at 1,450km — the highest monthly total ever. The Dolomites trip alone contributed 650km of that.

View File

@@ -7,4 +7,32 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Laputa App V2
V2 with BlockNote editor, wiki-links autocomplete, and redesigned theme system.
## Overview
V2 of Laputa was a major iteration that addressed the rough edges from [[25q1-laputa-v1]] and introduced three headline features: a BlockNote-based rich text editor replacing the raw CodeMirror setup, wiki-link autocomplete for seamless navigation between notes, and a completely redesigned theme system with CSS custom properties. These changes transformed the app from a functional prototype into something that feels genuinely pleasant to use daily.
The BlockNote integration was the most significant architectural change — it provides a block-based editing experience similar to Notion while preserving the underlying markdown format. Wiki-link autocomplete (triggered by typing `[[`) searches across all vault files and inserts links with proper display names. The theme system uses design tokens defined as CSS custom properties, making it straightforward to adjust the visual style without touching component code. This milestone continues the path toward [[2025-ship-laputa]].
## Goals
- Replace the basic CodeMirror editor with BlockNote for a block-based editing experience
- Implement wiki-link autocomplete with fuzzy search across all vault files
- Redesign the theme system using CSS custom properties and a centralized token file
- Improve the property inspector with inline editing for all frontmatter field types
- Fix the top 10 UX issues reported during V1 daily use
## Key decisions
- **BlockNote over plain CodeMirror.** While CodeMirror 6 is excellent for code editing, the reveal-on-focus model proved too jarring for prose-heavy content. BlockNote provides a smoother editing experience where formatting is always visible and blocks can be manipulated as units. The trade-off is less control over the raw markdown, but for the primary use case (structured notes with frontmatter), this is acceptable.
- **CSS custom properties, not a CSS-in-JS theme.** Evaluated styled-components and Tailwind CSS theme approaches but chose plain CSS custom properties. They are natively supported, have zero runtime cost, can be inspected in browser DevTools, and align with the project philosophy of preferring simple, standard approaches over framework-dependent abstractions.
- **Wiki-link search index prebuilt at startup.** The autocomplete needs to search across all ~9,200 files in sub-50ms. Rather than querying the filesystem on each keystroke, the Rust backend builds a search index at startup (including file names, aliases, and titles) and the frontend queries this index. Incremental updates happen when files change.
## Notes
- The BlockNote integration took longer than expected — about 3 weeks of focused work. The main challenge was ensuring that markdown round-tripping (markdown to BlockNote blocks to markdown) preserved formatting perfectly. Several edge cases with nested lists and code blocks required custom serializers.
- Wiki-link autocomplete was the most impactful feature from a daily use perspective. Being able to type `[[` and instantly find any note in the vault by name, alias, or title makes the linking experience far superior to Obsidian's implementation (which does not search aliases by default).
- [[person-david-kim]] continued to provide UX feedback, particularly around keyboard navigation patterns. His suggestion to add Vim-style `j/k` navigation in the note list was implemented and feels natural for power users.
- The theme redesign consolidated about 200 scattered color values into 45 semantic design tokens. This made it trivial to create a dark mode variant (completed in a single afternoon) and establishes a foundation for future theme customization.
- Performance remained solid despite the architectural changes. Note switching is still sub-200ms, and the BlockNote editor handles files up to 5,000 lines without noticeable lag. Memory usage increased by about 15% compared to V1 due to BlockNote's richer DOM, which is acceptable.
- The V2 release was the point where Laputa became genuinely preferable to Obsidian for daily vault management. Feeds into [[25q4-laputa-v3]] for the next major milestone.

View File

@@ -7,4 +7,32 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Podcast Season 3
10 episodes on building in public, founder journeys, and product-led growth.
## Overview
Season 3 expanded the Refactoring podcast to 10 episodes with a thematic focus on building in public, founder journeys, and product-led growth. After two seasons focused on engineering leadership and org design, this season shifted toward the entrepreneurial side of the audience — developers who are building products, running side projects, or considering the leap to full-time founder. The theme resonated strongly, producing the highest average downloads per episode of any season so far.
Production was now a well-oiled operation: [[person-sara-ricci]] handled post-production, [[person-paco-furiani]] managed guest scheduling and logistics, and [[person-luca-rossi]] focused purely on guest selection, interview preparation, and hosting. The workflows from [[procedure-podcast-recording]] and [[procedure-podcast-editing]] continued to function with only minor updates.
## Goals
- Record and publish 10 episodes on building in public, founder journeys, and product-led growth
- Secure at least 3 guests who are active indie hackers or solopreneurs with public revenue data
- Grow average episode downloads to 3,000 (up from Season 2's ~2,100)
- Introduce YouTube video for 3 select episodes as an experiment
- Generate at least 5 newsletter issues from podcast conversations (repurposed content)
## Key decisions
- **10 episodes, up from 8.** The seasonal model allows for flexibility in episode count. 10 episodes fit cleanly into the Q2 window (April-June) with a weekly release schedule. The extra two episodes justified by the stronger guest pipeline and revenue from podcast sponsorships.
- **Selective video for 3 episodes.** Rather than doing video for all episodes (too much production overhead) or none (missed YouTube opportunity), selected 3 episodes with the most visually engaging guests for video. This tests the YouTube channel without committing to full video production.
- **Founder-focused theme, not pure engineering.** The shift toward entrepreneurial topics was a deliberate audience expansion move. Refactoring's readership increasingly includes developers who are also founders or aspire to be. This theme serves them while maintaining technical credibility through the "building" angle.
## Notes
- Average downloads per episode reached 3,400, significantly exceeding the 3,000 target. The standout episode was a conversation with an indie hacker who publicly shared their journey from $0 to $25K MRR, which was shared widely on Twitter/X and LinkedIn.
- The 3 video episodes performed well on YouTube (~4,000-6,000 views each), which is a promising signal for a channel with no prior content. The production cost was manageable because Riverside.fm captures both audio and video in the same recording session.
- [[person-david-kim]] appeared as a guest for an episode on developer tool startups. His insights on distribution in the developer tools market were among the most practical advice shared on the show.
- Content repurposing worked exceptionally well this season. 6 newsletter issues drew directly from podcast conversations (exceeding the 5-issue target), and the cross-promotion between newsletter and podcast continued to be the primary growth engine for [[measure-podcast-downloads]].
- Podcast sponsorship revenue reached $2,500/month during the season, representing meaningful incremental revenue on top of newsletter sponsorships. The combined sponsorship revenue contributes significantly to [[2025-reach-22k-mrr]].
- Season 3 was the first season where the podcast felt like it was pulling its own weight as a growth channel, not just a newsletter supplement. This has implications for resource allocation in [[25q3-podcast-season-4]].

View File

@@ -7,4 +7,32 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Reach 70k Subscribers
Growth sprint to 70k: referral push + partnership with 3 complementary newsletters.
## Overview
This project was a focused growth sprint to push [[measure-subscribers]] from approximately 60K to 70K during [[25q2]]. The strategy combined two approaches: amplifying the referral program launched in [[25q1-referral-program]] with targeted campaigns, and establishing cross-promotion partnerships with 3 complementary newsletters in adjacent spaces (startup operations, product management, and design leadership).
The 70K milestone was significant both psychologically (a round number that signals scale) and commercially (larger audience commands higher sponsorship rates and opens doors to enterprise-tier sponsors). The sprint ran from April through June and involved weekly tracking against a linear growth trajectory to catch underperformance early.
## Goals
- Grow from ~60K to 70K subscribers by end of June 2025
- Drive 4,000+ subscribers through the referral program (with targeted campaigns and incentive boosts)
- Establish 3 newsletter cross-promotion partnerships with reciprocal recommendation swaps
- Maintain subscriber quality: 30-day retention rate above 75% for new subscribers
- Achieve the milestone while keeping cost-per-acquisition below $1.00
## Key decisions
- **Cross-promotion over paid acquisition.** Considered investing in paid newsletter ads (Sparkloop's partner network, Twitter ads), but the economics favored cross-promotion. A reciprocal recommendation swap with a complementary newsletter costs nothing and generates high-quality subscribers who are already newsletter readers. Paid acquisition was kept as a backup if organic channels underperformed.
- **Three partners, carefully selected.** Rather than doing many low-quality cross-promotions, invested time in selecting three newsletters where the audience overlap is genuine but not complete. The partners were a startup operations newsletter (~40K subscribers), a product management newsletter (~55K subscribers), and a design leadership newsletter (~30K subscribers). Each introduces Refactoring to a slightly different but adjacent audience.
- **Weekly tracking cadence.** Set up a weekly check against a linear growth trajectory (~2,500 new subscribers/month needed). This allowed early detection of underperformance and mid-course corrections. In week 3, growth was tracking below target, which led to an additional referral incentive push that course-corrected by week 5.
## Notes
- Final subscriber count at end of June: 71,200 — slightly above the 70K target. The growth distribution was approximately: cross-promotions (3,800), referral program (3,500), organic search (2,200), social media (800), other (900).
- Cross-promotion partnerships were the highest-quality growth channel. Subscribers from cross-promotions had a 30-day retention rate of 82%, the highest of any acquisition channel. This makes sense — they were already engaged newsletter readers, just not yet aware of Refactoring.
- The referral program saw a significant boost from a "Spring Referral Challenge" campaign run in May, where the rewards were temporarily enhanced (extra rewards at the 5-referral tier). This generated a spike of ~1,200 new subscribers in a single week.
- [[person-elena-rossi]] helped design the cross-promotion creative (email copy and graphics) for the partner newsletters. Her marketing background was valuable for crafting the recommendation copy that appeared in partner newsletters.
- Cost-per-acquisition across all channels was $0.62, well below the $1.00 target. The primary costs were SparkLoop subscription, referral rewards, and the time spent on partnership management.
- The 70K milestone was used in the updated media kit and referenced in sponsorship conversations, directly supporting the rate increases and new sponsor acquisition feeding into [[2025-reach-22k-mrr]].

View File

@@ -7,4 +7,31 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Team Retreat Milan
First in-person team retreat: 2 days of strategy, workshops, and dinner.
## Overview
After more than a year of working together remotely, the Refactoring team gathered for its first in-person retreat in Milan. The retreat brought together [[person-luca-rossi]], [[person-matteo-cellini]], [[person-paco-furiani]], and [[person-sara-ricci]] for two days of strategy sessions, workshops, and team bonding. The purpose was to align on the business direction for the second half of 2025, address operational friction points, and build the personal relationships that make remote collaboration smoother.
The retreat was planned for early May, timed to fall between Season 3 podcast production and the summer growth push. The agenda was deliberately balanced between structured work sessions (morning) and unstructured social time (afternoon/evening). Milan was chosen for its central location relative to all team members.
## Goals
- Conduct a half-day business strategy session covering H2 2025 priorities and goals
- Run a workflow retrospective: identify and resolve the top 3 operational friction points
- Host a creative workshop on content format experimentation for H2
- Provide space for unstructured team bonding (dinner, activities)
- Document decisions and action items for follow-up within 1 week
## Key decisions
- **Two days, not three.** Considered a 3-day retreat but decided that two full days (plus a team dinner the evening before) provided enough time for meaningful work without pulling everyone away from their schedules for too long. Especially for a small team where everyone wears multiple hats, minimizing away-from-work time matters.
- **Strategy session first, social second.** Ran the strategy and retrospective sessions on the first day (when energy and focus are highest) and the creative workshop + social activities on the second day. This ensured the most important decisions got the best thinking.
- **External facilitator for the retrospective.** Rather than running the retrospective internally, brought in [[person-giulia-conti]] (who has experience facilitating team sessions) to moderate. Having an external voice made it easier for team members to surface honest feedback without the founder-employee dynamic filtering the conversation.
## Notes
- The retrospective produced the most actionable outcomes. The top 3 friction points identified were: (1) newsletter draft handoff timing (Sara needs more lead time), (2) sponsor pipeline visibility (Matteo wants to see content calendar earlier for pitch alignment), and (3) podcast scheduling conflicts (Paco needs more advance notice for guest confirmations). All three had clear action items assigned.
- The strategy session confirmed H2 priorities: community launch ([[25q3-community-launch]]), continued Laputa development ([[25q4-laputa-v3]]), and the push toward [[2025-reach-85k-subscribers]]. There was a genuine debate about whether to invest in a premium podcast (higher production value, video-first) versus the community. Decided on community as the higher-leverage bet.
- The creative workshop generated several content format ideas for H2, including a "Refactoring Case Studies" series (deep dives into real company engineering decisions) and a "Founder Metrics" segment sharing real revenue/growth numbers. Both were added to the content roadmap.
- Team dinner was at a classic Milanese trattoria near the Navigli. The informal conversation over dinner revealed a lot about individual motivations and career aspirations that would never surface in a video call. [[person-matteo-cellini]] mentioned wanting to eventually run his own content business, which was valuable context for thinking about his long-term role.
- Total cost: approximately 2,800 EUR (hotel, meals, workspace rental, facilitator). Very reasonable for the alignment value produced. Planning to make this a biannual event (spring and autumn).

View File

@@ -7,4 +7,32 @@ Status: Open
Owner: "[[person-luca-rossi]]"
---
# Launch Refactoring Community
Private Discord for premium subscribers. Still in soft launch.
## Overview
This project is building a private Discord community for Refactoring's most engaged readers — a space where engineering leaders, indie hackers, and technical founders can connect, share challenges, and learn from each other beyond the one-way format of the newsletter and podcast. The community concept was validated during the [[25q2-team-retreat]] strategy session and represents the most significant new product surface since the podcast launch.
The approach is a soft launch with a small, curated initial cohort rather than opening the doors to all subscribers at once. The [[25q3-discord-community-soft]] experiment is testing engagement patterns, channel structure, and moderation needs with approximately 150 founding members before a broader rollout. The community is free for now, with potential for a paid tier once the value proposition is validated. This is a fundamentally different approach from the failed [[24q3-premium-tier]] — the focus is on community value, not content gating.
## Goals
- Set up the Discord server with initial channel structure (introductions, weekly discussions, resource sharing, career advice, project showcases)
- Recruit 150 founding members from the most engaged newsletter subscribers (based on open rate, click-through, and referral data)
- Establish community guidelines, moderation policies, and a code of conduct
- Host 2 live events during the soft launch period (AMA sessions with podcast guests)
- Achieve a weekly active member rate of at least 40% during the soft launch
## Key decisions
- **Discord, not Circle or Slack.** Evaluated all three platforms. Discord offers the best combination of real-time and async communication, has robust moderation tools, and most of the target audience already has accounts. Circle has a cleaner UX but lacks real-time chat. Slack is too work-associated — people do not want another Slack workspace.
- **Soft launch with curated cohort, not open launch.** The lesson from [[24q3-premium-tier]] was that launching to everyone at once creates a spike-and-fade pattern. A soft launch with hand-selected engaged members builds genuine activity and social proof before scaling. The founding members become community champions.
- **Free entry, no paywall yet.** The community needs to prove its value before asking members to pay. Charging too early kills participation momentum. Will evaluate a paid tier once weekly active member rate stabilizes above 40% and there is clear demand for premium features (private channels, exclusive events).
## Notes
- The soft launch began in late July with 150 invitations sent to subscribers identified through engagement scoring. Acceptance rate was 72% (108 active members), which is strong for a community invitation.
- Early engagement is promising but uneven. The "weekly discussion" channel (a prompted discussion thread posted every Monday) generates the most activity. Organic conversation in open channels is still sparse — this is the typical early-community challenge.
- The two AMA sessions (with guests from [[25q2-podcast-season-3]]) were well-attended (~60 members each) and generated follow-up discussions that lasted several days. Live events appear to be the strongest engagement driver.
- [[person-paco-furiani]] is handling day-to-day community moderation. His operational experience and even temperament make him well-suited for this role. The time commitment is currently about 3 hours/week.
- The biggest risk is that the community becomes another content channel (one-to-many) rather than a genuine peer space (many-to-many). Actively encouraging member-initiated discussions and resisting the urge to "fill the silence" with content is important.
- This project feeds into the broader question of whether the community becomes a revenue stream or remains a free engagement tool. Will evaluate after the soft launch period ends in [[25q4]].

View File

@@ -7,4 +7,32 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Write Newsletter Growth E-book
15,000-word e-book on newsletter growth for technical founders. Free lead magnet.
## Overview
This project produced a 15,000-word e-book titled "The Newsletter Growth Playbook for Technical Founders" — a comprehensive guide distilling the Refactoring growth story, strategies, and lessons into a free downloadable resource. The e-book serves as a high-value lead magnet for subscriber acquisition and establishes authority in the growing "technical content creator" space.
The e-book drew heavily from existing content — the Codemotion talk from [[24q3-codemotion-talk]], pillar articles from [[24q2-10-pillar-articles]], and newsletter issues that covered growth topics throughout 2024. Rather than writing everything from scratch, the project assembled, updated, and expanded existing material into a cohesive narrative. [[person-sara-ricci]] edited the full manuscript over two rounds, and [[person-giulia-conti]] designed the cover and interior layout.
## Goals
- Write a 15,000-word e-book covering newsletter strategy, growth tactics, and monetization for technical audiences
- Structure in 8 chapters with actionable takeaways and real data from the Refactoring journey
- Design a professional PDF layout with custom cover art and clean typography
- Set up a landing page with email capture for the download (new subscribers get the e-book as a welcome gift)
- Generate 3,000+ new subscribers through the e-book in the first 3 months
## Key decisions
- **Free, not paid.** The primary goal is subscriber acquisition, not direct revenue. A free e-book with an email gate generates far more subscribers than a $9.99 paid e-book would generate in revenue. The subscriber lifetime value (through sponsorship revenue) far exceeds any reasonable e-book price.
- **Existing content as foundation, not writing from scratch.** About 60% of the e-book content was adapted from existing newsletter issues, blog posts, and the Codemotion talk transcript. This reduced the writing time from an estimated 6 weeks to about 3 weeks while producing a more proven and polished result (the content had already been validated with the audience).
- **PDF format, not a Substack post or blog series.** A designed PDF feels more substantial and "worth downloading" than a blog series. It also creates a sense of exclusivity and ownership that a public web page does not. The design investment was modest but made the resource feel premium.
## Notes
- The writing process was faster than expected. The structure emerged naturally from grouping existing content into themes: chapters on audience identification, content strategy, distribution, SEO, sponsorship, and community. New writing focused mainly on connecting threads and adding updated data.
- [[person-sara-ricci]]'s editing was particularly valuable for the e-book format. Newsletter writing can be casual and conversational; a longer-form document requires more careful structure and flow. She restructured two chapters significantly and improved the opening section.
- [[person-giulia-conti]]'s cover design was clean and professional — a minimalist style with the Refactoring brand colors. The interior layout used a two-column format with pull quotes and data callouts that made the dense content more scannable.
- The landing page conversion rate is approximately 42% (visitors who enter email and download). This is above the benchmark for e-book lead magnets (~25-30%). The high conversion likely reflects the specificity of the topic and the trust already built through the newsletter brand.
- At the 2-month mark, the e-book has generated approximately 2,300 new subscribers, tracking toward the 3,000 target. The e-book landing page is now promoted in the newsletter footer, on the podcast, and through social media. It has also been shared organically by readers, creating a compounding distribution effect.
- The e-book content will likely need updating in 6-12 months as strategies evolve. Built the manuscript in markdown with a separate build script for PDF generation, making updates straightforward. Feeds into [[topic-content-strategy]].

View File

@@ -7,4 +7,32 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# LeadDev London 2025
Attend LeadDev London: meet guests, write post-conference piece, speak on a panel.
## Overview
LeadDev London is one of the premier conferences for engineering leaders, and attending in 2025 served three purposes: participating in a panel on "Building Engineering Content Brands," meeting potential podcast guests and sponsors in person, and writing a post-conference analysis piece for the newsletter. The trip combined brand-building, relationship development, and content creation into a single, high-leverage event.
The conference took place in early September in London. Beyond the panel, the most valuable aspect was the hallway conversations — meeting people who have been reading the newsletter for years, connecting with potential sponsors face-to-face, and identifying guests for [[25q3-podcast-season-4]]. The post-conference newsletter issue became one of the highest-engagement pieces of the quarter.
## Goals
- Participate in the "Building Engineering Content Brands" panel discussion
- Schedule at least 5 in-person meetings with current/potential sponsors during the conference
- Identify and pitch 3+ potential guests for the upcoming podcast season
- Write a post-conference analysis newsletter issue highlighting key themes and takeaways
- Strengthen relationships with 10+ newsletter readers and community members attending the event
## Key decisions
- **Panel participation over keynote pitch.** Was offered the option to propose a keynote talk, but chose the panel format instead. A panel requires less preparation time, provides exposure to the other panelists' audiences, and positions Refactoring alongside other established content brands. The trade-off is less individual spotlight, but the networking value of sharing a stage with peers outweighs that.
- **Three days, not just conference days.** Arrived one day before the conference for scheduled sponsor meetings and stayed one day after for follow-up conversations. The extra days doubled the relationship ROI of the trip.
- **Post-conference piece as synthesis, not summary.** Rather than writing a play-by-play of conference talks (which dozens of attendees will do), wrote a synthesized analysis of the three biggest themes emerging across all talks. This is more valuable to readers and stands out in the content noise after any major conference.
## Notes
- The panel discussion went well. The other panelists represented a startup-focused newsletter (~80K subscribers), a podcast network, and a YouTube channel for developers. The conversation surfaced interesting differences in monetization strategies and audience engagement patterns. Several audience members approached afterward to discuss Refactoring's sponsorship model.
- In-person sponsor meetings were extremely productive. Met with 6 sponsors (5 existing, 1 prospective), and the face-to-face time strengthened relationships in a way that video calls cannot. The prospective sponsor signed a 3-month Deep Dive package within a week of the conference. [[person-matteo-cellini]] prepared one-pagers for each meeting, which was a professional touch.
- Identified 4 potential podcast guests, 3 of whom have since confirmed for [[25q3-podcast-season-4]]. In-person conversation is vastly more effective for podcast guest recruitment than cold email.
- The post-conference newsletter issue ("Three Things I Learned at LeadDev London 2025") had the highest open rate of any issue in Q3 (48%) and generated significant discussion in the [[25q3-community-launch]] Discord. Conference analysis content consistently outperforms regular issues.
- [[person-emma-wilson]] also attended and facilitated an introduction to several VPEs from UK-based scale-ups. These connections are valuable for both podcast guests and understanding the European engineering leadership landscape.
- Total trip cost: approximately 1,800 GBP (flights, hotel, meals, conference ticket). The ROI through the new sponsor alone covered the trip cost several times over.

View File

@@ -7,4 +7,32 @@ Status: Done
Owner: "[[person-luca-rossi]]"
---
# Summer Cycling Peak Training
Peak training block for September gran fondo. Hit 420km in August.
## Overview
This was the final intensive training block of the 2025 cycling season, preparing for a September gran fondo event. After the successful Dolomites trip in [[25q2-dolomites-trip]], this peak training block focused on sharpening form and building the high-end fitness needed for a competitive autumn event. The block ran from mid-July through late August, with the target event in the second week of September.
The training philosophy shifted from the high-volume base approach used earlier in the year to a high-intensity, lower-volume peak phase. Interval sessions became more specific (longer threshold efforts, race-simulation rides), while total weekly hours decreased to allow for recovery and adaptation. The strength training from [[25q1-strength-program]] continued in maintenance mode (2 sessions/week) to preserve the gains without adding fatigue.
## Goals
- Execute a 6-week peak training block with high-intensity focus
- Hit a new season-best monthly volume in August (target: 1,400+ km)
- Complete 3 race-simulation rides on courses with similar profile to the target event
- Maintain FTP at or above 280W through the peak phase
- Arrive at the target event rested and sharp (2-week taper before the event)
## Key decisions
- **Intensity over volume for the peak phase.** After building a strong aerobic base through the first half of the year (~6,000 km by end of June), the peak phase prioritized quality over quantity. Three key sessions per week: a VO2max interval session, a threshold ride, and a long endurance ride with race-pace segments. Total weekly hours dropped from 10-12 to 8-9.
- **Two-week taper, not one.** Considered a shorter taper to maintain sharpness, but the Dolomites trip had left some residual fatigue. A two-week taper with gradually decreasing volume allowed full recovery while maintaining neuromuscular activation through short, sharp efforts.
- **No new equipment or position changes.** Resisted the temptation to try new tires or adjust bike fit close to the event. Everything that worked in the Dolomites stays unchanged for the autumn event. Equipment experiments belong in the off-season.
## Notes
- August volume reached 1,420 km, hitting the target. The weekly structure of one high-intensity day, one threshold day, one long day, and recovery between worked well. The long rides (5-6 hours) on weekends were the most important sessions for event-specific preparation.
- FTP tested at 282W in late August, a slight improvement from the 275W measured earlier in the year. The strength training may be contributing to this — improved core stability allows for more efficient power transfer, especially at higher intensities.
- [[person-paco-furiani]] followed a similar peak block and they completed two of the three race-simulation rides together. Training with a partner on hard sessions added motivation and pacing discipline.
- The main challenge during the peak block was managing fatigue alongside work commitments. August is a lighter newsletter period (similar reasoning as [[24q3-summer-reading-sprint]]), but podcast recording for [[25q3-podcast-season-4]] overlapped with the peak training weeks. Scheduling required careful coordination.
- The 2-week taper felt luxurious but paid off. Arrived at the event feeling genuinely fresh — legs snappy, weight on target (71.5kg), and mentally eager. This is the best pre-race state achieved across all events so far.
- [[measure-cycling-km-per-month]] for the full peak period (July-August): approximately 2,700 km combined. This brings the year-to-date total to approximately 9,500 km, on track for a year-end total exceeding 2024's 8,200 km.

View File

@@ -7,4 +7,32 @@ Status: Open
Owner: "[[person-luca-rossi]]"
---
# Podcast Season 4
Theme: AI and the changing face of software engineering. 8 episodes planned.
## Overview
Season 4 tackles the most urgent topic in the engineering world right now: how AI is changing software engineering. With 8 planned episodes, the season explores the practical impact of AI on engineering teams — from coding assistants and AI-augmented code review to the shifting role of senior engineers and the organizational implications of dramatically increased developer productivity. The theme was selected during the [[25q2-team-retreat]] strategy session and reflects the audience's most-requested topic in community polls.
Production is following the established workflows from [[procedure-podcast-recording]] and [[procedure-podcast-editing]], with [[person-sara-ricci]] on post-production and [[person-paco-furiani]] on guest logistics. Three guests were recruited during [[25q3-leaddev-london]], and the remaining slots are being filled through network outreach. The season is currently in production with recording underway.
## Goals
- Record and publish 8 episodes on AI and its impact on software engineering
- Secure guests who are actively building or deploying AI tools in engineering orgs (not just commentators)
- Continue video production for select episodes (target: 4 out of 8 with video, up from 3 in Season 3)
- Grow average episode downloads to 4,000 (up from Season 3's ~3,400)
- Generate sponsor revenue of at least $3,000/month from podcast placements
## Key decisions
- **Practitioners over pundits.** The AI space is full of hot takes and hype. This season deliberately focuses on guests who are hands-on — CTOs implementing AI coding tools, engineers who have integrated AI into their workflows, and founders building AI developer tools. The practical angle differentiates from the noise.
- **Expanded video to 4 episodes.** Season 3's video experiment showed promising YouTube numbers. Expanding to 4 video episodes (every other episode) increases YouTube content cadence without committing to full video production for every episode. The video episodes are selected based on guest visual engagement and topic appeal.
- **AI tools as sponsors.** The season theme creates a natural alignment with AI tool sponsors. Actively targeting AI coding assistants and developer productivity tools for the podcast sponsorship slots. The topical alignment between content and sponsor should improve click-through rates.
## Notes
- Guest recruitment has been the strongest of any season. The AI topic is so timely that response rates on outreach are approximately 45% — nearly double Season 3. The challenge is now selecting the best guests rather than finding enough willing guests.
- The first two recorded episodes are highly engaging. The opening episode, an interview with a CTO who replaced their entire QA team with AI-augmented testing, generated strong early reactions from the team during review. This kind of provocative-but-substantive content is what the season needs.
- [[person-david-kim]] is returning as a guest for an episode on building AI developer tools — his perspective as both a builder and user of these tools bridges the practitioner-founder divide nicely.
- Sponsor interest for the AI-themed season is strong. Two AI tool companies have committed to the full season (all 8 episodes), which secures the $3,000/month target. The thematic alignment between content and sponsor has made the pitch very natural.
- The biggest production challenge is that AI topics evolve extremely fast. Episodes recorded in August may feel slightly dated by the time they air in October. Mitigating this by focusing conversations on principles and organizational dynamics rather than specific tool features.
- This season, combined with the community discussions in [[25q3-community-launch]], is positioning Refactoring as a thought leader on AI's impact on engineering teams — a valuable positioning for both audience growth and sponsor value.

View File

@@ -7,4 +7,31 @@ Status: Open
Owner: "[[person-luca-rossi]]"
---
# 2026 Sponsorship Pipeline
Pre-sell Q1-Q2 2026 sponsorships. Target: 80% sold before Dec 31.
## Overview
This project focuses on pre-selling Q1-Q2 2026 sponsorship slots before December 31, 2025, targeting 80% of available inventory sold in advance. Pre-selling provides revenue predictability, reduces the need for reactive outreach early in the new year, and allows sponsors to lock in current rates before any potential 2026 rate adjustments. It also demonstrates business maturity to sponsors, who appreciate the ability to plan their marketing budgets in advance.
The pipeline effort builds on the CRM infrastructure from [[24q2-sponsor-crm]], the dashboard from [[24q4-sponsor-dashboard]], and the expanded verticals from [[24q3-new-sponsor-verticals]]. [[person-matteo-cellini]] is leading outreach with a focus on renewals first (highest conversion probability), followed by upsells (sponsors moving to higher tiers), and finally new prospect acquisition. The [[procedure-quarterly-sponsor-outreach]] workflow drives the execution.
## Goals
- Pre-sell 80% of Q1-Q2 2026 sponsorship inventory (newsletter + podcast) by December 31
- Secure renewals from at least 85% of existing H2 2025 sponsors
- Upsell at least 3 sponsors to higher tiers (e.g., Spotlight to Deep Dive)
- Acquire 5+ new sponsors from outreach (targeting AI/ML and cloud infrastructure verticals)
- Set pricing for 2026: evaluate a 15-20% rate increase based on audience growth and performance data
## Key decisions
- **Renewals first, then new business.** The renewal pipeline is the most efficient revenue source — existing sponsors already understand the value, and the CRM tracks their performance data. Starting renewal conversations in October gives sponsors 2+ months to approve budgets. New prospect outreach begins in November once the renewal pipeline is established.
- **Bundle pricing for annual commitments.** Offering a 10% discount for sponsors who commit to 6+ months upfront. This trades a small rate discount for significant revenue predictability and reduced sales overhead (one contract instead of monthly renewals).
- **2026 rate increase evaluation.** The audience growth from [[25q2-reach-70k]] and the push toward [[2025-reach-85k-subscribers]] justifies another rate adjustment. Planning a 15-20% increase for 2026, applied to new bookings and renewals after March 2026. Existing annual commitments honored at current rates.
## Notes
- Early renewal conversations (started in October) are going well. Three sponsors have already verbally committed to H1 2026 renewals. The performance dashboard from [[24q4-sponsor-dashboard]] is proving invaluable — sponsors can see their own data and self-justify the renewal internally.
- [[person-matteo-cellini]] is running the outreach systematically through the CRM, with weekly pipeline reviews. His expanded role (agreed during [[24q4-annual-review-process]]) is paying off — he is now handling the full sales cycle from prospecting to contract, not just initial outreach.
- The AI/ML vertical continues to be the fastest-growing sponsor category. Several AI tool companies that sponsored [[25q3-podcast-season-4]] are expressing interest in annual newsletter packages. The thematic alignment between content and sponsors creates natural demand.
- Pipeline tracking against the 80% target happens weekly. Current projection (as of mid-November) suggests the target is achievable, though some deals may slip into early January. The key risk is budget freeze season — many companies pause new commitments in late December.
- This project directly feeds into [[2025-reach-22k-mrr]] and sets the revenue foundation for 2026 planning. The combination of rate increases, new sponsor acquisition, and high renewal rates should push [[measure-sponsorship-mrr]] to new highs.

View File

@@ -7,4 +7,32 @@ Status: Open
Owner: "[[person-luca-rossi]]"
---
# 2025 Financial Review
Annual review: savings rate, portfolio performance, 2026 targets.
## Overview
This project conducts the annual financial review — assessing the investment portfolio established in [[24q1-set-investing-framework]], evaluating business profitability, reviewing spending patterns, and setting financial targets for 2026. The review covers both personal finances (investment portfolio, savings rate, emergency fund) and business finances (revenue, expenses, margins, and tax optimization).
The 2025 review is particularly significant because it is the second year of the investing framework, providing enough data to evaluate whether the strategy is working as intended. The business has also grown substantially, meaning cash management, tax planning, and reinvestment decisions are more complex than in the early days. The review is scheduled for December 2025, with outputs informing both personal financial planning and business budgeting for 2026.
## Goals
- Review investment portfolio performance against benchmark (MSCI ACWI) and rebalance if allocation has drifted more than 5% from target
- Calculate the full-year savings rate and compare against the 20% target
- Analyze business revenue and expenses: total revenue, margins, and year-over-year growth
- Assess tax efficiency and identify optimization opportunities for 2026
- Set 2026 financial targets: savings rate, investment contributions, and business revenue goals
## Key decisions
- **Annual review, not quarterly.** While the investing framework includes quarterly check-ins for allocation drift, the full financial review (business + personal + tax) happens annually. Quarterly is too frequent for strategic financial planning and creates unnecessary anxiety about short-term market movements.
- **Business and personal finances reviewed together.** As a solo business owner, the line between business and personal finances is thin. Reviewing them together reveals the full picture — business revenue minus expenses minus taxes equals the pool available for personal savings and investment. Separating the reviews would hide the dependencies.
- **Tax optimization as a first-class concern.** Italian tax law for individual businesses is complex, and proactive planning can significantly reduce the effective tax rate through legitimate deductions and timing strategies. Working with an accountant to identify opportunities before year-end rather than discovering them retroactively.
## Notes
- The investment portfolio has been on autopilot since [[24q1-set-investing-framework]], with automated monthly contributions of 20% of net revenue. Preliminary review shows the portfolio is performing in line with the benchmark, which is exactly the goal of passive investing — matching the market, not beating it.
- The savings rate for 2025 is tracking at approximately 22%, slightly above the 20% target. This reflects increased revenue (sponsorship growth) without proportionally increased spending. The business has natural operating leverage — more subscribers and sponsors does not linearly increase costs.
- [[person-marco-bianchi]] is reviewing the tax optimization section, as he went through a similar analysis for his own business last year. His recommendation to prepay certain expenses in December for tax timing purposes is being evaluated.
- Business revenue has grown significantly year-over-year, driven by the rate increase from [[25q1-rate-increase]], new sponsor verticals, and podcast sponsorship revenue. The detailed revenue analysis will feed into [[25q4-2026-sponsors]] for setting 2026 pricing.
- The emergency fund (6 months of expenses in a high-yield savings account) remains fully funded. No need to adjust — the original sizing from the 2024 framework still covers the current expense base with comfortable margin.
- One area for improvement: better tracking of business expenses by category. Currently using a basic spreadsheet. Considering a proper accounting tool for 2026, especially as the team grows and expense categories become more varied.

View File

@@ -7,4 +7,32 @@ Status: Open
Owner: "[[person-luca-rossi]]"
---
# Laputa App V3
V3: mobile sync, AI note linking, and quick capture from menu bar.
## Overview
V3 represents the most ambitious Laputa milestone yet, introducing three headline features that take the app from a desktop-only vault browser to a truly integrated knowledge management system: mobile sync (read/write access to the vault from an iPhone), AI-powered note linking (automatic suggestions for connections between notes), and a quick capture menu bar widget for frictionless note creation without opening the full app.
The mobile sync challenge is primarily architectural — the vault is a local directory of markdown files, and syncing across devices requires either a cloud sync layer (iCloud, Dropbox) or a custom sync protocol. The AI linking feature uses embeddings to find semantically related notes that may not share explicit wiki-links. Quick capture provides a lightweight input surface that integrates with macOS system-wide, accessible via a keyboard shortcut. This milestone continues the path toward [[2025-ship-laputa]].
## Goals
- Implement mobile sync via iCloud Drive for read/write vault access on iOS
- Build an AI note linking system that suggests related notes based on semantic similarity
- Create a menu bar quick capture widget (macOS) for instant note creation via keyboard shortcut
- Optimize app performance for vaults exceeding 10,000 files (anticipating vault growth)
- Ship a beta release to a small group of testers (5-10 people) for external feedback
## Key decisions
- **iCloud Drive for sync, not custom backend.** Evaluated building a custom sync server, using Dropbox API, or leveraging iCloud Drive. iCloud was chosen because it is native to the Apple ecosystem (where most potential users are), requires zero server infrastructure, and handles conflict resolution at the file level. The downside is platform lock-in (no Android sync), but the user base is overwhelmingly macOS/iOS.
- **Embedding-based similarity, not keyword matching.** The AI linking system uses text embeddings (via a local model, not cloud API) to compute semantic similarity between notes. This catches connections that keyword matching would miss — for example, a note about "team retrospectives" being related to a note about "learning from failure" even though they share no common terms. Running locally preserves privacy and eliminates API costs.
- **Menu bar widget as a Tauri secondary window.** Rather than a separate app, the quick capture widget is a secondary Tauri window that can be toggled via a global keyboard shortcut. This keeps the implementation within the existing codebase and shares the Rust backend for file operations.
## Notes
- The iCloud Drive integration is the most technically uncertain component. Tauri's file system access works well for local directories, but iCloud Drive introduces sync conflicts, delayed availability, and platform-specific behaviors that need careful handling. Early prototyping is focused on identifying and handling edge cases before building the full sync UI.
- The AI linking prototype is showing promising results. Using a local embedding model (all-MiniLM-L6-v2), the system generates similarity scores between all vault notes. For a 9,200-file vault, the full embedding computation takes about 45 seconds — acceptable as a one-time startup cost with incremental updates for changed files.
- [[person-david-kim]] has agreed to be one of the beta testers. His experience with developer tools and his own extensive note-taking practice make him an ideal early user. Planning to recruit 4-5 additional testers from the [[25q3-community-launch]] Discord.
- The quick capture widget addresses a genuine daily friction point. Currently, capturing a quick thought requires opening the full Laputa app, navigating to the right location, and creating a new note. The menu bar widget reduces this to: hit keyboard shortcut, type, hit enter. The captured note gets filed with a timestamp and can be processed later.
- Performance optimization work has begun with profiling the app under load with 10K+ files. The main bottleneck is the initial file scan and frontmatter parsing — exploring a caching layer that persists parsed metadata between sessions to avoid re-parsing unchanged files.
- V3 is planned for completion by end of [[25q4]], which would fulfill [[2025-ship-laputa]] with a feature-complete app that handles the full vault management workflow across devices.

View File

@@ -7,4 +7,32 @@ Status: Open
Owner: "[[person-luca-rossi]]"
---
# Reach 85k Subscribers
Year-end push through partnerships and referral program expansion.
## Overview
This project is the year-end push to hit [[2025-reach-85k-subscribers]], the headline growth goal for the year. With [[measure-subscribers]] at approximately 75K after the [[25q2-reach-70k]] sprint and continued organic growth through Q3, reaching 85K by December 31 requires an additional ~10K subscribers in the final quarter. The strategy combines expansion of existing growth channels (referral program, cross-promotions, SEO) with a repeat of the Black Friday campaign that was so successful in [[24q4-black-friday-campaign]].
The growth plan is structured in two phases: a steady October-November push through referral amplification and new cross-promotion partnerships, followed by a concentrated Black Friday campaign in late November that aims to replicate the 1,200+ subscriber spike from 2024. [[person-elena-rossi]] is supporting the campaign creative, and [[person-matteo-cellini]] is coordinating the sponsor participation in the Black Friday special.
## Goals
- Grow from ~75K to 85K subscribers by December 31, 2025
- Generate 3,000+ subscribers through referral program campaigns (including a holiday referral challenge)
- Establish 2 new cross-promotion partnerships (in addition to the 3 from [[25q2-reach-70k]])
- Execute a Black Friday 2025 campaign targeting 1,500+ new subscribers (improvement over 2024's 1,200)
- Maintain subscriber quality: 30-day retention rate above 75% for all acquisition channels
## Key decisions
- **Referral program as the primary engine.** The referral program from [[25q1-referral-program]] has proven to be the most cost-effective and highest-quality growth channel. Rather than investing in new, unproven channels, the strategy doubles down on referrals with increased incentives, a holiday-themed challenge, and more prominent placement in the newsletter.
- **Black Friday 2025 with expanded scope.** The 2024 campaign focused on developer tools. The 2025 version expands to include AI tools, learning resources, and SaaS products relevant to engineering leaders. The broader scope should increase the lead magnet's appeal while maintaining curation quality.
- **No paid acquisition at scale.** Tested paid newsletter ads (via SparkLoop partner network) during Q3 with a small budget. The cost-per-acquisition was $2.50, which is acceptable but significantly higher than organic channels ($0.60-0.80). Keeping paid as a supplementary channel rather than a primary one.
## Notes
- The early October referral push generated approximately 800 new subscribers in two weeks, which is slightly above the run-rate needed to hit target. The "Holiday Referral Challenge" is scheduled for late November, offering enhanced rewards for the holiday season.
- New cross-promotion partnerships are being negotiated with a DevOps-focused newsletter (~45K subscribers) and a tech career newsletter (~60K subscribers). These are adjacent but distinct audiences, minimizing overlap with existing partners.
- The e-book from [[25q3-ebook]] continues to drive steady subscriber growth (~300-400/month) and is being promoted more aggressively as part of the Q4 push. It is now the primary CTA on the Refactoring website homepage.
- [[person-elena-rossi]] is designing the Black Friday 2025 campaign creative, building on the successful format from 2024. The plan includes a dedicated landing page, social media assets, and email sequences for the week-long campaign.
- The [[25q3-community-launch]] Discord is becoming an organic growth channel — community members share the newsletter with their networks. Quantifying this effect is difficult, but anecdotal evidence suggests it is meaningful.
- Current projection (mid-November): on track to reach approximately 83K-86K by year-end, which means the 85K target is achievable but not guaranteed. The Black Friday campaign is the swing factor — a strong campaign pushes past 85K, a weak one leaves the target short.

View File

@@ -7,4 +7,32 @@ Status: Open
Owner: "[[person-luca-rossi]]"
---
# 2025 Annual Review
Full 2025 retrospective for team and personal year review.
## Overview
This is the full 2025 retrospective — a comprehensive review covering both the team (structured reviews for each team member) and a personal year-in-review across all areas of responsibility. The process builds on the framework established in [[24q4-annual-review-process]], which proved effective and is now in its second iteration. The review covers business performance, content output, team development, personal health and fitness, and financial outcomes.
The review is scheduled for December 2025 and will be conducted in two phases: individual team member reviews (week 1-2 of December), followed by the personal retrospective and 2026 planning (week 3-4 of December). The outputs will inform Q1 2026 planning, team role adjustments, compensation reviews, and personal goal-setting for the new year.
## Goals
- Conduct structured annual reviews with [[person-matteo-cellini]], [[person-paco-furiani]], and [[person-sara-ricci]]
- Evaluate each team member against 2025 goals set during the 2024 review
- Conduct a personal retrospective across all responsibilities: content, sponsorships, podcast, fitness, finance, and Laputa development
- Set 2026 goals for the business, team, and personal areas
- Identify 3-5 strategic priorities for 2026 based on 2025 learnings
## Key decisions
- **Same review format as 2024, with one addition.** The conversation-first, self-assessment-supported format from [[24q4-annual-review-process]] worked well and will be reused. The addition for 2025: a peer feedback component where team members provide brief feedback on each other (not just on [[person-luca-rossi]]). This gives a more complete picture as the team grows.
- **Personal retrospective tied to vault data.** Using data from the vault (goals achieved, projects completed, measures tracked) as the foundation for the personal retrospective rather than relying on memory. This is one of the use cases where Laputa ([[25q4-laputa-v3]]) and the structured vault pay off — the data is all there, organized by quarter and responsibility.
- **2026 planning as part of the review, not a separate process.** Rather than separating the retrospective from forward planning, combining them ensures that 2026 goals are directly informed by 2025 learnings. The risk of separating them is that planning happens in a vacuum, disconnected from recent experience.
## Notes
- The team has grown from 3 part-time contractors in 2024 to 4 people with expanded roles. [[person-matteo-cellini]]'s role expansion (from outreach to full sales cycle, as discussed in the 2024 review) has been successful. His 2025 review should formalize this expanded scope.
- [[person-sara-ricci]]'s feedback from the 2024 review about draft lead time was acted upon and has improved the editorial workflow. Will assess whether the 48-hour minimum lead time for [[procedure-weekly-newsletter]] is sufficient or if further adjustment is needed.
- [[person-paco-furiani]]'s new community moderation responsibilities (from [[25q3-community-launch]]) were not part of his original scope. The review should address whether this is a permanent addition, requires compensation adjustment, and how it fits with his other operational duties.
- The personal retrospective will draw on goal outcomes ([[2025-reach-85k-subscribers]], [[2025-reach-22k-mrr]], [[2025-ship-laputa]], [[2025-ride-stelvio]], [[2025-read-20-books]]) as quantitative inputs, supplemented by qualitative reflection on what felt sustainable, what caused stress, and where energy was best spent.
- Key question for 2026 planning: is the current business model (newsletter + podcast + sponsorships) approaching its ceiling, or is there still significant headroom? The community experiment ([[25q3-community-launch]]) and the e-book ([[25q3-ebook]]) suggest there are adjacent revenue and engagement opportunities worth exploring.
- Scheduling note: the review takes approximately 8-10 hours total (preparation, 4 conversations, personal retrospective, documentation). Blocking this time in December is essential — the review gets squeezed out if it has to compete with end-of-year operational demands.