<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: naoanao</title>
    <description>The latest articles on DEV Community by naoanao (@naoanao).</description>
    <link>https://dev.to/naoanao</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3371102%2Ff0b2f0b4-dd3d-4f57-ae33-18bcd9e27077.png</url>
      <title>DEV Community: naoanao</title>
      <link>https://dev.to/naoanao</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/naoanao"/>
    <language>en</language>
    <item>
      <title>I Worked the Door at a Karaoke Bar. Here's What 200 Nights of Rejection Taught Me About Funnels.</title>
      <dc:creator>naoanao</dc:creator>
      <pubDate>Sun, 31 May 2026 09:54:13 +0000</pubDate>
      <link>https://dev.to/naoanao/i-worked-the-door-at-a-karaoke-bar-heres-what-200-nights-of-rejection-taught-me-about-funnels-56h6</link>
      <guid>https://dev.to/naoanao/i-worked-the-door-at-a-karaoke-bar-heres-what-200-nights-of-rejection-taught-me-about-funnels-56h6</guid>
      <description>&lt;p&gt;The math was simple.&lt;/p&gt;

&lt;p&gt;I'd approach 100 people on the street. 70 walked past. 20 stopped. 12 came to the entrance. 6 went inside.&lt;/p&gt;

&lt;p&gt;I did this for 200+ nights. At the time, I thought I was just doing a job. Years later I learned this was a textbook marketing funnel.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Numbers I Tracked Without Knowing Why
&lt;/h2&gt;

&lt;p&gt;After about a month, I started keeping mental stats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Awareness&lt;/strong&gt; (walking past): 100%&lt;br&gt;
&lt;strong&gt;Interest&lt;/strong&gt; (stopped to listen): 20%&lt;br&gt;
&lt;strong&gt;Consideration&lt;/strong&gt; (walked to the entrance): 12%&lt;br&gt;
&lt;strong&gt;Conversion&lt;/strong&gt; (went inside): 6%&lt;/p&gt;

&lt;p&gt;When my conversion rate dropped from 6% to 3% over two weeks, I knew something was wrong — I just couldn't name what.&lt;/p&gt;

&lt;p&gt;I changed my opening line. Tested two versions over a week. One performed 2x better. I didn't know I was doing A/B testing.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Broke the Funnel
&lt;/h2&gt;

&lt;p&gt;The gap that hurt most wasn't the 70 who walked past. It was the 12 who came to the entrance but didn't go inside.&lt;/p&gt;

&lt;p&gt;These people had stopped, listened, walked with me. They were interested. And then they left.&lt;/p&gt;

&lt;p&gt;What killed them: uncertainty. They didn't know what was waiting on the other side of the door.&lt;/p&gt;

&lt;p&gt;The fix was simple: I started describing what they'd see before they saw it.&lt;/p&gt;

&lt;p&gt;"Third floor, 8 rooms, mix of groups and couples, pretty lively right now."&lt;/p&gt;

&lt;p&gt;Consideration-to-conversion went from 50% to 70%.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Most Small Business Marketing Fails Here
&lt;/h2&gt;

&lt;p&gt;Most businesses optimize for awareness. They post on Instagram, run ads, get seen.&lt;/p&gt;

&lt;p&gt;But the biggest leak in their funnel isn't awareness. It's the gap between interest and conversion — people who checked their profile, clicked the website, looked at the menu — and left.&lt;/p&gt;

&lt;p&gt;The question isn't "how do I get more people to see me?" It's "what happens to the people who already found me?"&lt;/p&gt;




&lt;h2&gt;
  
  
  How Growl Addresses This
&lt;/h2&gt;

&lt;p&gt;When I built Growl, I built it around the funnel gap.&lt;/p&gt;

&lt;p&gt;The 3 weekly actions aren't random. They're designed for where you actually are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No regulars yet?&lt;/strong&gt; Awareness actions (Instagram content to attract new people)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;People coming once but not returning?&lt;/strong&gt; Retention actions (Google review replies, LINE follow-up)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regulars but no word-of-mouth?&lt;/strong&gt; Loyalty actions (UGC prompts, referral nudges)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Same tool. Different outputs based on where your funnel is leaking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free to try — no signup: growl-app.vercel.app&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built solo, Kanagawa, Japan. Day 366.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Customer Journey Map I Drew on a Napkin That Changed My Event Business</title>
      <dc:creator>naoanao</dc:creator>
      <pubDate>Sun, 31 May 2026 09:22:44 +0000</pubDate>
      <link>https://dev.to/naoanao/the-customer-journey-map-i-drew-on-a-napkin-that-changed-my-event-business-212k</link>
      <guid>https://dev.to/naoanao/the-customer-journey-map-i-drew-on-a-napkin-that-changed-my-event-business-212k</guid>
      <description>&lt;p&gt;In 2015 I was running events for a foreign beverage brand in Japan.&lt;/p&gt;

&lt;p&gt;We had a product people liked at the event. But second purchases were almost zero.&lt;/p&gt;

&lt;p&gt;I couldn't figure out why. Then someone handed me a napkin and said: "Draw the steps a customer takes from first hearing about you to buying twice."&lt;/p&gt;

&lt;p&gt;I drew it. And immediately saw the problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Map
&lt;/h2&gt;

&lt;p&gt;Here's what I drew:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Awareness&lt;/strong&gt; — They saw our social media post&lt;br&gt;
&lt;strong&gt;2. Interest&lt;/strong&gt; — They showed up to the event&lt;br&gt;&lt;br&gt;
&lt;strong&gt;3. Experience&lt;/strong&gt; — They tried the drink, liked it&lt;br&gt;
&lt;strong&gt;4. Gap&lt;/strong&gt; — ??? Nothing happened here&lt;br&gt;
&lt;strong&gt;5. Purchase (2nd)&lt;/strong&gt; — We hoped for this&lt;/p&gt;

&lt;p&gt;The gap was everything.&lt;/p&gt;

&lt;p&gt;After the event, there was zero contact. No follow-up. No reminder. No reason to buy again. We'd spent all our energy getting people to the event and then just... let them leave.&lt;/p&gt;

&lt;p&gt;The customer journey had a cliff.&lt;/p&gt;




&lt;h2&gt;
  
  
  What We Changed
&lt;/h2&gt;

