<?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: Rishika Thulasi</title>
    <description>The latest articles on DEV Community by Rishika Thulasi (@rishika_thulasi_65134a1cc).</description>
    <link>https://dev.to/rishika_thulasi_65134a1cc</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%2F3824013%2F28ce4a8a-bf88-44c5-97e1-f18d92d8c07a.png</url>
      <title>DEV Community: Rishika Thulasi</title>
      <link>https://dev.to/rishika_thulasi_65134a1cc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rishika_thulasi_65134a1cc"/>
    <language>en</language>
    <item>
      <title>How I Built Clara: A Mobile-First AI Form-Filling Companion with Gemini and Google Cloud</title>
      <dc:creator>Rishika Thulasi</dc:creator>
      <pubDate>Sat, 14 Mar 2026 13:24:38 +0000</pubDate>
      <link>https://dev.to/rishika_thulasi_65134a1cc/how-i-built-clara-a-mobile-first-ai-form-filling-companion-with-gemini-and-google-cloud-kck</link>
      <guid>https://dev.to/rishika_thulasi_65134a1cc/how-i-built-clara-a-mobile-first-ai-form-filling-companion-with-gemini-and-google-cloud-kck</guid>
      <description>&lt;p&gt;&lt;em&gt;This blog post was created for the purposes of entering the Gemini Live Agent Challenge hackathon. #GeminiLiveAgentChallenge&lt;/em&gt;&lt;/p&gt;




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

&lt;p&gt;I kept missing job opportunities — not because I wasn't qualified, but because I couldn't bring myself to fill out another application on my phone. Tiny fields, endless scrolling, and those dreaded open-ended questions: "Why do you want this role?" I'd open the form on the subway, stare at it, and close the tab.&lt;/p&gt;

&lt;p&gt;I built Clara to fix this.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Clara?
&lt;/h2&gt;

&lt;p&gt;Clara is a mobile-first AI form-filling companion. Snap a screenshot, upload a PDF, or paste a URL — Clara reads any form and guides you through filling it with a simple conversation.&lt;/p&gt;




&lt;h2&gt;
  
  
  How I Built It with Google AI and Google Cloud
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Gemini Vision for Form Understanding
&lt;/h3&gt;

&lt;p&gt;The core magic is &lt;strong&gt;Gemini 2.5-flash with Vision&lt;/strong&gt;. When you upload a form, Clara sends it to Gemini Vision, which extracts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every field label&lt;/li&gt;
&lt;li&gt;Field types (text, dropdown, checkbox)&lt;/li&gt;
&lt;li&gt;Bounding box coordinates for each field&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This lets Clara understand &lt;em&gt;any&lt;/em&gt; form — job applications, medical intake, government paperwork — without pre-built templates.&lt;/p&gt;

&lt;h3&gt;
  
  
  3-Layer Smart Prefill
&lt;/h3&gt;

&lt;p&gt;Clara doesn't just read forms — it fills them intelligently using a 3-layer matching system:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Learned aliases&lt;/strong&gt;: If you previously confirmed "Mobile Phone" maps to your phone number, Clara remembers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini semantic matching&lt;/strong&gt;: AI matches new fields to your profile with confidence scores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyword fallback&lt;/strong&gt;: Static synonym matching as a safety net.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Open-Ended Answer Coaching
&lt;/h3&gt;

&lt;p&gt;The hardest part of forms? Those open-ended questions. Clara uses Gemini to draft personalized answers based on your profile and the specific role, then lets you approve or edit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Voice I/O with Gemini TTS
&lt;/h3&gt;

&lt;p&gt;Clara speaks. Using &lt;strong&gt;Gemini TTS&lt;/strong&gt;, Clara reads questions aloud and supports barge-in — interrupt anytime by typing or tapping.&lt;/p&gt;

&lt;h3&gt;
  
  
  Google Cloud Infrastructure
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Run&lt;/strong&gt;: Serverless deployment with auto-scaling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firestore&lt;/strong&gt;: Stores user profiles, sessions, and form progress&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Storage&lt;/strong&gt;: Holds uploaded resumes, cover letters, and generated documents&lt;/li&gt;
&lt;/ul&gt;




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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser SPA (Vanilla JS) 
    ↓ HTTP REST
Flask Backend (~3000 lines)
    ↓
┌─────────────┬─────────────┬─────────────┐
│ Gemini API  │  Firestore  │   Cloud     │
│ Vision+TTS  │  Profiles   │   Storage   │
└─────────────┴─────────────┴─────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Challenges
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Field matching ambiguity&lt;/strong&gt;: Forms label fields inconsistently. The 3-layer system solved this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile-first UX&lt;/strong&gt;: Making a chat interface feel natural for complex forms took iteration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDF annotation&lt;/strong&gt;: Rendering answers as overlays using Gemini's bounding box coordinates.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;Browser extension for direct website form-filling&lt;/li&gt;
&lt;li&gt;Clara Profile API for third-party integrations&lt;/li&gt;
&lt;li&gt;Expanded document generation (tax forms, visa applications)&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Clara is live and deployed on Google Cloud Run. Any form, anywhere, from your phone.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was created for the Gemini Live Agent Challenge. #GeminiLiveAgentChallenge&lt;/em&gt;&lt;/p&gt;

</description>
      <category>geminiliveagentchallenge</category>
      <category>ai</category>
      <category>python</category>
    </item>
  </channel>
</rss>
