<?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: Vix</title>
    <description>The latest articles on DEV Community by Vix (@kaelctu3).</description>
    <link>https://dev.to/kaelctu3</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4021935%2Fc5ff0d85-5a36-4197-be6c-ca9f8f712110.jpg</url>
      <title>DEV Community: Vix</title>
      <link>https://dev.to/kaelctu3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kaelctu3"/>
    <language>en</language>
    <item>
      <title>I'm not an engineer. I built a prompt-structuring tool anyway, using Claude Code — here's what actually went wrong</title>
      <dc:creator>Vix</dc:creator>
      <pubDate>Sat, 18 Jul 2026 06:17:01 +0000</pubDate>
      <link>https://dev.to/kaelctu3/im-not-an-engineer-i-built-a-prompt-structuring-tool-anyway-using-claude-code-heres-what-59d8</link>
      <guid>https://dev.to/kaelctu3/im-not-an-engineer-i-built-a-prompt-structuring-tool-anyway-using-claude-code-heres-what-59d8</guid>
      <description>&lt;h1&gt;
  
  
  I'm not an engineer. I built a prompt-structuring tool anyway, using Claude Code — here's what actually went wrong
&lt;/h1&gt;

&lt;h2&gt;
  
  
  🤔 The problem
&lt;/h2&gt;

&lt;p&gt;I don't write code. I'm not an engineer, day to day — but I use AI chatbots constantly, and I kept running into the same annoying pattern.&lt;/p&gt;

&lt;p&gt;I'd type something lazy into ChatGPT or Claude — half a sentence, no context, whatever came to mind first — and get back a mediocre answer. Then, later, I'd realize: if I'd just written a slightly better prompt, I probably would've gotten a much better answer on the first try. Instead I'd burned a chunk of my monthly quota (sometimes on a paid plan) on something forgettable.&lt;/p&gt;

&lt;p&gt;I figured other people had to be doing the same thing. So I built something for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 What I built
&lt;/h2&gt;

&lt;p&gt;It's called &lt;strong&gt;Deep Prompt Studio&lt;/strong&gt;. You paste in a rough, unpolished prompt — the kind you'd type without thinking too hard — and it hands back a detailed version that pulls in whichever pieces actually matter for that request: role, task, constraints, output format, and more. It's not tuned for one specific chatbot; it's meant to work well whether you're pasting the result into ChatGPT, Claude, Gemini, or something else.&lt;br&gt;
&lt;strong&gt;&lt;a href="https://deep-prompt-studio.vercel.app" rel="noopener noreferrer"&gt;https://deep-prompt-studio.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠 Tech stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Next.js (App Router, Turbopack) + TypeScript&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;Anthropic Claude API for the actual prompt enhancement&lt;/li&gt;
&lt;li&gt;Stripe for payments&lt;/li&gt;
&lt;li&gt;Upstash Redis for storage&lt;/li&gt;
&lt;li&gt;Deployed on Vercel&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚙️ How it works
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tone selector&lt;/strong&gt; — Default, Professional, Casual &amp;amp; friendly, Concise, Direct&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Target-model optimization&lt;/strong&gt; — Generic, ChatGPT, Claude, Gemini, Midjourney&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snippets&lt;/strong&gt; — save reusable context/tone/role info and toggle them on or off per enhance (free: up to 3, Pro: unlimited)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Variable fill-in&lt;/strong&gt; — template placeholders like &lt;code&gt;{{product name}}&lt;/code&gt; you can reuse&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refine mode&lt;/strong&gt; — if your prompt is too vague, it asks a couple of follow-up questions before enhancing, instead of guessing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Template gallery&lt;/strong&gt; — writing, coding, business, learning, SEO, customer support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Library&lt;/strong&gt; — saved enhanced prompts (Pro)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Free tier is 20 enhances/month with up to 3 snippets. Pro is $9/month for unlimited enhances, unlimited snippets, and an unlimited saved library.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚧 What was hard
&lt;/h2&gt;

&lt;p&gt;Here's the part I actually want to talk about, because it's the honest version, not the highlight-reel version.&lt;/p&gt;

&lt;p&gt;The first version of this tool wasn't AI at all. It was purely rule-based — mechanically slotting your rough text into fixed templates. I finished it about a week before writing this post. It was also my first webapp ever, and getting even that far took a few days of going back and forth with Claude Code.&lt;/p&gt;

&lt;p&gt;Then I actually tested it, and it wasn't good. Outputs that got forced too rigidly into the template pattern came out unnatural — and in a bunch of cases, that unnaturalness made the AI's actual downstream output &lt;em&gt;worse&lt;/em&gt;, not better. I remember thinking: "even I wouldn't use this. Nobody would."&lt;/p&gt;

&lt;p&gt;Ripping out the rule-based logic and wiring it up to a real AI model (the Claude API) felt like the obvious next step. But I sat on it for a full day before actually committing. Not because I didn't know how — because I didn't want to pay for API usage if I could avoid it. Classic non-engineer hesitation over a cost I didn't fully understand yet. Eventually I admitted the rule-based version was bad enough that the upgrade was clearly worth it, and committed. Wiring up the real integration with Claude Code took about a day from there.&lt;/p&gt;

&lt;p&gt;The genuinely hard part, though, wasn't the coding. It was communicating with the AI.&lt;/p&gt;

