<?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: BHAVYA GOTHI</title>
    <description>The latest articles on DEV Community by BHAVYA GOTHI (@bhavya_gothi_d9713c43c20b).</description>
    <link>https://dev.to/bhavya_gothi_d9713c43c20b</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%2F4157059%2Fc5d5b0dc-6097-4189-bfc9-e74b7a25d909.png</url>
      <title>DEV Community: BHAVYA GOTHI</title>
      <link>https://dev.to/bhavya_gothi_d9713c43c20b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bhavya_gothi_d9713c43c20b"/>
    <language>en</language>
    <item>
      <title>Remembering Why I Invested — I Built Investment Memory for My Dad</title>
      <dc:creator>BHAVYA GOTHI</dc:creator>
      <pubDate>Sat, 03 Oct 2026 07:00:41 +0000</pubDate>
      <link>https://dev.to/bhavya_gothi_d9713c43c20b/remembering-why-i-invested-i-built-investment-memory-for-my-dad-2i89</link>
      <guid>https://dev.to/bhavya_gothi_d9713c43c20b/remembering-why-i-invested-i-built-investment-memory-for-my-dad-2i89</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;p&gt;&lt;em&gt;This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;My dad invests regularly, but there is a simple problem that becomes more noticeable over time:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can remember that you bought something without remembering exactly why you bought it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The original reason might have been a piece of news, a personal observation, a long-term plan, or a price at which he wanted to review his thinking.&lt;/p&gt;

&lt;p&gt;Months later, that context can be difficult to reconstruct.&lt;/p&gt;

&lt;p&gt;So instead of building another app that tells someone what to buy or sell, I built something much simpler:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Investment Memory — a personal journal for remembering the reasoning behind an investment decision.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;Investment Memory is a personal investment decision journal that I built for my dad.&lt;/p&gt;

&lt;p&gt;He can record an investment using either text or voice.&lt;/p&gt;

&lt;p&gt;For a voice note, the application first transcribes the recording. The resulting text is shown to the user so it can be edited before anything is saved.&lt;/p&gt;

&lt;p&gt;The AI then extracts structured information from the note:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stock name&lt;/li&gt;
&lt;li&gt;Quantity&lt;/li&gt;
&lt;li&gt;Purchase price&lt;/li&gt;
&lt;li&gt;Why he invested&lt;/li&gt;
&lt;li&gt;His stated intent&lt;/li&gt;
&lt;li&gt;Time horizon&lt;/li&gt;
&lt;li&gt;Review price&lt;/li&gt;
&lt;li&gt;Review date&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The extracted information is always editable before saving.&lt;/p&gt;

&lt;p&gt;After an investment is recorded, the application provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search across saved investment memories&lt;/li&gt;
&lt;li&gt;Review reminders based on dates entered by the user&lt;/li&gt;
&lt;li&gt;A "Mark reviewed" workflow&lt;/li&gt;
&lt;li&gt;Review history&lt;/li&gt;
&lt;li&gt;Editing of saved records&lt;/li&gt;
&lt;li&gt;Light and dark mode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most important design choice is that the application records &lt;strong&gt;the user's own decision and reasoning&lt;/strong&gt; rather than generating investment recommendations.&lt;/p&gt;

&lt;p&gt;Nothing is saved from the AI output until the user reviews and confirms it.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://investment-memory-frontend.onrender.com" rel="noopener noreferrer"&gt;https://investment-memory-frontend.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The public demo uses fictional/demo investment records rather than private family financial information.&lt;/p&gt;

&lt;p&gt;The complete workflow is available:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Text
  ↓
Gemma extraction
  ↓
Human review and correction
  ↓
Save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AND&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Voice
  ↓
Whisper transcription
  ↓
Editable transcript
  ↓
Gemma extraction
  ↓
Human review and correction
  ↓
Save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The deployed application also includes search, review reminders, review history, saved-record editing, and light/dark mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Bhavya4523/Investment-Memory" rel="noopener noreferrer"&gt;https://github.com/Bhavya4523/Investment-Memory&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains the React frontend, FastAPI backend, SQLAlchemy models, AI integration, and deployment configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I Built It&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built Investment Memory with a React/Vite frontend, a FastAPI backend, SQLAlchemy, and a relational database.&lt;/p&gt;

&lt;p&gt;The AI is at the center of the workflow.&lt;/p&gt;

&lt;p&gt;Local-first version&lt;/p&gt;

&lt;p&gt;For local use, the architecture is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Voice / Text
     ↓