&lt;p&gt;We added three things between step 3 and step 5:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LINE follow&lt;/strong&gt;: At the event, we invited people to follow our LINE account for "exclusive member deals." About 30% did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 3 message&lt;/strong&gt;: Three days after the event, we sent one message: "How are you feeling? We have a limited offer this week."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 14 re-invite&lt;/strong&gt;: Two weeks later, an invite to a smaller, members-only tasting.&lt;/p&gt;

&lt;p&gt;Second purchase rate went from near-zero to about 18%.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Framework Is
&lt;/h2&gt;

&lt;p&gt;Two years later I learned this was called Customer Journey Mapping.&lt;/p&gt;

&lt;p&gt;The insight wasn't complicated: you have to think about every step a customer takes, not just the moment of first contact. Most small businesses optimize the front of the journey (awareness, interest) and completely ignore what happens after the first interaction.&lt;/p&gt;

&lt;p&gt;The money is in the back.&lt;/p&gt;




&lt;h2&gt;
  
  
  How Growl Uses This
&lt;/h2&gt;

&lt;p&gt;Growl generates weekly marketing actions based on where your customers are in the journey.&lt;/p&gt;

&lt;p&gt;If you're new and have no regulars yet, it generates awareness content. If you have regulars but no repeat purchases, it generates loyalty content.&lt;/p&gt;

&lt;p&gt;The same 5 questions. Different outputs depending on your situation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free to try: growl-app.vercel.app&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built solo, Kanagawa, Japan. Former event organizer and brand distributor. Day 365.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Ran a Local Energy Drink Brand. Here's What 4P Analysis Actually Looks Like in the Real World.</title>
      <dc:creator>naoanao</dc:creator>
      <pubDate>Sun, 31 May 2026 07:49:20 +0000</pubDate>
      <link>https://dev.to/naoanao/i-ran-a-local-energy-drink-brand-heres-what-4p-analysis-actually-looks-like-in-the-real-world-29m0</link>
      <guid>https://dev.to/naoanao/i-ran-a-local-energy-drink-brand-heres-what-4p-analysis-actually-looks-like-in-the-real-world-29m0</guid>
      <description>&lt;p&gt;In 2014 I became the Japan distributor for a small overseas energy drink brand.&lt;/p&gt;

&lt;p&gt;No marketing team. No budget. Just me, a Facebook page, and a product nobody had heard of.&lt;/p&gt;

&lt;p&gt;I had to figure out the entire go-to-market from scratch. Years later, I found out I'd accidentally run a textbook 4P analysis.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 4Ps: What the Textbook Says
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Product&lt;/strong&gt; — What are you selling?&lt;br&gt;
&lt;strong&gt;Price&lt;/strong&gt; — What do you charge?&lt;br&gt;
&lt;strong&gt;Place&lt;/strong&gt; — Where do customers buy it?&lt;br&gt;
&lt;strong&gt;Promotion&lt;/strong&gt; — How do people find out?&lt;/p&gt;

&lt;p&gt;Simple framework. Obvious in hindsight. Almost impossible to get right without thinking through all four simultaneously.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Actually Played Out
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Product&lt;/strong&gt;: An energy drink from overseas, unknown in Japan, with a unique flavor profile. Our differentiation wasn't taste — it was the story. "Imported. Small batch. Not for everyone."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price&lt;/strong&gt;: We couldn't compete with Red Bull or Monster on volume. We priced at a premium — ¥380 vs. ¥210 for the big brands. This was intentional. A lower price would have said "knockoff." A higher price said "import."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Place&lt;/strong&gt;: Mainstream convenience stores said no. So we went to independent cafes, music venues, and specialty import shops. This was actually better. Our customers were early adopters who prized discovery.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Promotion&lt;/strong&gt;: Facebook ads targeting 25-34 year olds interested in music events + imported goods. Then a launch event at a local venue. Then word of mouth from the people who showed up.&lt;/p&gt;

&lt;p&gt;Within 3 months, we had distribution in 40 locations and were selling at local food festivals.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Got Wrong
&lt;/h2&gt;

&lt;p&gt;I underinvested in Place. I thought online would carry us.&lt;/p&gt;

&lt;p&gt;It didn't. The product needed to be somewhere people could &lt;em&gt;discover&lt;/em&gt; it physically. The cafes and venues weren't just distribution — they were advertising. Every bartender who recommended it was a salesperson I wasn't paying.&lt;/p&gt;

&lt;p&gt;When I finally prioritized placement in the right physical venues, sales doubled.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Lesson
&lt;/h2&gt;

&lt;p&gt;4P isn't a checklist. It's a system. Change one variable and the others shift.&lt;/p&gt;

&lt;p&gt;Drop your price and you change the customer's perception of the product. Change where you sell and you change who buys.&lt;/p&gt;

&lt;p&gt;I built Growl to think through these tradeoffs automatically. When you describe your business, it uses frameworks like 4P to identify where your biggest leverage is &lt;em&gt;this week&lt;/em&gt; — and writes the copy to act on it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free to try: growl-app.vercel.app&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built solo, Kanagawa, Japan. Former distributor, restaurant owner, event organizer. Day 365.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Taught Smartphones to 90-Year-Olds. It Completely Changed How I Think About Target Customers.</title>
      <dc:creator>naoanao</dc:creator>
      <pubDate>Sun, 31 May 2026 07:48:08 +0000</pubDate>
      <link>https://dev.to/naoanao/i-taught-smartphones-to-90-year-olds-it-completely-changed-how-i-think-about-target-customers-3636</link>
      <guid>https://dev.to/naoanao/i-taught-smartphones-to-90-year-olds-it-completely-changed-how-i-think-about-target-customers-3636</guid>
      <description>&lt;p&gt;My youngest student was 42. My oldest was 94.&lt;/p&gt;

&lt;p&gt;I ran smartphone classes for seniors for a year. What I thought was one audience turned out to be seven completely different people — all in the same room.&lt;/p&gt;

&lt;p&gt;This is when I understood what "persona" actually means.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Mistake I Made at First
&lt;/h2&gt;

&lt;p&gt;I designed one curriculum. Assumed "seniors who want to use smartphones" was a sufficient description of my audience.&lt;/p&gt;

&lt;p&gt;Week one was chaos.&lt;/p&gt;

&lt;p&gt;The 42-year-old was frustrated I was going too slow. The 94-year-old was frustrated I was going too fast. The retired engineer wanted to understand &lt;em&gt;why&lt;/em&gt; things worked. The retired homemaker wanted to know exactly what to press and nothing else.&lt;/p&gt;

