The Hardest Part of My Side Project Isn't the Code

December 28, 2025

When I kicked off this project at the beginning of the year, I set a goal for myself: send 300 kind words by the end of 2025. I’m happy to report that I hit that milestone on December 2nd. The 100th order was for the words “Dreams come true,” which kinda feels like a testament to what I’m trying to do here. Seeing that made me smile.

The Numbers

As of today, we’ve sent over 312 kind words into the world. That’s 312 moments where someone decided to reach out, to let someone know they were thinking of them. It’s not a lot in the grand scheme of things, but it’s not nothing either.

There’s no way I could have made it without the Hacker News rush back in February. That event put Three Kind Words on the map and was responsible for moving a majority of my 300 cards. The vending machine got a flood of traffic all at once, and I scrambled to maintain the momentum.

xychart-beta
    title "Postcards Processed 2025"
    x-axis ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
    y-axis 0 --> 160
    bar [15, 144, 51, 36, 3, 0, 3, 0, 0, 15, 30, 15]

But like all things, this came to pass. Traffic eventually died down. The waves calmed. And I was left wondering: now what?

Still Trying Social Media

Earlier this year, I realized I needed to go where my customers are, which is likely social media. So I created an Instagram and a TikTok and floundered around trying to figure out how to do this stuff. Coming up with content and farming for attention is hard for me. There’s something about it that just doesn’t click. Maybe I’m overthinking it.

The one format that actually worked for me was Reddit. I would post in different subreddits, especially the regional Richmond, Virginia (RVA) subreddit, which has a weekly buy/sell/trade and local makers thread. That felt more authentic, more like a conversation than a performance. Posting on these weekly threads helped me work out different ways to talk about the service and help other people understand the value. Despite a few downvotes I made a handful of successful conversions.

I also spent about $20 on Reddit ads. I can attribute exactly two orders to those ads, one of which requested a refund. The ROI was not great, so I decided that pouring hundreds more into ads would be a great way to burn money. I understand that you have to let folks know your business exists, but it just doesn’t feel right. Not yet, anyway.

The Lull

Between Mother’s Day and Thanksgiving, I hardly sold anything. There was a lot going on in my life. I got busy and wasn’t able to focus on expanding the presence. But I did sell a couple here and there, and the fully-automated vending machine delivered without me needing to worry about it. That part worked exactly as designed: coins in, postcards out.

I was able to close the gap to 300 words by sharing about the project on LinkedIn. I have a lot of connections there and don’t share things very often, so when I did, the message actually reached people who already knew me. That’s what pushed me over the finish line.

Refunds and Realities

I had three folks request refunds due to them saying that the cards never showed up. I issued all of them. Everything I have from a tracking perspective tells me that everything was sent out, but USPS can be unreliable. In one instance, someone told me they got the third card months after it was supposed to arrive, lost somewhere in the postal system. At 4x6 inches, it’s easy for these cards to get misplaced, stuck in the back of a mailbox, or simply vanish.

But much more overpowering than the noise of the problems was the impact that Three Kind Words created. The kindness that was spread. The stories I heard back from people who sent these to their friends, fathers, mothers, sisters, brothers, grandmas, uncles. People shared that it was unexpected, impactful, and the price to value felt right. And even though it didn’t work perfectly every time, I got a lot of feedback that encourages me to keep going.

Something Personal

Perhaps the most impactful story is one of my own.

I sent “Thinking of you” to my dad as he was struggling in his battle with cancer. He died in September. Because I don’t live where he lives, I had to travel there to help take care of things.

When I arrived, I noticed that he had received the first two cards: “Thinking” and “of.” My mother told me they didn’t know who it was from. They thought maybe it was from their preacher or their church. They had no idea it was from me.

While I was there making arrangements for my father’s funeral, the final card arrived. The one with “you” on the front and my name on the back. I’m pretty sure if my dad had seen it, he would have felt what I wanted him to feel: remembered and seen.