Whisper
     ↓
Gemma 3 4B
     ↓
Human review
     ↓
FastAPI
     ↓
SQLite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For voice input, the browser records audio and the backend uses faster-whisper to create the transcript.&lt;/p&gt;

&lt;p&gt;For text extraction, I use Gemma 3 4B through Ollama.&lt;/p&gt;

&lt;p&gt;The extraction prompt is deliberately constrained. The model is instructed to:&lt;/p&gt;

&lt;p&gt;extract only information explicitly stated by the user&lt;br&gt;
leave missing fields blank&lt;br&gt;
avoid inventing information&lt;br&gt;
avoid giving financial advice&lt;br&gt;
treat a review price as a review point rather than a buy or sell instruction&lt;/p&gt;

&lt;p&gt;The model output is then validated with Pydantic before it reaches the user interface.&lt;/p&gt;

&lt;p&gt;Public deployment&lt;/p&gt;

&lt;p&gt;For the public demo, I separated the infrastructure from the local setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React frontend
      ↓
FastAPI backend
      ↓
Hugging Face inference
   ┌───────────────┐
   │ Gemma         │
   │ Whisper       │
   └───────────────┘
      ↓
Neon PostgreSQL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend and backend are deployed on Render, while Neon PostgreSQL stores the public demo records.&lt;/p&gt;

&lt;p&gt;The same codebase supports both local and hosted AI through environment variables.&lt;/p&gt;

&lt;p&gt;This gives the application two modes:&lt;/p&gt;

&lt;p&gt;Local mode&lt;br&gt;
→ Ollama&lt;br&gt;
→ local Whisper&lt;br&gt;
→ SQLite&lt;/p&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;p&gt;Hosted mode&lt;br&gt;
→ Hugging Face&lt;br&gt;
→ hosted Whisper&lt;br&gt;
→ Neon PostgreSQL&lt;br&gt;
Human-in-the-loop design&lt;/p&gt;

&lt;p&gt;I did not want the model to silently turn a natural-language note into a permanent record.&lt;/p&gt;

&lt;p&gt;The workflow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Capture
   ↓
AI extraction
   ↓
Human checks the fields
   ↓
Human corrects anything necessary
   ↓
Confirm &amp;amp; save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The user remains the source of truth.&lt;/p&gt;

&lt;p&gt;Review memory&lt;/p&gt;

&lt;p&gt;I also wanted an investment record to remain useful after the day it was created.&lt;/p&gt;

&lt;p&gt;A user can set a review date.&lt;/p&gt;

&lt;p&gt;When that date arrives, the application displays a due or overdue reminder.&lt;/p&gt;

&lt;p&gt;After reviewing the investment, the user can:&lt;/p&gt;

&lt;p&gt;record what they noticed&lt;br&gt;
set another review date&lt;br&gt;
save the review&lt;br&gt;
view previous reviews later&lt;/p&gt;

&lt;p&gt;Previous reviews are preserved in history instead of being overwritten.&lt;/p&gt;

&lt;p&gt;Editing saved records&lt;/p&gt;

&lt;p&gt;The user can also edit an existing investment record later.&lt;/p&gt;

&lt;p&gt;This is useful when something was entered incorrectly because correcting the original record should not require creating another duplicate investment.&lt;/p&gt;

&lt;p&gt;A deployment problem I encountered&lt;/p&gt;

&lt;p&gt;The first Render deployment exceeded the available memory limit.&lt;/p&gt;

&lt;p&gt;The reason was that the backend was importing the local faster-whisper dependency even though the hosted deployment did not need local Whisper.&lt;/p&gt;

&lt;p&gt;I fixed this by loading faster-whisper only when the application is running in local mode.&lt;/p&gt;

&lt;p&gt;That allowed the hosted backend to start without loading the unnecessary local speech-recognition stack.&lt;/p&gt;

&lt;p&gt;This was a useful lesson for me: deployment is not just about getting the code to run. The application should only load the components that its current environment actually needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Does Open Innovation Matter?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For this project, open innovation mattered because I wanted the AI layer to be something I could control and adapt.&lt;/p&gt;

&lt;p&gt;The local version uses Gemma 3 4B and Whisper with local inference.&lt;/p&gt;

&lt;p&gt;Gemma 3 4B&lt;br&gt;
     +&lt;br&gt;
Whisper&lt;br&gt;
     ↓&lt;br&gt;
Local processing&lt;/p&gt;