&lt;p&gt;Same product. Wildly different needs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building Actual Personas
&lt;/h2&gt;

&lt;p&gt;I started observing instead of teaching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Persona 1 — The Reluctant Joiner (avg age: 78)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Came because family made them&lt;/li&gt;
&lt;li&gt;Goal: not embarrass themselves at family video calls&lt;/li&gt;
&lt;li&gt;Fear: breaking something&lt;/li&gt;
&lt;li&gt;Key insight: they needed permission to go slowly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Persona 2 — The Curious Explorer (avg age: 65)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Came because they genuinely wanted to learn&lt;/li&gt;
&lt;li&gt;Goal: independence — no more asking kids for help&lt;/li&gt;
&lt;li&gt;Fear: being condescending or talked down to&lt;/li&gt;
&lt;li&gt;Key insight: treat them as intelligent adults, not patients&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Persona 3 — The Reluctant Engineer (avg age: 70)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Former technical background&lt;/li&gt;
&lt;li&gt;Goal: understand the system, not just use it&lt;/li&gt;
&lt;li&gt;Fear: being stuck in surface-level instruction&lt;/li&gt;
&lt;li&gt;Key insight: give them the mental model, not just the steps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three different curricula. Same class.&lt;/p&gt;

&lt;p&gt;Retention went from 60% to 94%.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Changed About My Marketing
&lt;/h2&gt;

&lt;p&gt;When I later started marketing Growl — an AI tool for small business owners — my first instinct was to describe it to "small business owners."&lt;/p&gt;

&lt;p&gt;Wrong. That's not a persona. That's a category.&lt;/p&gt;

&lt;p&gt;"A restaurant owner who hasn't touched Instagram in 6 months because every time they try to post, they stare at the blank screen for 20 minutes and give up" — that's a persona.&lt;/p&gt;

&lt;p&gt;One sentence. The person reads it and thinks: &lt;em&gt;that's me.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Growl generates marketing actions for exactly that person. Every week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free to try — no signup: growl-app.vercel.app&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built solo, Kanagawa, Japan. Former restaurant owner and senior IT instructor. Day 365.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Took a Burger to a Food Festival. PEST Analysis Explains Why It Failed — and What Saved It.</title>
      <dc:creator>naoanao</dc:creator>
      <pubDate>Sun, 31 May 2026 07:47:19 +0000</pubDate>
      <link>https://dev.to/naoanao/i-took-a-burger-to-a-food-festival-pest-analysis-explains-why-it-failed-and-what-saved-it-54eb</link>
      <guid>https://dev.to/naoanao/i-took-a-burger-to-a-food-festival-pest-analysis-explains-why-it-failed-and-what-saved-it-54eb</guid>
      <description>&lt;p&gt;We drove three hours to a food festival with our local burger.&lt;/p&gt;

&lt;p&gt;We sold 40% of what we brought. The booth next to us — a generic taco stand — sold out in two hours.&lt;/p&gt;

&lt;p&gt;I didn't understand why until I learned PEST analysis.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Happened at the Festival
&lt;/h2&gt;

&lt;p&gt;Our burger was genuinely good. Local ingredients. A story behind it. A small following.&lt;/p&gt;

&lt;p&gt;But the festival crowd was different from our regulars.&lt;/p&gt;

&lt;p&gt;They were tourists. Day-trippers. Families with kids who wanted something fast, familiar, and Instagram-able.&lt;/p&gt;

&lt;p&gt;Our "local story" meant nothing to people who didn't know the area. Our price point ($12) was 40% higher than the taco stand. Our setup looked artisanal — which reads "slow" to a hungry festival crowd.&lt;/p&gt;

&lt;p&gt;We made money. But we underperformed badly.&lt;/p&gt;




&lt;h2&gt;
  
  
  PEST Analysis: What I Missed Before Going
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Political&lt;/strong&gt;: The festival was tourism-funded. The crowd skewed toward out-of-towners who wanted "local color" but didn't want to be adventurous with food.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Economic&lt;/strong&gt;: Festival economics are impulse purchases. Price sensitivity is high. People are spending on rides, games, and four other food stalls — your item is one of many.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Social&lt;/strong&gt;: Food festivals in 2014 were Instagram's early days. Visual appeal drove lines, not taste reputation. The taco stand was photogenic. We weren't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technological&lt;/strong&gt;: The booth next to us had a card reader. We were cash only. We lost at least 20% of potential buyers who didn't carry cash.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Changed the Next Year
&lt;/h2&gt;

&lt;p&gt;I ran through PEST before the next festival.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lowered price point on a festival-specific item ($8 slider)&lt;/li&gt;
&lt;li&gt;Got a card reader&lt;/li&gt;
&lt;li&gt;Added visual presentation (better signage, open kitchen view)&lt;/li&gt;
&lt;li&gt;Targeted a local festival where our story would land&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sold out in 90 minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters for Your Marketing
&lt;/h2&gt;

&lt;p&gt;Most small business owners market the same way everywhere. Same Instagram post for every audience. Same pricing for every context.&lt;/p&gt;

&lt;p&gt;PEST analysis forces you to ask: what's the environment &lt;em&gt;right now&lt;/em&gt; for this specific audience?&lt;/p&gt;

&lt;p&gt;I built Growl to run this kind of analysis automatically. Every week, it scans external trends — what's happening in your market, what competitors are doing, what customers are saying — and adjusts the marketing actions it recommends for you.&lt;/p&gt;

&lt;p&gt;Not generic advice. Context-aware actions for your actual situation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free to try — no signup: growl-app.vercel.app&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built solo, Kanagawa, Japan. Former restaurant owner. Day 365.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Packed a 25-Seat Bar With 80 People by Accident. Then I Learned It Was Called STP.</title>
      <dc:creator>naoanao</dc:creator>
      <pubDate>Sun, 31 May 2026 06:53:12 +0000</pubDate>
      <link>https://dev.to/naoanao/i-packed-a-25-seat-bar-with-80-people-by-accident-then-i-learned-it-was-called-stp-1ha</link>
      <guid>https://dev.to/naoanao/i-packed-a-25-seat-bar-with-80-people-by-accident-then-i-learned-it-was-called-stp-1ha</guid>
      <description>&lt;p&gt;When I invited "everyone" to my bar event, 12 people showed up.&lt;/p&gt;

