<?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: Navodhya Fernando</title>
    <description>The latest articles on DEV Community by Navodhya Fernando (@navodhyafernando).</description>
    <link>https://dev.to/navodhyafernando</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%2F3561456%2F50d76369-45a9-46f9-bd37-05a16fe00c6b.jpeg</url>
      <title>DEV Community: Navodhya Fernando</title>
      <link>https://dev.to/navodhyafernando</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/navodhyafernando"/>
    <language>en</language>
    <item>
      <title>One More Try: A Private AI Interview Coach Built for a Friend</title>
      <dc:creator>Navodhya Fernando</dc:creator>
      <pubDate>Mon, 05 Oct 2026 04:39:57 +0000</pubDate>
      <link>https://dev.to/navodhyafernando/one-more-try-a-private-ai-interview-coach-built-for-a-friend-27da</link>
      <guid>https://dev.to/navodhyafernando/one-more-try-a-private-ai-interview-coach-built-for-a-friend-27da</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;One More Try&lt;/strong&gt;, a privacy-first AI interview practice app for a friend who is preparing for job interviews.&lt;/p&gt;

&lt;p&gt;The idea came from something simple: when someone practises an interview question, their first answer usually isn't their best one.&lt;/p&gt;

&lt;p&gt;They know the experience. They know what happened. But the first answer might be too vague, miss an important result, lack evidence, or simply not explain their contribution clearly enough.&lt;/p&gt;

&lt;p&gt;Most interview tools generate questions.&lt;/p&gt;

&lt;p&gt;I wanted to build something focused on what happens &lt;strong&gt;after you answer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So One More Try follows this loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CV + Job Description
        ↓
Personalised Interview
        ↓
Answer a Question
        ↓
AI Feedback
        ↓
What Worked
+
Make It Stronger
        ↓
One More Try
        ↓
Compare the Improvement
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The user uploads their real CV and pastes the job description they are preparing for.&lt;/p&gt;

&lt;p&gt;Gemma then uses both to create five personalised interview questions.&lt;/p&gt;

&lt;p&gt;For every answer, the app evaluates things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;relevance to the question&lt;/li&gt;
&lt;li&gt;specificity&lt;/li&gt;
&lt;li&gt;evidence&lt;/li&gt;
&lt;li&gt;individual contribution&lt;/li&gt;
&lt;li&gt;results and impact&lt;/li&gt;
&lt;li&gt;STAR-style structure&lt;/li&gt;
&lt;li&gt;alignment with the role&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of just giving a score, the interface separates feedback into &lt;strong&gt;What worked&lt;/strong&gt; and &lt;strong&gt;Make it stronger&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Then comes the feature the whole project is built around:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One More Try.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The candidate answers the same question again while the feedback is still fresh.&lt;/p&gt;

&lt;p&gt;At the end of the five-question interview, the app produces a final practice summary showing strengths and patterns to continue improving.&lt;/p&gt;

&lt;p&gt;And importantly, the core AI runs &lt;strong&gt;locally&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Your CV and interview answers don't need to be sent to a hosted LLM API.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F45jllcc4stgm8f551v6y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F45jllcc4stgm8f551v6y.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqlpfi8bxo5nxwh9mcosa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqlpfi8bxo5nxwh9mcosa.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuuc8rgpjiitpr3khtcvt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuuc8rgpjiitpr3khtcvt.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgz239d5jq4aaaqrvlbkd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgz239d5jq4aaaqrvlbkd.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu3jxrvzyw43yjvb4020f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu3jxrvzyw43yjvb4020f.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6q7u2q7mi3rhigm32g2o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6q7u2q7mi3rhigm32g2o.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The flow
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Upload a CV&lt;/li&gt;
&lt;li&gt;Paste the target job description&lt;/li&gt;
&lt;li&gt;Select interview difficulty&lt;/li&gt;
&lt;li&gt;Gemma creates five personalised questions&lt;/li&gt;
&lt;li&gt;Answer one question at a time&lt;/li&gt;
&lt;li&gt;Review specific feedback&lt;/li&gt;
&lt;li&gt;Hit &lt;strong&gt;One More Try&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Improve the answer&lt;/li&gt;
&lt;li&gt;Continue through the interview&lt;/li&gt;
&lt;li&gt;Receive a final practice summary&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The UI was intentionally designed to feel more like a focused coaching environment than a traditional dashboard.&lt;/p&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/Navodhya-Fernando/one-more-try.git" rel="noopener noreferrer"&gt;One More Try on GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The project contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;one-more-try/
├── backend/
│   └── FastAPI + Ollama integration
│
├── frontend/
│   └── React + Vite interface
│
├── run-local.sh
├── README.md
└── LICENSE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Running the application locally is intentionally simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull gemma3:1b
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x run-local.sh
./run-local.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The application has a React frontend and a Python FastAPI backend.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Layer
&lt;/h3&gt;