&lt;p&gt;That makes the local version possible without building the entire application around a proprietary closed AI API.&lt;/p&gt;

&lt;p&gt;It also gave me flexibility during development.&lt;/p&gt;

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

&lt;p&gt;what information should be extracted&lt;br&gt;
which fields mattered to the user&lt;br&gt;
how missing information should be handled&lt;br&gt;
how the output should be validated&lt;br&gt;
what the application should do with the model's output&lt;/p&gt;

&lt;p&gt;The AI model is not the final authority. It is one component in a larger system.&lt;/p&gt;

&lt;p&gt;Another important benefit was portability.&lt;/p&gt;

&lt;p&gt;I originally built the application around local inference, but a hackathon project also needs a way to demonstrate the result publicly.&lt;/p&gt;

&lt;p&gt;Because the AI layer uses open models and a replaceable inference setup, I could move the public demo to hosted inference without redesigning the entire application.&lt;/p&gt;

&lt;p&gt;That resulted in two useful configurations:&lt;/p&gt;

&lt;p&gt;Local: a local-first personal version.&lt;/p&gt;

&lt;p&gt;Hosted: a shareable demonstration version.&lt;/p&gt;

&lt;p&gt;Open innovation therefore affected the architecture itself.&lt;/p&gt;

&lt;p&gt;It allowed me to experiment with the AI locally, keep the model layer replaceable, and then move the application to a public deployment when I needed a shareable demo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built for My Dad&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The most important part of this project is that it was built around a real person rather than a hypothetical user.&lt;/p&gt;

&lt;p&gt;My dad was the reason I chose this problem.&lt;/p&gt;

&lt;p&gt;I did not start by asking:&lt;/p&gt;

&lt;p&gt;"What AI application can I build?"&lt;/p&gt;

&lt;p&gt;I started with:&lt;/p&gt;

&lt;p&gt;"What small problem does someone I know actually have?"&lt;/p&gt;

&lt;p&gt;That led to a much narrower product.&lt;/p&gt;

&lt;p&gt;Investment Memory is not trying to become a trading platform, a portfolio-management system, or an investment advisor.&lt;/p&gt;

&lt;p&gt;It is a memory tool.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;remember what you decided, remember why you decided it, and remember when you wanted to revisit that thinking.&lt;/p&gt;

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

&lt;p&gt;The biggest lesson was that a useful AI application does not need to give the user more decisions.&lt;/p&gt;

&lt;p&gt;Sometimes it is more useful to help the user remember their own decisions.&lt;/p&gt;

&lt;p&gt;I also learned that making AI useful is as much about application design as it is about the model.&lt;/p&gt;

&lt;p&gt;The model can extract information, but the surrounding system determines whether that extraction is trustworthy and useful.&lt;/p&gt;

&lt;p&gt;That is why I added:&lt;/p&gt;

&lt;p&gt;Editable extraction&lt;br&gt;
        +&lt;br&gt;
Human confirmation&lt;br&gt;
        +&lt;br&gt;
Persistent memory&lt;br&gt;
        +&lt;br&gt;
Review history&lt;/p&gt;

&lt;p&gt;rather than simply showing an AI-generated answer.&lt;/p&gt;

&lt;p&gt;Prize Categories&lt;/p&gt;

&lt;p&gt;I am entering the following partner categories because the project genuinely uses these technologies:&lt;/p&gt;

&lt;p&gt;Best Use of Gemma&lt;br&gt;
Best Use of Render&lt;/p&gt;

&lt;p&gt;Gemma is used as the core language model for structuring investment notes, while Render hosts the deployed frontend and backend.&lt;br&gt;
**&lt;br&gt;
Final Thoughts**&lt;/p&gt;

&lt;p&gt;I started with one small problem:&lt;/p&gt;

&lt;p&gt;My dad remembers the investment, but over time the reasoning behind it can be forgotten.&lt;/p&gt;

&lt;p&gt;The result became a small system for preserving that context.&lt;/p&gt;

&lt;p&gt;There is no "What should I buy?" button.&lt;/p&gt;

&lt;p&gt;There is no prediction engine.&lt;/p&gt;

&lt;p&gt;There is no AI pretending to know what someone should do with their money.&lt;/p&gt;

&lt;p&gt;Instead, there is a voice note, a memory, a structured record, and a future reminder to look back at the decision.&lt;/p&gt;

&lt;p&gt;That was the application I wanted to build for one person I actually know.&lt;/p&gt;

&lt;h1&gt;
  
  
  hf26challenge
&lt;/h1&gt;

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