&lt;p&gt;When I invited only "regulars who like jazz," 80 people showed up in a 25-seat room.&lt;/p&gt;

&lt;p&gt;Same bar. Same night. Completely different result.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Did Differently
&lt;/h2&gt;

&lt;p&gt;The first event, I promoted to everyone I knew. Posted flyers everywhere. Told every customer.&lt;/p&gt;

&lt;p&gt;12 showed up.&lt;/p&gt;

&lt;p&gt;For the second event, I got specific. I had 30 regulars who always stayed late on Thursdays. Jazz fans. I called them personally — not texted, called — and said: "This Thursday is for you. Don't tell everyone."&lt;/p&gt;

&lt;p&gt;The exclusivity did something. Those 30 each brought someone.&lt;/p&gt;

&lt;p&gt;80 people. Fire code violations. Best night of the year.&lt;/p&gt;




&lt;h2&gt;
  
  
  What STP Actually Is
&lt;/h2&gt;

&lt;p&gt;Two years ago, I learned the marketing term for what I'd done by accident: STP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Segmentation&lt;/strong&gt;: Divide your market into groups with shared characteristics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Targeting&lt;/strong&gt;: Choose one group to focus on. Not "everyone." One group.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Positioning&lt;/strong&gt;: Design your message to speak directly to that group's specific needs and desires.&lt;/p&gt;

&lt;p&gt;I'd segmented (regulars vs. casual customers), targeted (jazz fans who come on Thursdays), and positioned (exclusive, personal, "this is for you").&lt;/p&gt;

&lt;p&gt;Most small businesses skip segmentation entirely. They aim at "everyone who might like our product" and wonder why nothing lands.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Uncomfortable Truth
&lt;/h2&gt;

&lt;p&gt;Targeting feels wrong at first. You're deliberately excluding people.&lt;/p&gt;

&lt;p&gt;But exclusion is the point.&lt;/p&gt;

&lt;p&gt;When you speak to everyone, you're relevant to no one. When you speak to one specific person's situation, everyone in that situation feels seen.&lt;/p&gt;

&lt;p&gt;The 80 people who showed up that night weren't all jazz fans. But they were all friends of jazz fans. The targeting created a word-of-mouth chain that a general invitation never would have.&lt;/p&gt;




&lt;h2&gt;
  
  
  How I Use This Now
&lt;/h2&gt;

&lt;p&gt;I built Growl because I saw this pattern failing in small businesses everywhere.&lt;/p&gt;

&lt;p&gt;Most restaurant owners, salon owners, and contractors market the same way: post something generic on Instagram, hope someone sees it, repeat.&lt;/p&gt;

&lt;p&gt;Growl uses STP under the hood. When you answer 5 questions about your business, it segments your market, identifies your highest-value customer type, and positions your weekly content to speak directly to them.&lt;/p&gt;

&lt;p&gt;The output isn't generic content. It's content written for the specific person most likely to become your loyal customer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free to try — no signup, no credit card.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://growl-app.vercel.app" rel="noopener noreferrer"&gt;growl-app.vercel.app&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built solo, Kanagawa, Japan. Former bar and restaurant owner. Day 365.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>My Burger Shop Was Losing to a Chain. I Used 3C Analysis to Find the One Thing They Couldn't Copy.</title>
      <dc:creator>naoanao</dc:creator>
      <pubDate>Sun, 31 May 2026 06:49:25 +0000</pubDate>
      <link>https://dev.to/naoanao/my-burger-shop-was-losing-to-a-chain-i-used-3c-analysis-to-find-the-one-thing-they-couldnt-copy-4fci</link>
      <guid>https://dev.to/naoanao/my-burger-shop-was-losing-to-a-chain-i-used-3c-analysis-to-find-the-one-thing-they-couldnt-copy-4fci</guid>
      <description>&lt;p&gt;The burger place down the street got better. Faster service. Cleaner space. Lower prices.&lt;/p&gt;

&lt;p&gt;My numbers dropped 20% in two months.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I was doing everything the same. That was the problem.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Did Wrong First
&lt;/h2&gt;

&lt;p&gt;I responded the way most small business owners do: panic-discounted.&lt;/p&gt;

&lt;p&gt;Lunch special. Happy hour. Buy-one-get-one.&lt;/p&gt;

&lt;p&gt;It slowed the bleeding for a week. Then we were back to the same numbers, but now with lower margins.&lt;/p&gt;

&lt;p&gt;The chain didn't care about my discount. They had 50 locations covering their fixed costs. I had one shop.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Moment I Actually Looked
&lt;/h2&gt;

&lt;p&gt;A friend showed me something called 3C Analysis. Customer, Competitor, Company.&lt;/p&gt;

&lt;p&gt;I'd been running on gut feeling for three years. I sat down and actually mapped it out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Competitor (the chain):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speed: 4 minutes average&lt;/li&gt;
&lt;li&gt;Price: 15–20% cheaper&lt;/li&gt;
&lt;li&gt;Consistency: identical every time&lt;/li&gt;
&lt;li&gt;Weakness: nobody knew the staff's name. Nobody came back because of a &lt;em&gt;person&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Customer (the regulars I still had):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They weren't coming for the price&lt;/li&gt;
&lt;li&gt;Three of them brought their kids every Friday — same table, same order&lt;/li&gt;
&lt;li&gt;One guy had eaten my original burger the day I opened&lt;/li&gt;
&lt;li&gt;They were coming because &lt;em&gt;I&lt;/em&gt; knew their order&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Company (what I actually had):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I remembered people&lt;/li&gt;
&lt;li&gt;I'd changed the menu based on what one customer mentioned she missed&lt;/li&gt;
&lt;li&gt;My burgers weren't consistent — but when they were great, people talked about it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The gap was obvious once I wrote it down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The chain was selling burgers. I was selling belonging.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What Changed After
&lt;/h2&gt;

&lt;p&gt;I stopped trying to compete on speed or price. Completely.&lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I put a chalkboard up with "this week's special" written by hand — different every week&lt;/li&gt;
&lt;li&gt;I learned the names of every regular who came more than twice&lt;/li&gt;
&lt;li&gt;I started a "founder's table" concept — Friday lunch, I sat with whoever was there&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Revenue recovered in six weeks. Not because I got faster or cheaper. Because I stopped pretending I was a chain.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters Now
&lt;/h2&gt;