Even though he didn’t get to see the final word, the fact that he had both of the first two cards ready and waiting, out in the open, was a testament to the impact I was trying to create. Sometimes the kindness lands even when we’re not there to witness it.

What I Learned

The crowd has favorites. Despite having a wide library of available words, it really comes down to a handful that people love. “Just saying hi” remains the champion. Maybe I have too many options now. A small contingent of folks have asked if they could choose their own words, but I’m not sure that’s a good idea yet. Curated kindness has its own charm. Here’s the top 10 kindest words for 2025:

  1. You are amazing
  2. I love you
  3. You are beautiful
  4. You are loved
  5. Thinking of you
  6. Just saying hi
  7. You are enough
  8. Hope springs eternal
  9. Dreams come true
  10. You go girl

Quality varies. My current postcard vendor, PostGrid.com, has decent service and pricing, but in my experience, the quality of their printed cards falls short. The paper is a bit too flimsy, and they don’t seem to let the prints set long enough before processing, so they smear. Some of this could be considered a feature, not a bug. The scratches and scuffs add a necessary roughness that makes each card feel a little more real. I used Lob.com in another project and found it does a much better job: heavier paper, thicker coatings, less smearing. To switch, I’d need to significantly refactor.

Address validation is complicated. When someone places an order, they select an address using an autocomplete powered by Here.com. But I learned that address autocomplete, verification, and validation are all different things. An address might show up in the autocomplete but not actually be deliverable. When PostGrid recognized an invalid address, it created a terrible customer experience: follow a link, correct the address, or the order gets canceled within 24 hours. I need to validate and verify addresses before the order is placed, not after. Obvious in hindsight, but that’s how ya learn.

What’s Next

Now I have to figure out if I want to continue working on this project or let it sit in a dormant phase. A vending machine isn’t without its maintenance. It needs upkeep and monitoring to make sure it can still deliver on its promise. This isn’t a set-it-and-forget-it situation, even if it feels like one most of the time.

For example, during the summer lull when I wasn’t getting any orders or traffic, I didn’t realize that my address autocomplete API key had become invalidated, breaking the whole flow. I didn’t notice until I visited the site myself and saw it was jacked up. There’s also customer service, dealing with Stripe, and making sure the site is still up. All the small things that come with running something like this.

I started development on Three Kind Words over a year ago, around October 2024. I built it with the first round of AI coding tools, primarily using Cursor to help me put together the frontend and backend. At the time, I chose Hugo for the static site and Cloudflare Workers in TypeScript for the backend.

Given everything I’ve learned about address validation and all the other issues, I have a feeling I need to significantly refactor Three Kind Words. Take the engine out, swap some parts, put in a new one. It’ll be a good amount of work, but with what I’ve learned and the new AI coding tools that exist, I think I could do it in a sliver of the time it originally took.

The Hard Part

There’s also the issue of marketing and how to address the problem that not enough people are looking at the site. Right now it’s a steady trickle of tiny hits here and there, but I have to force those events to happen by posting in various places like LinkedIn or Reddit. Most of my potential customers are on social media, and the only way they’ll find out about me is if I let them know I exist.

This is hard. This part is really not easy for me. Maybe that’s why I created this project: to get out of my comfort zone. I can spend all day writing code, iterating the product, posting on social media. But how do I get customers in the first place? How do I let them know this weird little postcard vending machine even exists?

In and through. This is the way.

Reflecting

As I look back on 2025, I’m struck by how much this little project has taught me. More than postcards and automation, I think it’s been about showing up, putting something into the world, and seeing what happens. I am really thankful for that experience.

I set out to send 300 kind words, and I did. Some got lost in the mail and arrived months late. A few made people cry in the best way. And one set arrived at my dad’s house before I could say goodbye.

Here’s to 2026. Maybe I’ll aim for 500. Maybe I’ll rebuild the whole thing. Whatever it is, I’ll keep making stuff, sharing it, talking about the process, and seeing what shakes out.

And mostly, reminding myself: there’s no rush. Good things take time!!!!!!!!!!!!