<?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: Shalini Tiwari</title>
    <description>The latest articles on DEV Community by Shalini Tiwari (@shalini_tiwari_).</description>
    <link>https://dev.to/shalini_tiwari_</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%2F3955864%2Fdf6ad131-460b-4f35-9389-3d2583543a5d.jpg</url>
      <title>DEV Community: Shalini Tiwari</title>
      <link>https://dev.to/shalini_tiwari_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shalini_tiwari_"/>
    <language>en</language>
    <item>
      <title>Newvora HQ: a calm control room for a student founder who keeps her startup in her head</title>
      <dc:creator>Shalini Tiwari</dc:creator>
      <pubDate>Mon, 05 Oct 2026 06:51:37 +0000</pubDate>
      <link>https://dev.to/shalini_tiwari_/newvora-hq-a-calm-control-room-for-a-student-founder-who-keeps-her-startup-in-her-head-53i5</link>
      <guid>https://dev.to/shalini_tiwari_/newvora-hq-a-calm-control-room-for-a-student-founder-who-keeps-her-startup-in-her-head-53i5</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;My friend Riya runs Newvora, a small student-run startup. She builds websites and back-office portals for local businesses, mostly with AI coding tools. Three clients pay her every month, and some have extended their plans through next year. Her two teammates handle client meetings, outreach, and social media.&lt;/p&gt;

&lt;p&gt;Her problem is that everything lives in her head. Clients send requests on WhatsApp, and she remembers who asked for what, who has paid, and which tool renews when. She told me she can't hand work over cleanly, and that most of her income goes into tool subscriptions. Studying around all of this isn't easy either.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Newvora HQ&lt;/strong&gt;, a shared workspace for her whole team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI Inbox:&lt;/strong&gt; paste a client's WhatsApp message (English or Hinglish), and Gemma turns it into one task per request, with type, priority, and a clarifying question when the message is vague. [It can also read a pasted chat screenshot.]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Board:&lt;/strong&gt; To do, Doing, and Done, with assignees, comments, and an activity log of who changed what.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clients and Dues:&lt;/strong&gt; monthly fees, the one-time setup fee balance, a payment ledger per month, and a "month end is near, collect from these clients" reminder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools:&lt;/strong&gt; each subscription's budget, usage so far, what's left per day, and a warning before it renews or runs out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notifications:&lt;/strong&gt; assignments, comments, renewals, and overdue payments, per team member.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report:&lt;/strong&gt; a monthly summary she can copy or print instead of collecting numbers from many places.&lt;/li&gt;
&lt;li&gt;Light and dark themes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Riya Said
&lt;/h2&gt;

&lt;p&gt;I showed her the first version and asked for honest feedback. She found no issues with it, but she told me what she would actually use: money and tool tracking. Her words, translated from Hinglish:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"If I could track my tools, get warnings about payment dues, and track which clients have paid their monthly fee and how much of the establishment (setup) fee each has paid, and if clients could tell me about their feature additions systematically in the app, so that when I assign it to someone they get notified..."&lt;/p&gt;

&lt;p&gt;"Also check whether I can connect different tools to the app through APIs, so I can get all the reports in one place."&lt;/p&gt;