&lt;p&gt;I built Growl — an AI marketing tool — because I watched too many good small businesses die trying to out-chain the chains.&lt;/p&gt;

&lt;p&gt;Growl runs 3C analysis automatically. Every week, it scans what your competitors are doing, what your customers are saying in reviews, and what makes your business actually different. Then it writes the marketing copy for you.&lt;/p&gt;

&lt;p&gt;Not generic copy. Copy that uses &lt;em&gt;your&lt;/em&gt; differentiation.&lt;/p&gt;

&lt;p&gt;The burger shop insight took me two months of pain to figure out. Growl surfaces it in about 30 seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free to try — no signup needed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://growl-app.vercel.app" rel="noopener noreferrer"&gt;growl-app.vercel.app&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built solo, in Kanagawa, Japan. Former restaurant owner. Day 365.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Was a Karaoke Promoter at 18. 20 Years of Street Hustling Taught Me More About Marketing Than Any Course.</title>
      <dc:creator>naoanao</dc:creator>
      <pubDate>Sun, 31 May 2026 04:58:58 +0000</pubDate>
      <link>https://dev.to/naoanao/i-was-a-karaoke-promoter-at-18-20-years-of-street-hustling-taught-me-more-about-marketing-than-any-eg5</link>
      <guid>https://dev.to/naoanao/i-was-a-karaoke-promoter-at-18-20-years-of-street-hustling-taught-me-more-about-marketing-than-any-eg5</guid>
      <description>&lt;p&gt;&lt;em&gt;(And why I built an AI tool to formalize it)&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;At 18, I stood outside a karaoke bar in Machida, Tokyo, trying to convince strangers to come inside.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7 out of 10 people ignored me completely.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not rudely. Just... walked past like I didn't exist.&lt;/p&gt;

&lt;p&gt;The ones who stopped? I had about 3 seconds. If I didn't say the right thing in those 3 seconds, they kept walking.&lt;/p&gt;

&lt;p&gt;I didn't know it then, but I was running live A/B tests on AIDA — Attention, Interest, Desire, Action — hundreds of times a night. No theory. Just: does this line work or not?&lt;/p&gt;




&lt;h2&gt;
  
  
  The Street Version of a Marketing Funnel
&lt;/h2&gt;

&lt;p&gt;Here's what I figured out by failing in public, repeatedly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; wasn't about being loud. It was about saying something specific enough to make someone's brain stop.&lt;/p&gt;

&lt;p&gt;"Free room on the 4th floor" stopped more people than "karaoke tonight." Specificity beats enthusiasm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interest&lt;/strong&gt; died the moment I started listing features. "8 rooms, sound system, cheap drinks" — nobody cared. But "the couple in front of you just grabbed the last big room" — that got a reaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Desire&lt;/strong&gt; came from social proof, not my pitch. I'd say: "There's already a group of 6 upstairs, you'd fit right in." Real, immediate, visible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action&lt;/strong&gt; was just removing friction. "Come see the room first, no obligation" converted better than "book now."&lt;/p&gt;

&lt;p&gt;I did this for 4 years across different venues. Then I ran a bar. Then a burger shop. Then a local food event. Then a senior IT support company.&lt;/p&gt;

&lt;p&gt;Every single time, the same patterns showed up.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Happened When I Finally Read the Theory
&lt;/h2&gt;

&lt;p&gt;About two years ago, I started studying marketing frameworks properly — AIDA, STP, 3C analysis, SWOT, PEST.&lt;/p&gt;

&lt;p&gt;Every chapter felt like someone had put academic words on things I'd already done wrong, then accidentally right, then wrong again over 20 years.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STP:&lt;/strong&gt; When I ran a bar event and invited "everyone," 12 people came. When I invited only "regulars who like jazz," 80 showed up in a 25-seat room. That's STP. I just didn't have a word for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3C Analysis:&lt;/strong&gt; When my burger shop's numbers dropped, I finally mapped Customer needs vs Competitor gaps vs our own strengths. Found one thing: the burger place down the street had faster service but zero personality. We leaned into personality. Numbers recovered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7Ps:&lt;/strong&gt; I added "People" (the way staff treated regulars) and "Physical Evidence" (the smell of the shop on weekday mornings) to my playbook. These two levers alone changed repeat visit rates.&lt;/p&gt;

&lt;p&gt;The theory was clarifying. But the frameworks themselves were too slow to use in practice. I'd spend hours manually researching competitors, trying to figure out what customers were actually saying online.&lt;/p&gt;




&lt;h2&gt;
  
  
  So I Built Something
&lt;/h2&gt;

&lt;p&gt;Last year, I started building &lt;strong&gt;Growl&lt;/strong&gt; — an AI marketing tool for small business owners.&lt;/p&gt;

&lt;p&gt;The core idea: answer 5 questions about your business, and the AI picks 3 high-impact marketing actions for the week. Not advice. Actual ready-to-copy Instagram posts, Google review replies, and social content — based on your specific situation, your industry, and what's working right now.&lt;/p&gt;

&lt;p&gt;The frameworks — 3C, STP, AIDA, 4P, PEST — are all running under the hood. You don't need to know what they're called. You just get the output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The AI uses David Ogilvy's principle:&lt;/strong&gt; the best selling point is already hidden in your business. You just can't see it because you're too close. Growl surfaces it.&lt;/p&gt;

&lt;p&gt;I'm not an engineer. I built this with AI tools, working 3 hours a day, as a former restaurant owner who got tired of watching small businesses fail at marketing not because they lacked product quality, but because they had no system.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Know After 20 Years + 1 Year of Building
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Specificity converts. Generality doesn't.&lt;/strong&gt; "Free karaoke room" loses to "the last room on the 4th floor." "AI marketing tool" loses to "3 copy-paste actions for your business, every Monday."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The best insight is in your ★2-3 reviews.&lt;/strong&gt; Every complaint is a positioning opportunity. Most owners only read the 5-star ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consistency beats virality.&lt;/strong&gt; My karaoke pitch improved because I did it 200+ nights. Most small business owners post once, see no results, and quit. The AI keeps going.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your background is your differentiation.&lt;/strong&gt; A restaurant owner who also understands STP analysis is not common. Neither is your version of that story.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It Free
&lt;/h2&gt;

&lt;p&gt;Growl is free to start — no signup, no credit card.&lt;/p&gt;

