<?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: Reliqio</title>
    <description>The latest articles on DEV Community by Reliqio (@team_reliqio).</description>
    <link>https://dev.to/team_reliqio</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%2F4135338%2Fd3844983-807a-4347-97ab-bf4d41d6ef38.png</url>
      <title>DEV Community: Reliqio</title>
      <link>https://dev.to/team_reliqio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/team_reliqio"/>
    <language>en</language>
    <item>
      <title>The checklist we go through before shipping AI features to real users</title>
      <dc:creator>Reliqio</dc:creator>
      <pubDate>Thu, 12 Nov 2026 17:01:31 +0000</pubDate>
      <link>https://dev.to/team_reliqio/the-checklist-we-go-through-before-shipping-ai-features-to-real-users-bh7</link>
      <guid>https://dev.to/team_reliqio/the-checklist-we-go-through-before-shipping-ai-features-to-real-users-bh7</guid>
      <description>&lt;p&gt;Every AI feature looks good in a demo. You show it to the team on Friday, everyone's impressed, and then on Monday real users start typing things into it that nobody on the team would ever type.&lt;/p&gt;

&lt;p&gt;We build AI-powered B2C products together with founders at &lt;a href="https://reliqio.com" rel="noopener noreferrer"&gt;Reliqio&lt;/a&gt;, mostly in healthtech, fintech and e-commerce. Somewhere along the way we started keeping a list of things to check before an AI feature goes live. It started as a few notes in a doc and kept growing every time something surprised us. This is the current version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do we even need a model here?
&lt;/h2&gt;

&lt;p&gt;This one gets skipped a lot, including by us. If a filter, a sensible default or a couple of if-statements solve the problem, just ship that. It's cheaper and it won't make things up.&lt;/p&gt;

&lt;p&gt;Our rough rule: AI makes sense when the input is messy. Free text, photos, voice notes, long PDFs. If the whole input fits into three dropdowns, you probably don't need an LLM.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does the user see when it's wrong?
&lt;/h2&gt;

&lt;p&gt;Not "if". It will be wrong sometimes.&lt;/p&gt;

&lt;p&gt;So for each feature we ask: what's the worst realistic wrong answer, and what happens next? Depending on the product that might mean showing where the answer came from, or letting the AI only suggest while the user makes the final call. In health and money apps some questions just shouldn't be answered by a model at all. We send those to fixed, reviewed content or to a real person.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test with real messages, not ours
&lt;/h2&gt;

&lt;p&gt;Prompts written by the team are way too clean. Real people write half a sentence, switch languages midway, paste a screenshot of text, or ask three unrelated things in one message.&lt;/p&gt;

&lt;p&gt;We collect 30-50 real examples before launch (beta users, support chats, user interviews) and keep them in the repo. Every time someone touches the prompt or switches the model, we run them again and compare. It's not a perfect eval, but it catches the obvious regressions before users do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Know the cost per user
&lt;/h2&gt;

&lt;p&gt;A few cents per request sounds like nothing until you multiply it by daily active users and the number of times each of them taps the button. We log tokens for every call and work out cost per active user &lt;em&gt;before&lt;/em&gt; launch. Finding out from the invoice is no fun.&lt;/p&gt;

&lt;p&gt;What usually helps: shorter prompts, a smaller model for the simple stuff, caching answers to questions that come up over and over, and a per-user limit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it on a slow phone
&lt;/h2&gt;

&lt;p&gt;Six seconds is fine on office Wi-Fi. On a phone in the subway it feels like the app froze.&lt;/p&gt;

&lt;p&gt;Stream the response so the first words show up fast. Show some progress for longer tasks. And test on a throttled connection at least once. If it takes longer than a few seconds anyway, it's probably better as a background job with a notification when it's ready.&lt;/p&gt;

&lt;h2&gt;
  
  
  Look at what goes into the prompt
&lt;/h2&gt;

&lt;p&gt;People tell consumer apps a lot. Symptoms, debts, home addresses. Before launch we literally print out what goes into each prompt, remove what the model doesn't need, and check that the provider's data retention settings match what the privacy policy says.&lt;/p&gt;

&lt;p&gt;If you can't explain in one sentence what happens to the user's data, it's not ready yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Have an off switch
&lt;/h2&gt;

&lt;p&gt;Providers go down. Model updates sometimes change behavior with no warning. Every AI feature we ship is behind a feature flag and has a fallback that works without AI. If it breaks at 11pm on a Saturday, someone can turn it off from a dashboard instead of pushing a hotfix through app review.&lt;/p&gt;




&lt;p&gt;Honestly, the model is usually the easy part. Most of the work is everything around it.&lt;/p&gt;

&lt;p&gt;If your team checks something we missed, I'd like to hear about it in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>startup</category>
      <category>productdevelopment</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
