<?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: Crystal Brackett</title>
    <description>The latest articles on DEV Community by Crystal Brackett (@crystal_brackett_8fbb2556).</description>
    <link>https://dev.to/crystal_brackett_8fbb2556</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%2F3861315%2Fdf8e787d-c559-46a2-ad98-ae26aab14242.jpg</url>
      <title>DEV Community: Crystal Brackett</title>
      <link>https://dev.to/crystal_brackett_8fbb2556</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/crystal_brackett_8fbb2556"/>
    <language>en</language>
    <item>
      <title>How We Built RoastGram: AI-Powered Roasts That Actually Deliver (Literally)</title>
      <dc:creator>Crystal Brackett</dc:creator>
      <pubDate>Sat, 04 Apr 2026 19:40:50 +0000</pubDate>
      <link>https://dev.to/crystal_brackett_8fbb2556/how-we-built-roastgram-ai-powered-roasts-that-actually-deliver-literally-m1o</link>
      <guid>https://dev.to/crystal_brackett_8fbb2556/how-we-built-roastgram-ai-powered-roasts-that-actually-deliver-literally-m1o</guid>
      <description>&lt;p&gt;&lt;a href="https://roastgram.polsia.app" rel="noopener noreferrer"&gt;https://roastgram.polsia.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hey! Built this quickly because I got tired of people asking me to write &lt;br&gt;
their roasts/resignation letters/breakup texts. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pick a category (Roast, Resign, Breakup)&lt;/li&gt;
&lt;li&gt;Enter the recipient's name + optional context&lt;/li&gt;
&lt;li&gt;Choose tone (Gentle, Savage, Nuclear, Wholesome)&lt;/li&gt;
&lt;li&gt;AI generates a personalized message&lt;/li&gt;
&lt;li&gt;Sends via branded email instantly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The tech:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude AI for message generation&lt;/li&gt;
&lt;li&gt;Edge functions for serverless compute&lt;/li&gt;
&lt;li&gt;Email delivery with HTML formatting&lt;/li&gt;
&lt;li&gt;One-click send, no templates to fill&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; $3/message. 4 tones. No subscriptions, no BS.&lt;/p&gt;

&lt;p&gt;Current users are sending these to friends, coworkers, exes. Pretty viral already &lt;br&gt;
(getting shares). Would love feedback on tone, categories, or pricing.&lt;/p&gt;

&lt;p&gt;Tech stack: Express + Claude API + email delivery&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dev.to (Blog-Style – Behind-the-Build)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Best for: Developer community, storytelling, SEO&lt;/p&gt;

&lt;p&gt;Post Title: How We Built RoastGram: AI-Powered Roasts That Actually Deliver (Literally)&lt;/p&gt;

&lt;h1&gt;
  
  
  How We Built RoastGram: AI-Powered Roasts That Actually Deliver (Literally)
&lt;/h1&gt;

&lt;p&gt;Roasts are funny. Resignation letters are cathartic. Breakup texts are necessary.&lt;br&gt;
But they're all hard to write without sounding generic—or too mean.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;RoastGram&lt;/strong&gt;. Here's how.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;"Can you write me a roast?" is a question I got tired of answering. Same with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"I need to resign dramatically but professionally"&lt;/li&gt;
&lt;li&gt;"I need to break up with someone over email"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Generic templates exist, but they all sound like... templates.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;RoastGram automates the funny part with AI:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You pick a category&lt;/strong&gt; (Roast / Resignation Letter / Breakup Message)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You pick a tone&lt;/strong&gt; (Gentle / Savage / Nuclear / Wholesome)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You add context&lt;/strong&gt; (recipient's name, optional details)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;We generate personalized copy&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You send it via email&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. $3 per message.&lt;/p&gt;

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

&lt;p&gt;We're keeping it simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI&lt;/strong&gt;: Claude API for natural, hilarious message generation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Express.js + serverless edge functions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email&lt;/strong&gt;: HTML-formatted templates with branding&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React on Vite&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Claude for Generation?
&lt;/h3&gt;

&lt;p&gt;Claude's instruction-following is &lt;em&gt;perfect&lt;/em&gt; for this. You can say:&lt;/p&gt;

&lt;p&gt;Generate a SAVAGE roast for someone named [name] who [context].&lt;br&gt;
Keep it under 150 words. Make them laugh, not cry.&lt;/p&gt;

&lt;p&gt;And it just... works. The tone consistency across "Gentle" through "Nuclear" is &lt;br&gt;
built right into the prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Email Delivery
&lt;/h2&gt;

&lt;p&gt;Early on, we sent roasts as plain text. Bad idea. People wanted the full &lt;br&gt;
comedic experience—formatting, branding, a signature line.&lt;/p&gt;

&lt;p&gt;So we built HTML email templates with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dark theme (because roasts are dark)&lt;/li&gt;
&lt;li&gt;Orange branding (because why not)&lt;/li&gt;
&lt;li&gt;Social sharing footer (viral loop, baby)&lt;/li&gt;
&lt;li&gt;Proper multipart/alternative encoding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result: Roasts land in inboxes &lt;em&gt;formatted&lt;/em&gt;, not as walls of text.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Viral Loop
&lt;/h2&gt;

&lt;p&gt;The magic: every email has a footer.&lt;/p&gt;

&lt;p&gt;"You've been RoastGrammed! Make one yourself: roastgram.polsia.app"&lt;/p&gt;

&lt;p&gt;Friends get roasted → They visit the site → They buy roasts for &lt;em&gt;their&lt;/em&gt; friends → &lt;br&gt;
Exponential growth (theoretically).&lt;/p&gt;

&lt;p&gt;We're already seeing people send free roasts to friends just to get them on the platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing &amp;amp; Traction
&lt;/h2&gt;

&lt;p&gt;$3/message. No subscriptions. No upsells.&lt;/p&gt;

&lt;p&gt;Early traction: Event planners buying them as gifts, prank creators testing content, &lt;br&gt;
gift influencers adding them to shopping guides.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tone matters more than format.&lt;/strong&gt; A "Gentle" roast vs a "Nuclear" roast are two &lt;em&gt;completely&lt;/em&gt; different products.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;People prefer email over SMS.&lt;/strong&gt; It feels more "official" even though it's a roast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Virality requires friction removal.&lt;/strong&gt; We started with "copy to clipboard." Now: one-click email send.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context is everything.&lt;/strong&gt; "Roast this person" generates generic roasts. "Roast John who loves pineapple on pizza" generates &lt;em&gt;perfect&lt;/em&gt; roasts.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Testing different AI tones (Pirate? Shakespearean? Legal Contract?)&lt;/li&gt;
&lt;li&gt;Marketplace for custom roast templates&lt;/li&gt;
&lt;li&gt;Bulk roasts for events (weddings, bachelor parties, office pranks)&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Grab a roast, a resignation letter, or a breakup message at &lt;strong&gt;&lt;a href="https://roastgram.polsia.app" rel="noopener noreferrer"&gt;https://roastgram.polsia.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Would love to hear if you'd use this. Drop feedback below! 🔥&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Interested in how to integrate Claude API into your projects? Happy to share templates.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>startup</category>
      <category>github</category>
    </item>
  </channel>
</rss>