&lt;p&gt;Answer 5 questions about your business → get 3 copy-paste marketing actions in 30 seconds.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://growl-app.vercel.app" rel="noopener noreferrer"&gt;growl-app.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you've ever stared at a blank Instagram screen on Sunday night wondering what to post — this is for you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built solo, with AI, in Kanagawa, Japan. Day 365 of building in public.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>3 hrs/week on restaurant marketing 30 min. Here's the exact system I built.</title>
      <dc:creator>naoanao</dc:creator>
      <pubDate>Fri, 29 May 2026 11:09:39 +0000</pubDate>
      <link>https://dev.to/naoanao/3-hrsweek-on-restaurant-marketing-30-min-heres-the-exact-system-i-built-50cf</link>
      <guid>https://dev.to/naoanao/3-hrsweek-on-restaurant-marketing-30-min-heres-the-exact-system-i-built-50cf</guid>
      <description>&lt;p&gt;Every restaurant owner I know has the same weekly problem.&lt;/p&gt;

&lt;p&gt;You know you should post on Instagram. Reply to Google reviews. Run a promotion. But every week you stare at a blank screen: &lt;em&gt;"What should I actually do?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I ran my burger shop in Japan with this exact problem for years. 3+ hours every Sunday just figuring out &lt;em&gt;what to do&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix: local competitor intel + AI = 3 specific actions per week
&lt;/h2&gt;

&lt;p&gt;After 6 months of building and testing, here's what actually works:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Scan what competitors in your area did THIS week (not generic industry trends)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Step 2:&lt;/strong&gt; Find the gap — what are they doing that you're not?&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Step 3:&lt;/strong&gt; Generate 3 specific, copy-ready actions from that intel&lt;/p&gt;

&lt;p&gt;That's it. Three actions. You can actually do three things.&lt;/p&gt;

&lt;h2&gt;
  
  
  My current weekly routine
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mon 8am:&lt;/strong&gt; Check 3 auto-generated actions (2 min)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mon 8:30am:&lt;/strong&gt; Schedule the Instagram post (10 min)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tue:&lt;/strong&gt; Reply to Google reviews using the template (5 min)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thu:&lt;/strong&gt; Run the promotion idea if it fits (15 min)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Total: ~30 minutes. Before: 3+ hours.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I built Growl to automate this
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://growl-app.vercel.app" rel="noopener noreferrer"&gt;Growl&lt;/a&gt; does this automatically for any restaurant owner.&lt;/p&gt;

&lt;p&gt;Answer 5 questions about your restaurant once. Every week it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs live competitor research in your area (Tavily real-time search)&lt;/li&gt;
&lt;li&gt;Generates 3 specific copy-ready marketing actions&lt;/li&gt;
&lt;li&gt;Delivers: Instagram post copy, Google review reply template, local promo idea with timing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Free to try. No signup required.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The technical bit (for builders)
&lt;/h2&gt;

&lt;p&gt;Stack: Next.js + Groq LLaMA 3.3 70B (~500 tok/s) + Tavily live search + Cloudflare D1&lt;/p&gt;

&lt;p&gt;The key insight: LLMs are useless for local marketing without &lt;em&gt;current, local&lt;/em&gt; data. Generic prompts give generic advice. Grounding with Tavily real-time search is what makes this work.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://growl-app.vercel.app" rel="noopener noreferrer"&gt;Try it free → growl-app.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Day 363 of building solo. $0 revenue — keeping it honest.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  restaurant #marketing #ai #buildinpublic
&lt;/h1&gt;

</description>
      <category>restaurant</category>
      <category>marketing</category>
      <category>ai</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>How I Built an Autonomous AI Agent With LangGraph + Groq That Runs My Marketing While I Sleep</title>
      <dc:creator>naoanao</dc:creator>
      <pubDate>Thu, 28 May 2026 23:39:00 +0000</pubDate>
      <link>https://dev.to/naoanao/how-i-built-an-autonomous-ai-agent-with-langgraph-groq-that-runs-my-marketing-while-i-sleep-3615</link>
      <guid>https://dev.to/naoanao/how-i-built-an-autonomous-ai-agent-with-langgraph-groq-that-runs-my-marketing-while-i-sleep-3615</guid>
      <description>&lt;p&gt;Building autonomous agents that actually &lt;em&gt;do things&lt;/em&gt; -- not just chat -- requires solving a few non-obvious problems. Here's what I learned building Sage, an AI system running my restaurant's marketing since January 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With "Autonomous" AI Systems
&lt;/h2&gt;

&lt;p&gt;Most AI agents respond to prompts. True autonomy means:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Runs on schedule without human input&lt;/li&gt;
&lt;li&gt;Makes decisions (post today? skip? retry?)&lt;/li&gt;
&lt;li&gt;Handles errors without crashing&lt;/li&gt;
&lt;li&gt;Works when your computer is off&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I needed all four for Sage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Cloudflare Worker] -&amp;gt; [Flask API via ngrok] -&amp;gt; [LangGraph] -&amp;gt; [Groq] -&amp;gt; [Post]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why LangGraph
&lt;/h3&gt;

&lt;p&gt;Conditional edges make agents robust. Instead of crashing on bad content, it retries. Instead of posting daily like a bot, it randomly skips 20% of posts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langgraph.graph&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;StateGraph&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;END&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;check_daily_limit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mf"&gt;0.20&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;skip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# appear human
&lt;/span&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;generate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;validate_content&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;regenerate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;retry_count&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;skip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;post&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;workflow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;StateGraph&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PostState&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;workflow&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_conditional_edges&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;check_limit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;check_daily_limit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;skip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;END&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;generate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;generate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;workflow&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_conditional_edges&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;validate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;validate_content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;post&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;post&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;regenerate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;generate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;skip&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;END&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why Groq Over OpenAI
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Speed&lt;/th&gt;
&lt;th&gt;Cost/1M tokens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI GPT-4o&lt;/td&gt;
&lt;td&gt;~100 tok/s&lt;/td&gt;
&lt;td&gt;$15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Groq Llama 3.3 70B&lt;/td&gt;
&lt;td&gt;~500 tok/s&lt;/td&gt;
&lt;td&gt;$0.59&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;5x faster, 25x cheaper. For 10+ daily LLM calls, this matters.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;groq&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Groq&lt;/span&gt;
&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Groq&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GROQ_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;llama-3.3-70b-versatile&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;system_prompt&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Identity Layer
&lt;/h3&gt;