&lt;p&gt;The main AI stack is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gemma 3 1B&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ollama&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;local inference&lt;/li&gt;
&lt;li&gt;structured model outputs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a session begins, the backend extracts text from the CV and combines it with the job description.&lt;/p&gt;

&lt;p&gt;Gemma analyses that context and prepares the interview.&lt;/p&gt;

&lt;p&gt;Instead of generating generic questions like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tell me about yourself.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;the model can ask questions grounded in the candidate's actual experience and the requirements of the role.&lt;/p&gt;

&lt;p&gt;The interview context is kept compact after the initial preparation so later evaluations do not need to resend the full CV and job description every time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Answer Evaluation
&lt;/h3&gt;

&lt;p&gt;When an answer is submitted, Gemma receives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the interview question&lt;/li&gt;
&lt;li&gt;the candidate's answer&lt;/li&gt;
&lt;li&gt;relevant candidate evidence&lt;/li&gt;
&lt;li&gt;role priorities&lt;/li&gt;
&lt;li&gt;the selected interview style&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It returns structured feedback containing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;What worked
Make it stronger
Follow-up
Next focus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes the AI output predictable enough to build an actual product interface around instead of simply dumping model text into a chat box.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Retry Loop
&lt;/h3&gt;

&lt;p&gt;One of my favourite parts of the project is that the second attempt is not treated as another unrelated answer.&lt;/p&gt;

&lt;p&gt;The system compares it with the previous response.&lt;/p&gt;

&lt;p&gt;That makes the experience closer to coaching:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Attempt 1
   ↓
Feedback
   ↓
Attempt 2
   ↓
Improvement comparison
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Frontend
&lt;/h3&gt;

&lt;p&gt;The interface was built with React and Vite.&lt;/p&gt;

&lt;p&gt;I also used several open-source &lt;strong&gt;React Bits&lt;/strong&gt; components to make the experience more interactive without turning it into a visually noisy dashboard.&lt;/p&gt;

&lt;p&gt;These included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ColorBends&lt;/li&gt;
&lt;li&gt;TextPressure&lt;/li&gt;
&lt;li&gt;SpotlightCard&lt;/li&gt;
&lt;li&gt;WakeSlider&lt;/li&gt;
&lt;li&gt;FlipCard&lt;/li&gt;
&lt;li&gt;ThoughtLine&lt;/li&gt;
&lt;li&gt;FuseButton&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The animated ColorBends background uses Three.js/WebGL while the rest of the interface stays intentionally restrained.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;This project would be very different if the only option were a closed hosted AI API.&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;Gemma 3 as an open-weight model with Ollama&lt;/strong&gt; allowed me to make local inference a fundamental part of the product rather than an afterthought.&lt;/p&gt;

&lt;p&gt;That matters especially for this use case.&lt;/p&gt;

&lt;p&gt;A CV can contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;employment history&lt;/li&gt;
&lt;li&gt;education&lt;/li&gt;
&lt;li&gt;personal projects&lt;/li&gt;
&lt;li&gt;achievements&lt;/li&gt;
&lt;li&gt;technical skills&lt;/li&gt;
&lt;li&gt;and other personal career information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Interview answers can be even more personal.&lt;/p&gt;

&lt;p&gt;With local inference, the core workflow becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CV
 +
Job Description
        ↓
Local FastAPI Application
        ↓
Ollama
        ↓
Gemma 3
        ↓
Questions + Feedback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is no requirement to send the candidate's CV to a commercial LLM endpoint just to practise an interview.&lt;/p&gt;

&lt;p&gt;Open innovation also gave me much more control over the product.&lt;/p&gt;

&lt;p&gt;I could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;choose the model&lt;/li&gt;
&lt;li&gt;control the context size&lt;/li&gt;
&lt;li&gt;keep the model loaded between turns&lt;/li&gt;
&lt;li&gt;optimise prompts for local hardware&lt;/li&gt;
&lt;li&gt;inspect inference behaviour&lt;/li&gt;
&lt;li&gt;swap models later&lt;/li&gt;
&lt;li&gt;and build without per-request API costs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There were trade-offs.&lt;/p&gt;

&lt;p&gt;Running Gemma locally on CPU forced me to think much more carefully about prompt size, output length, inference time, and how many model calls the experience actually needed.&lt;/p&gt;

&lt;p&gt;But that constraint improved the architecture.&lt;/p&gt;