&lt;p&gt;"It will be very important, and new, and tough, but every developer or business person is stuck tracking around 100 different tools."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That feedback is why I added Dues, Tools, Notifications, and the monthly report. Connecting live tool accounts is on the roadmap below.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://newvora-hq.onrender.com" rel="noopener noreferrer"&gt;https://newvora-hq.onrender.com&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Passcode for judges: &lt;code&gt;newvora2026&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;It runs on Render's free plan, so the first load can take about a minute, and the data resets when the service restarts. Everything in it is sample data.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Video walkthrough:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/NgcwwvJbvXY" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shalinitiwari-25" rel="noopener noreferrer"&gt;
        shalinitiwari-25
      &lt;/a&gt; / &lt;a href="https://github.com/shalinitiwari-25/Newvora_HQ" rel="noopener noreferrer"&gt;
        Newvora_HQ
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Newvora HQ&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Internal operations workspace for Newvora, a student-run agency building client websites and portals. Tracks client requests from WhatsApp, tasks, team activities, and agency finances.&lt;/p&gt;
&lt;p&gt;Built with &lt;strong&gt;FastAPI&lt;/strong&gt; (Python), &lt;strong&gt;SQLite&lt;/strong&gt;, and &lt;strong&gt;vanilla HTML/CSS/JavaScript&lt;/strong&gt; (no frontend build step, no frameworks, no CDNs). All AI features are powered by Google's open-weight &lt;strong&gt;Gemma&lt;/strong&gt; model via the Gemini API (or local Ollama).&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quickstart&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;1. Prerequisites&lt;/h3&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.10+&lt;/li&gt;
&lt;li&gt;(Optional for Stage 2) Google Gemini API Key with access to Gemma models.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;2. Setup&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Create a virtual environment and install dependencies:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Windows&lt;/span&gt;
python -m venv venv
venv&lt;span class="pl-cce"&gt;\S&lt;/span&gt;cripts&lt;span class="pl-cce"&gt;\a&lt;/span&gt;ctivate

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Install dependencies&lt;/span&gt;
pip install -r requirements.txt&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;3. Environment Variables&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Copy &lt;code&gt;.env.example&lt;/code&gt; to &lt;code&gt;.env&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;cp .env.example .env&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Configuration options in &lt;code&gt;.env&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GOOGLE_API_KEY&lt;/code&gt;: Google AI Studio API key for Gemma.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;AI_PROVIDER&lt;/code&gt;: &lt;code&gt;gemini&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;AI_MODEL&lt;/code&gt;: &lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt; (default).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PORT&lt;/code&gt;: Server port (default &lt;code&gt;8000&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DB_PATH&lt;/code&gt;: SQLite database file…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shalinitiwari-25/Newvora_HQ" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; Python with FastAPI, SQLite, and a plain HTML, CSS, and JavaScript frontend (no framework). AI features call &lt;strong&gt;Gemma&lt;/strong&gt; (&lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt;) through the Gemini API. It's deployed on Render, and I built it mostly with Antigravity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The AI Inbox is the core.&lt;/strong&gt; It sends a message to Gemma with a strict prompt and expects JSON back. It then strips code fences, validates the allowed values, and retries up to twice if parsing fails. A sample message I wrote:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"bhaiya, stock wala table me last month ka data update kardo, and dashboard thoda slow hai"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This should become two tasks: a data update and a bug. The model got that right, and each task came with a sensible clarifying question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I started local, and it failed.&lt;/strong&gt; My laptop has 8 GB of RAM and no GPU, so I began with &lt;code&gt;gemma3:1b&lt;/code&gt; in Ollama:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Test&lt;/th&gt;
&lt;th&gt;What the 1B model did&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Two requests in one message&lt;/td&gt;
&lt;td&gt;Dropped the request type and invented a &lt;code&gt;client_feedback&lt;/code&gt; field&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Add a download button"&lt;/td&gt;
&lt;td&gt;Labeled it a data update instead of a new feature&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vague message&lt;/td&gt;
&lt;td&gt;Invented a type, though the clarifying question was good&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;It also wrapped answers in code fences and added chatty notes. I couldn't run a bigger local model, so I moved to Gemma through an API. The same two messages then came out correct.&lt;/p&gt;

&lt;p&gt;Two lessons I took from this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Small models need a strict output format, and the app has to check what comes back.&lt;/li&gt;
&lt;li&gt;A single WhatsApp message often holds several requests, so the model returns a list of tasks, not one.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I also added a rule that only messages with "urgent," "asap," or a deadline get high priority, after the model marked "the dashboard is a little slow" as high.&lt;/p&gt;

&lt;p&gt;All AI calls go through one small function, and the model name is a config setting.&lt;/p&gt;

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

&lt;p&gt;I'll be honest about what I can and can't claim. In this demo, messages go to Google's API, so I'm &lt;strong&gt;not&lt;/strong&gt; saying client data stays on a laptop. Here is what open weights actually gave me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;I could test for free before committing.&lt;/strong&gt; Running small Gemma models locally showed me what size the task needs, and it cost nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No lock-in.&lt;/strong&gt; Because Gemma's weights are open, the model isn't tied to one provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy has a path forward.&lt;/strong&gt; Her clients' stock figures and business numbers are sensitive. With an open model she can eventually host the same model herself, so that data never goes to a third party.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost.&lt;/strong&gt; She spends most of her income on tool subscriptions, so a free-tier API plus an open model that can later run on her own server matters a lot to her.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;These are Riya's own requests, and I checked what's actually possible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live usage from other tools.&lt;/strong&gt; Anthropic's Usage and Cost API needs an organization admin key (not available for individual accounts), Convex exposes usage through log streams, and Supabase's usage data is in its dashboard. Each tool needs its own connector, and powerful keys shouldn't live in a demo app. For now, usage is entered manually or read from a pasted receipt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real alerts&lt;/strong&gt; by email or Telegram, and scheduled reminders.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permanent storage.&lt;/strong&gt; The repo includes a paid Render config with a persistent disk for her own account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client request form:&lt;/strong&gt; a place where clients submit requests themselves, so they land in the Inbox already structured.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; Gemma (&lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt;) does the request parsing and report summaries, served through the Gemini API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; the full app (backend and frontend) is deployed as a Render web service.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Trivya AI – Voice Assistant with Gemini Integration</title>
      <dc:creator>Shalini Tiwari</dc:creator>
      <pubDate>Sun, 07 Jun 2026 17:20:49 +0000</pubDate>
      <link>https://dev.to/shalini_tiwari_/trivya-ai-voice-assistant-with-gemini-integration-29l2</link>
      <guid>https://dev.to/shalini_tiwari_/trivya-ai-voice-assistant-with-gemini-integration-29l2</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-05-21"&gt;GitHub Finish-Up-A-Thon Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project Description:&lt;/strong&gt;&lt;br&gt;
Trivya AI is a Python-based voice assistant that combines speech recognition, text-to-speech, and Google Gemini AI to provide an interactive assistant experience.&lt;/p&gt;

&lt;p&gt;The project supports two modes:&lt;/p&gt;

&lt;p&gt;A terminal-based voice assistant that listens to voice commands and responds through speech.&lt;br&gt;
A Streamlit-based web interface that allows users to interact through a browser.&lt;/p&gt;

&lt;p&gt;Trivya AI can answer AI-powered questions, provide date and time information, open websites, tell jokes, and perform basic assistant tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo&lt;/strong&gt;&lt;br&gt;
Demo Link: &lt;a href="https://www.canva.com/design/DAHL6LiMjMs/CoFRtirxEIAQsdNnSzVYNw/watch?utm_content=DAHL6LiMjMs&amp;amp;utm_campaign=designshare&amp;amp;utm_medium=link2&amp;amp;utm_source=uniquelinks&amp;amp;utlId=h306f8942aa" rel="noopener noreferrer"&gt;Trivya AI demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Comeback Story&lt;/strong&gt;&lt;br&gt;
This project originally started as a simple terminal-based voice assistant with predefined commands.&lt;/p&gt;

&lt;p&gt;During the Finish-Up-A-Thon, I enhanced the project by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding a Streamlit web interface for easier interaction&lt;/li&gt;
&lt;li&gt;Integrating Google Gemini AI for answering open-ended questions&lt;/li&gt;
&lt;li&gt;Creating a reusable AI helper module&lt;/li&gt;
&lt;li&gt;Securing API keys using environment variables (.env)&lt;/li&gt;
&lt;li&gt;Improving project structure and organization&lt;/li&gt;
&lt;li&gt;Updating the README with screenshots, setup instructions, and usage examples&lt;/li&gt;
&lt;li&gt;Enhancing the overall user experience and documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;My Experience with GitHub Copilot&lt;/strong&gt;&lt;br&gt;
GitHub Copilot helped me speed up development while improving Trivya AI during the Finish-Up-A-Thon. It assisted with code suggestions, debugging, and exploring different implementation approaches while I worked on the project.&lt;/p&gt;

&lt;p&gt;Copilot was particularly useful when refining the Streamlit interface, organizing parts of the codebase, and improving the overall project structure. It also helped me iterate faster by providing suggestions that I could review, modify, and integrate into the project.&lt;/p&gt;

&lt;p&gt;The combination of my own development process and Copilot's assistance allowed me to focus more on enhancing the user experience, integrating AI capabilities, and improving the documentation of the project.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>gemini</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