&lt;p&gt;Three files control all content generation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;identity.json&lt;/code&gt; -- your niche, tone, audience, brand&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;SOUL.md&lt;/code&gt; -- your values and communication style&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;HEARTBEAT.md&lt;/code&gt; -- your autonomous daily schedule&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Change these files and every piece of content shifts immediately. It's not a tool you manage -- it's a clone of you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Solving "PC Turns Off"
&lt;/h3&gt;

&lt;p&gt;Cloudflare Workers (free tier) acts as the persistent scheduler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;scheduled&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;BACKEND_URL&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/api/schedule/trigger`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SAGE_API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;daily_blog&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When Flask is running (PC on), Worker hits it via ngrok tunnel. When PC is off, Worker logs a miss.&lt;/p&gt;

&lt;h3&gt;
  
  
  Human-Like Randomization
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hashlib&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;should_post_today&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;seed_date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Deterministic: same result for same date, 2 days off per week
&lt;/span&gt;    &lt;span class="n"&gt;week_seed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hashlib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;md5&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;seed_date&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;hexdigest&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;week_seed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;off_days&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;weekday&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;off_days&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_delay_seconds&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;randint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2400&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 2-40 min random delay
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Results After 5 Months
&lt;/h2&gt;

&lt;p&gt;Working: 360+ blog articles published, 700+ social posts, ~3 hrs/week saved on research&lt;/p&gt;

&lt;p&gt;Not working yet: 3 upvotes on Product Hunt launch, $0 revenue on $49 Blueprint&lt;/p&gt;

&lt;p&gt;The system works. Distribution is the hard problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Products
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://naofumi3.gumroad.com/l/apvbzh" rel="noopener noreferrer"&gt;Sage Blueprint&lt;/a&gt; -- full source code + setup wizard, $49 one-time&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://growl-app.vercel.app" rel="noopener noreferrer"&gt;Growl&lt;/a&gt; -- restaurant-specific version with 3C analysis + weekly marketing plans, free to try&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy to answer technical questions about LangGraph routing, Groq integration, or the Cloudflare/ngrok bridge.&lt;/p&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>langgraph</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I Built an AI Clone of Myself to Run My Restaurant's Marketing While I Sleep (and Sold the Blueprint for $49)</title>
      <dc:creator>naoanao</dc:creator>
      <pubDate>Thu, 28 May 2026 23:33:04 +0000</pubDate>
      <link>https://dev.to/naoanao/i-built-an-ai-clone-of-myself-to-run-my-restaurants-marketing-while-i-sleep-and-sold-the-4fl9</link>
      <guid>https://dev.to/naoanao/i-built-an-ai-clone-of-myself-to-run-my-restaurants-marketing-while-i-sleep-and-sold-the-4fl9</guid>
      <description>&lt;p&gt;I'm a restaurant owner in Japan. For most of 2025, I was spending 3+ hours every week on competitor research — manually checking what nearby restaurants were posting, what events were coming up locally, what food trends were emerging.&lt;/p&gt;

&lt;p&gt;I couldn't keep up with social media, blogging, AND running a physical restaurant.&lt;/p&gt;

&lt;p&gt;So I built two things.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Growl — AI Marketing Copilot for Restaurant Owners
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://growl-app.vercel.app" rel="noopener noreferrer"&gt;Growl&lt;/a&gt; connects your restaurant's menu, reviews, and local market data to generate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Weekly 3-action marketing plan&lt;/strong&gt; — the highest-ROI moves for YOUR restaurant this week&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;7 days of social content&lt;/strong&gt; ready to copy-paste&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review responses&lt;/strong&gt; that match your restaurant's tone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Competitor intelligence&lt;/strong&gt; — what other local restaurants are doing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 3C competitor analysis that used to take me 3+ hours? It now takes 2 minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Sage Blueprint — My Autonomous AI Content System ($49 one-time)
&lt;/h3&gt;

&lt;p&gt;After building Growl, I realized I was still manually posting to social media, writing blog articles, and running market research for my own brand.&lt;/p&gt;

&lt;p&gt;So I built Sage — an AI clone of myself that runs 24/7:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Posts to Bluesky/social daily, &lt;strong&gt;in my voice&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Publishes a blog article every morning at 9am&lt;/li&gt;
&lt;li&gt;Scans the market for trends at 3am&lt;/li&gt;
&lt;li&gt;Generates content ideas based on past performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The "identity layer" is three files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;identity.json&lt;/code&gt; — your niche, tone, audience, brand name&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;SOUL.md&lt;/code&gt; — your values, communication style&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;HEARTBEAT.md&lt;/code&gt; — your autonomous schedule&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Change these files → everything shifts. It's not a tool you manage. It's a clone of you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Running in production since January 2026.&lt;/strong&gt; Sage has now published 360+ blog articles, 700+ social posts, and conducted daily market scans — all without me touching it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Python/Flask → LangGraph → Groq (Llama 3.3 70B) → Cloudflare Workers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key design decisions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Groq instead of OpenAI?&lt;/strong&gt; Speed and cost. Groq runs Llama 3.3 70B at ~500 tokens/second. For a system that needs to generate content 10+ times per day, latency matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why LangGraph?&lt;/strong&gt; The autonomous agent needs to make decisions — "should I post today or skip?", "is this content good enough?". LangGraph's conditional routing handles this cleanly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Cloudflare Workers?&lt;/strong&gt; My PC doesn't stay on 24/7. Cloudflare Workers act as a persistent scheduler that pings my local Flask server via ngrok tunnel when it's running, and handles the schedule when it's not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The "human-like" layer:&lt;/strong&gt; The system randomly skips 20% of posts, adds 2-40 minute random delays, and takes 2 random "days off" per week. This prevents the mechanical regularity that gets flagged by algorithms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results (Honest Numbers)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Growl&lt;/strong&gt;: Just launched on Product Hunt (May 2026). 3 upvotes. Cold start is real.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sage Blueprint&lt;/strong&gt;: Listed on Gumroad at $49. &lt;a href="https://naofumi3.gumroad.com/l/apvbzh" rel="noopener noreferrer"&gt;Link here&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content output&lt;/strong&gt;: 360+ articles, 700+ social posts generated autonomously&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time saved&lt;/strong&gt;: ~3 hours/week on competitor research alone&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Revenue so far: $0. Working on distribution now.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Building the system was the easy part.&lt;/strong&gt; Distribution is where I'm stuck. The product works. Getting it in front of the right people is the actual problem.&lt;/p&gt;

&lt;p&gt;If you're building something similar or you run a restaurant/small business and want to try Growl free, I'd love honest feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy to answer technical questions&lt;/strong&gt; about the LangGraph architecture, the Groq integration, or how the autonomous scheduling works.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm documenting this entire journey publicly. If you want to follow along:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Growl: &lt;a href="https://growl-app.vercel.app" rel="noopener noreferrer"&gt;growl-app.vercel.app&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Blueprint: &lt;a href="https://naofumi3.gumroad.com/l/apvbzh" rel="noopener noreferrer"&gt;naofumi3.gumroad.com/l/apvbzh&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>indiehacker</category>
      <category>webdev</category>
    </item>
    <item>
      <title>1,532 Posts. 30 Followers. 0 Sales. The Hard Lesson From Building an Autonomous AI Content System.</title>
      <dc:creator>naoanao</dc:creator>
      <pubDate>Fri, 22 May 2026 12:38:09 +0000</pubDate>
      <link>https://dev.to/naoanao/1532-posts-30-followers-0-sales-the-hard-lesson-from-building-an-autonomous-ai-content-system-7i9</link>
      <guid>https://dev.to/naoanao/1532-posts-30-followers-0-sales-the-hard-lesson-from-building-an-autonomous-ai-content-system-7i9</guid>
      <description>&lt;p&gt;My AI posted 1,532 times while I was cooking burgers. Nobody noticed.&lt;/p&gt;

&lt;p&gt;That's not a metaphor. I run a burger shop in Japan. Since January 2026, I've been running an autonomous AI system — I call it Sage AI — that posts content to Bluesky on two accounts (one English, one Japanese) around the clock. No manual scheduling. No copy-paste. The system wakes up, checks Notion for topics, generates posts, and publishes them while I'm prepping food or cleaning the kitchen.&lt;/p&gt;

&lt;p&gt;By any measure of output, it works. By any measure of results, I built the wrong thing first.&lt;/p&gt;

&lt;h2&gt;
  
  
  The backstory
&lt;/h2&gt;

&lt;p&gt;I had no marketing background when I opened the restaurant. Still don't, technically. I didn't know what 3C analysis was. I didn't know what STP meant. I just knew that my competitors seemed to know something I didn't, and that figuring out what that was took me about 3 hours every week of manual research I didn't have time for.&lt;/p&gt;

&lt;p&gt;So I did what I do: I built software. First Growl — an AI tool that automates competitor research and marketing strategy for small business owners like me. Then Sage AI — the content engine that would market Growl to the world while I stayed behind the counter.&lt;/p&gt;

&lt;p&gt;The system is technically real. Flask/Python backend, 13 autonomous background threads, LangGraph for multi-step reasoning, CrewAI for agent orchestration, Groq for fast generation, Cloudflare Workers for 24/7 uptime. It actually runs. It actually posts. It actually generates content while I'm at the restaurant.&lt;/p&gt;

&lt;p&gt;The mistake was thinking that was the hard part.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers (honest version)
&lt;/h2&gt;

&lt;p&gt;Here's what 140 days of autonomous content looks like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;kanagawatable&lt;/strong&gt; (English Bluesky account): 247 posts. 6 followers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;kanagawajapan&lt;/strong&gt; (Japanese Bluesky account): 1,285 posts. 24 followers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Combined&lt;/strong&gt;: 1,532 posts. 30 followers. ¥0 in revenue.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I want to be precise: the Stripe payment links for Growl are real. If someone clicked and subscribed, the money would actually arrive. The infrastructure works end-to-end. But nobody has clicked, because nobody is watching.&lt;/p&gt;

&lt;p&gt;Automation solved the wrong problem. I thought the bottleneck was content production. It wasn't. It was credibility and community — and those things don't scale the same way posts do.&lt;/p&gt;

&lt;h2&gt;
  
  
  The lesson
&lt;/h2&gt;

&lt;p&gt;1,532 posts at 10-15 per day taught me something I couldn't have learned any other way:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Volume into a void just creates more void.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Posting 15 times a day to 6 followers doesn't compound. It doesn't build trust. It creates a record that, when someone does finally visit the profile, looks automated — because it is. The algorithm can't save you if no real person has ever engaged with your content. The engagement signals don't exist.&lt;/p&gt;

&lt;p&gt;Meanwhile, the one post I wrote honestly about failure — this one, right here — is already reaching more people than a week of automated output.&lt;/p&gt;

&lt;p&gt;The insight isn't that automation is bad. Sage AI is genuinely useful — I don't want to go back to doing any of that manually. The insight is that automation works &lt;em&gt;after&lt;/em&gt; you've built the community, not instead of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm changing
&lt;/h2&gt;

&lt;p&gt;Three things, starting now:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Community first.&lt;/strong&gt; Honest story, honest numbers, genuine conversation. I've been ignoring the best channels for my actual audience while posting into the Bluesky void.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Bluesky: volume to conversation.&lt;/strong&gt; Switching from 10-15 posts/day to 1-2 posts/day that end with a real question. Every post must invite a reply or it doesn't go out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. ProductHunt launch.&lt;/strong&gt; Growl is ready. Real product, real payments, real use cases. If you want the full technical architecture — how I built the autonomous posting system, the Cloudflare Workers setup, the LangGraph pipeline — I documented everything in the &lt;a href="https://naofumi3.gumroad.com/l/apvbzh" rel="noopener noreferrer"&gt;Sage 3.0 Developer Blueprint&lt;/a&gt; ($49, one-time).&lt;/p&gt;

&lt;p&gt;Growl itself is free to try at &lt;a href="https://growl-app.vercel.app" rel="noopener noreferrer"&gt;growl-app.vercel.app&lt;/a&gt; — no signup required.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question
&lt;/h2&gt;

&lt;p&gt;I know I'm not the only builder who built the engine before the audience. If you've been through this — the "I have a working product and no one knows it exists" phase — what actually moved the needle for you first? Platform? One specific post? A community like this one?&lt;/p&gt;

&lt;p&gt;Asking because I'm going to try to replicate whatever actually works.&lt;/p&gt;




&lt;p&gt;A solo developer in Japan. Building Sage AI + Growl. Day 140 of building in public.&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>solopreneur</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