&lt;p&gt;Instead of treating the LLM as unlimited infrastructure, I had to decide:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What actually needs AI, and what doesn't?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That was probably one of the most useful lessons from the weekend.&lt;/p&gt;




&lt;h2&gt;
  
  
  Built in Three Days
&lt;/h2&gt;

&lt;p&gt;This is deliberately an MVP.&lt;/p&gt;

&lt;p&gt;I wanted to finish one complete experience rather than build ten half-working features.&lt;/p&gt;

&lt;p&gt;The scope became:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;CV + Job Description → personalised interview → feedback → One More Try&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That meant saying no to a few tempting features during the weekend.&lt;/p&gt;

&lt;p&gt;One of those was voice.&lt;/p&gt;

&lt;p&gt;I experimented with turning the experience into a full spoken interview, but adding speech-to-text, text-to-speech, microphone handling, latency management, and another set of dependencies would have increased the failure surface significantly.&lt;/p&gt;

&lt;p&gt;For a three-day build, I chose to keep the working typed interview experience and make the core loop reliable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where I'd Take It Next
&lt;/h2&gt;

&lt;p&gt;The next version would turn One More Try into a more complete mock-interview environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Voice Interviews
&lt;/h3&gt;

&lt;p&gt;The first addition would be local speech-to-text using something like Whisper.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI Question
     ↓
Candidate Speaks
     ↓
Local Speech-to-Text
     ↓
Gemma Evaluation
     ↓
Coaching Feedback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This would preserve the privacy-first direction while making the practice experience much closer to a real interview.&lt;/p&gt;

&lt;h3&gt;
  
  
  Speech Delivery Coaching
&lt;/h3&gt;

&lt;p&gt;Beyond the meaning of the answer, the application could analyse observable speech signals such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;speaking pace&lt;/li&gt;
&lt;li&gt;long pauses&lt;/li&gt;
&lt;li&gt;filler words&lt;/li&gt;
&lt;li&gt;repeated phrases&lt;/li&gt;
&lt;li&gt;response length&lt;/li&gt;
&lt;li&gt;clarity&lt;/li&gt;
&lt;li&gt;answer structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That would let the system coach both &lt;strong&gt;what you say&lt;/strong&gt; and &lt;strong&gt;how you deliver it&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Multimodal Practice
&lt;/h3&gt;

&lt;p&gt;An optional camera mode could later provide feedback on observable presentation behaviours such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;gaze toward the camera&lt;/li&gt;
&lt;li&gt;excessive movement&lt;/li&gt;
&lt;li&gt;posture changes&lt;/li&gt;
&lt;li&gt;consistency of visual engagement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I would keep this focused on observable behaviours rather than trying to infer someone's personality or emotional state from their face.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adaptive Interviews
&lt;/h3&gt;

&lt;p&gt;Right now the interview is prepared at the beginning.&lt;/p&gt;

&lt;p&gt;A larger version could dynamically choose later questions based on earlier answers.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Weak technical explanation
        ↓
Technical follow-up

Strong project example
        ↓
Deeper system-design question

Missing evidence
        ↓
Question asking for measurable impact
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Progress Tracking
&lt;/h3&gt;

&lt;p&gt;Another direction would be comparing interview sessions over time.&lt;/p&gt;

&lt;p&gt;The app could identify recurring patterns like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;vague answers&lt;/li&gt;
&lt;li&gt;weak metrics&lt;/li&gt;
&lt;li&gt;missing outcomes&lt;/li&gt;
&lt;li&gt;overly long responses&lt;/li&gt;
&lt;li&gt;weak STAR structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and show whether those problems are improving.&lt;/p&gt;




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

&lt;p&gt;The biggest lesson wasn't about prompting.&lt;/p&gt;

&lt;p&gt;It was about turning an LLM into a product.&lt;/p&gt;

&lt;p&gt;Generating text is easy.&lt;/p&gt;

&lt;p&gt;Building a useful AI experience means thinking about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what context the model actually needs&lt;/li&gt;
&lt;li&gt;how outputs should be structured&lt;/li&gt;
&lt;li&gt;latency&lt;/li&gt;
&lt;li&gt;failure handling&lt;/li&gt;
&lt;li&gt;privacy&lt;/li&gt;
&lt;li&gt;interaction design&lt;/li&gt;
&lt;li&gt;when not to call the model&lt;/li&gt;
&lt;li&gt;and what action the user should take after receiving an AI response&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For One More Try, the AI feedback itself is only half the product.&lt;/p&gt;

&lt;p&gt;The important part is what happens next:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;you get another attempt.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's why I called it &lt;strong&gt;One More Try&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