&lt;p&gt;When I'd ask Claude Code "is this okay? Any problems?", it would usually say "no problems." Then I'd actually test the thing, and — often — there &lt;em&gt;was&lt;/em&gt; a problem, quietly sitting underneath that reassurance. Since I can't read the code myself, I had no shortcut around this. I had to manually double- and triple-check everything, every single time, just to be sure. That verification loop was tedious. Honestly, kind of boring.&lt;/p&gt;

&lt;p&gt;During improvement passes it got even more repetitive: I'd ask "please look for anything else that could be improved," get changes back, ask again, get more changes, ask again — over and over — until Claude Code eventually said something like "I've now investigated repeatedly and there's genuinely nothing left to improve." Also tedious. But each round visibly moved the product forward, which made stopping early feel like a waste. So I just kept going.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔭 What's next
&lt;/h2&gt;

&lt;p&gt;I honestly don't know yet if this is something people will find useful long-term — it's early, and I'm still actively improving it. Next up is expanding the template gallery and tightening the conversion patterns based on whatever feedback comes in.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Try it
&lt;/h2&gt;

&lt;p&gt;If you want to poke at it: &lt;strong&gt;&lt;a href="https://deep-prompt-studio.vercel.app" rel="noopener noreferrer"&gt;https://deep-prompt-studio.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd genuinely like to know — for those of you who &lt;em&gt;do&lt;/em&gt; write code day to day, does this "AI says no problem, but there secretly was one" thing happen to you too, or is that mostly a non-engineer problem because I can't read the diffs myself?&lt;a href="https://dev.tourl"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Why Your ChatGPT Answers Feel Generic (It's Not the Model's Fault)</title>
      <dc:creator>Vix</dc:creator>
      <pubDate>Thu, 09 Jul 2026 03:25:19 +0000</pubDate>
      <link>https://dev.to/kaelctu3/why-your-chatgpt-answers-feel-generic-its-not-the-models-fault-3mcf</link>
      <guid>https://dev.to/kaelctu3/why-your-chatgpt-answers-feel-generic-its-not-the-models-fault-3mcf</guid>
      <description>&lt;p&gt;A while back I was researching a topic I didn't know much about — the kind of casual, late-night "let me just ask the AI a few questions" session. A few messages in, I asked a follow-up that only made sense in the context of what we'd just been talking about. I didn't restate the subject, because... why would I? We were three messages into the same conversation.&lt;/p&gt;

&lt;p&gt;The answer came back completely off-topic. It had lost track of what "it" referred to, latched onto the wrong noun, and confidently explained something I hadn't asked about at all. Not a small tangent — a whole paragraph about the wrong thing.&lt;/p&gt;

&lt;p&gt;My first reaction was annoyance at the model. My second, more useful reaction came a bit later: I'd been treating it like a person who remembers what we were just discussing and fills in the gaps naturally. It doesn't do that the way a human conversation partner does. If I don't restate the subject, it's genuinely not there for the model — it's not being lazy, there's just nothing to work with.&lt;/p&gt;

&lt;p&gt;So I started over-specifying. Every follow-up got longer: restate the subject, restate what I actually wanted, restate the constraint I cared about. It worked, but some days I didn't have the energy for it — I'd just take the mediocre answer, say "ok thanks," and move on. Which meant I was quietly leaving useful answers on the table half the time, just because typing out the full context felt like a chore.&lt;/p&gt;

&lt;p&gt;Eventually I stopped thinking of it as "the AI being difficult" and started treating it as a simple rule: &lt;strong&gt;if I want it to know something, I have to say it. It won't infer the unstated stuff the way a person would&lt;/strong&gt;, no matter how obvious it feels to me.&lt;/p&gt;

&lt;p&gt;Once that clicked, a few concrete habits followed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Restate the subject, every time
&lt;/h2&gt;

&lt;p&gt;Not "what about the second one" — the actual name of the thing. It costs three words and removes an entire failure mode.&lt;/p&gt;

&lt;h2&gt;
  
  
  Say what you actually want, not just the topic
&lt;/h2&gt;

&lt;p&gt;"Tell me about X" and "I'm trying to decide whether X is worth the switching cost, tell me about X" produce different answers. The second one tells the model what to optimize the answer for. Without it, you get the generic version — technically about the right topic, but not shaped for your actual question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give it the constraint you care about
&lt;/h2&gt;

&lt;p&gt;If budget, time, or a specific tradeoff matters to your decision, say so directly. It won't guess that you're price-sensitive, or that you already tried the obvious thing and it didn't work. That context lives in your head, not in the words on screen — unless you put it there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask for the shape you want the answer in
&lt;/h2&gt;

&lt;p&gt;If you want a short answer, say short. If you want a list you can act on, say that. Left unspecified, you get a default-length paragraph that's rarely the format you actually needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give an example when "good" is hard to describe
&lt;/h2&gt;

&lt;p&gt;Words like "casual" or "detailed" mean different things to different people. If you have something close to what you want — even a sentence — pasting it in as a reference does more than describing the vibe in adjectives.&lt;/p&gt;

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

&lt;p&gt;None of this is a trick. It's just accepting that a model doesn't share the context sitting in my head, and won't reach for it unless I hand it over — even the parts that feel too obvious to mention. The habit that actually fixed my "generic answers" problem wasn't a clever phrase, it was just: stop assuming it remembers or infers what I mean, and say it anyway.&lt;/p&gt;

&lt;p&gt;Still working on doing this consistently when I'm tired and just want a quick answer. Curious whether other people have found a shortcut for that part, or if it's just discipline.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>chatgpt</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
