<?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: Binayak</title>
    <description>The latest articles on DEV Community by Binayak (@neonx1820).</description>
    <link>https://dev.to/neonx1820</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%2F3899157%2F62c8f14b-298f-44f3-9437-a7cb646dbcef.png</url>
      <title>DEV Community: Binayak</title>
      <link>https://dev.to/neonx1820</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/neonx1820"/>
    <language>en</language>
    <item>
      <title>Runway: A Private AI Financial Companion I Built for a Friend</title>
      <dc:creator>Binayak</dc:creator>
      <pubDate>Sun, 04 Oct 2026 15:21:04 +0000</pubDate>
      <link>https://dev.to/neonx1820/runway-a-private-ai-financial-companion-i-built-for-a-friend-3jic</link>
      <guid>https://dev.to/neonx1820/runway-a-private-ai-financial-companion-i-built-for-a-friend-3jic</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 Runway, a personal financial companion for a friend who freelances and has an irregular monthly income.&lt;/p&gt;

&lt;p&gt;Their problem is simple but surprisingly difficult to answer consistently:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Can I afford this right now without messing up the rest of my month?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Traditional budgeting tools are good at showing what already happened. They can tell you how much you spent last month, what your largest categories were, and what your current balance is.&lt;br&gt;
They don't do a particularly good job of helping with the decision that comes next.&lt;br&gt;
For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I just received ₹50,000. Can I spend ₹15,000 on a trip next weekend?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Runway is designed around answering that question. The user provides their transaction history, income patterns and a few personal preferences such as their minimum safety buffer. Runway then combines historical data, forecasting and an AI agent to reason about future scenarios.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;"Financial runway"&lt;/em&gt;&lt;/strong&gt; is the number of months a business or individual can survive before depleting all cash reserves at a constant net burn rate&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of simply replying with a generic budgeting recommendation, it can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;analyse the user's historical transactions&lt;/li&gt;
&lt;li&gt;forecast expected cash flow&lt;/li&gt;
&lt;li&gt;account for recurring expenses&lt;/li&gt;
&lt;li&gt;remember personal preferences such as a minimum cash buffer&lt;/li&gt;
&lt;li&gt;model a proposed expense as a scenario&lt;/li&gt;
&lt;li&gt;explain the result conversationally&lt;/li&gt;
&lt;li&gt;use live web information when a decision depends on current prices or alternatives&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't to tell someone how they should spend their money.&lt;br&gt;
It is to help them understand the consequences of a decision before they make it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Structure
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                User&lt;br&gt;
                 │&lt;br&gt;
          Chat / Voice&lt;br&gt;
                 │&lt;br&gt;
                 ▼&lt;br&gt;
            Gemma Agent&lt;br&gt;
                 │&lt;br&gt;
            Mastra Agent&lt;br&gt;
                 │&lt;br&gt;
    ┌────────────┼────────────┐&lt;br&gt;
    │            │            │&lt;br&gt;
    ▼            ▼            ▼&lt;br&gt;
 TabPFN      MongoDB Atlas   SerpApi&lt;br&gt;
forecastin    memory/data   live search&lt;br&gt;
    │            │            │&lt;br&gt;
    └────────────┼────────────┘&lt;br&gt;
                 │&lt;br&gt;
                 ▼&lt;br&gt;
              Response&lt;br&gt;
                 │&lt;br&gt;
            ElevenLabs&lt;br&gt;
              (voice)&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

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

&lt;p&gt;One of the main design decisions was to not make the LLM responsible for everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Runway&lt;/strong&gt; separates language reasoning, prediction, memory and external information into different components.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemma
&lt;/h3&gt;

&lt;p&gt;Gemma is the language model at the centre of the application. It is responsible for understanding the user's question, deciding which tools are relevant, interpreting their outputs and communicating the result.&lt;/p&gt;

&lt;p&gt;For example, when the user asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Can I afford ₹15,000 this weekend?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gemma does not try to mentally forecast the user's finances from a CSV. Instead, it can decide:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I need:&lt;br&gt;
→ recent financial data&lt;br&gt;
→ recurring expenses&lt;br&gt;
→ a cash-flow forecast&lt;br&gt;
→ a scenario with an additional ₹15,000 expense&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It then calls the relevant tools and uses those results to produce the final answer. This distinction is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The LLM does the reasoning. The prediction model does the prediction.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  TabPFN
&lt;/h3&gt;

&lt;p&gt;TabPFN is used for the numerical side of the problem.&lt;br&gt;
The transaction history is transformed into structured features that can be used for forecasting.&lt;/p&gt;

&lt;p&gt;Conceptually, the data looks like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;date&lt;br&gt;
income&lt;br&gt;
expense&lt;br&gt;
category&lt;br&gt;
balance&lt;br&gt;
day_of_week&lt;br&gt;
recurring_flag&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Runway&lt;/strong&gt; uses that historical information to estimate future cash flow.&lt;br&gt;
The agent can then compare scenarios such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                Projected balance
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No additional spend         ₹31,800&lt;br&gt;
₹12,000 trip                ₹19,800&lt;br&gt;
₹20,000 purchase            ₹11,800&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Mastra
&lt;/h3&gt;

&lt;p&gt;Mastra acts as the agent's orchestration layer. Instead of a single prompt with a huge amount of logic embedded inside it, Runway exposes individual capabilities as tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;forecast_cashflow()&lt;/li&gt;
&lt;li&gt;get_account_summary()&lt;/li&gt;
&lt;li&gt;get_recurring_expenses()&lt;/li&gt;
&lt;li&gt;create_scenario()&lt;/li&gt;
&lt;li&gt;search_current_price()&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  MongoDB Atlas
&lt;/h3&gt;

&lt;p&gt;MongoDB Atlas is used as the application's data layer. It stores the information Runway needs to maintain context between interactions. This is particularly useful for preferences that shouldn't have to be repeated every time.&lt;/p&gt;

&lt;h3&gt;
  
  
  ElevenLabs
&lt;/h3&gt;

&lt;p&gt;I added a voice interface because financial questions are often more natural to ask than type. Instead of opening a budgeting application and filling in forms, a user can simply ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I got paid today. Can I afford a ₹10,000 purchase?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The voice layer handles the conversational part while the underlying Runway agent still performs the same structured workflow.&lt;br&gt;
This also made the demo more representative of how I would want a friend to actually use the product.&lt;/p&gt;

&lt;h3&gt;
  
  
  SerpApi
&lt;/h3&gt;

&lt;p&gt;Some financial decisions depend on information that isn't in the user's transaction history.&lt;br&gt;
For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“My current broadband plan costs ₹999. Are there cheaper options?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I'm thinking about buying this phone. What are the current prices?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For these cases, Runway can use live web search rather than relying solely on information contained in the model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sentry Agent Tracing
&lt;/h3&gt;

&lt;p&gt;One of the things I wanted to avoid was building an agent that appears intelligent without knowing what it is actually doing. Sentry tracing lets me inspect the agent's execution.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
User question&lt;br&gt;
    │&lt;br&gt;
    ├── Retrieve financial context&lt;br&gt;
    ├── Retrieve user preferences&lt;br&gt;
    ├── Run TabPFN forecast&lt;br&gt;
    ├── Create spending scenario&lt;br&gt;
    └── Generate final response&lt;/p&gt;

&lt;p&gt;This makes latency, failures and individual tool calls visible.&lt;/p&gt;

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

&lt;p&gt;The most important reason I chose an open approach is control.&lt;/p&gt;

&lt;p&gt;Financial data is unusually personal. A transaction history can reveal where someone shops, where they travel, how frequently they get paid and what they spend their money on.&lt;/p&gt;

&lt;p&gt;Using an open-weight model gives me a different architecture. The core AI system can be run in an environment that I control, while the application itself remains modular.&lt;/p&gt;

&lt;p&gt;Privacy&lt;br&gt;
A user's financial history can remain within infrastructure controlled by the application rather than automatically becoming context sent to a proprietary model for every request.&lt;/p&gt;

&lt;p&gt;Separation of responsibilities&lt;br&gt;
Open components also made it easier to build the system as separate pieces.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;li&gt;Best Use of TabPFN&lt;/li&gt;
&lt;li&gt;Best Use of Mastra&lt;/li&gt;
&lt;li&gt;Best Use of MongoDB Atlas&lt;/li&gt;
&lt;li&gt;Best Use of ElevenLabs&lt;/li&gt;
&lt;li&gt;Best Use of Sentry Agent Tracing&lt;/li&gt;
&lt;li&gt;Best Use of SerpApi&lt;/li&gt;
&lt;li&gt;Best Use of Temporal&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Solana Week 1, a beginner's perspective</title>
      <dc:creator>Binayak</dc:creator>
      <pubDate>Sun, 26 Apr 2026 17:55:57 +0000</pubDate>
      <link>https://dev.to/neonx1820/solana-week-1-a-beginners-perspective-1jjd</link>
      <guid>https://dev.to/neonx1820/solana-week-1-a-beginners-perspective-1jjd</guid>
      <description>&lt;p&gt;I just started with 100 days of Solana with MLH. The first week was about keypair identification. I have been a developer in the web2 domain for &amp;gt;5 years and finally thought of trying out web3.&lt;/p&gt;

&lt;p&gt;If you’ve spent years building in Web2, “identity” probably means a combination of usernames, emails, passwords, and maybe OAuth providers. Users sign up, you store their credentials in a database, and your backend decides what they’re allowed to do.&lt;/p&gt;

&lt;p&gt;On Solana, that entire model flips. There are no usernames. No passwords. No “Sign in with Google.”&lt;br&gt;
Instead, identity is just a keypair — and once I understood that, everything else started to make sense.&lt;/p&gt;

&lt;p&gt;When you generate an SSH keypair:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;- You keep the private key on your machine&lt;/li&gt;
&lt;li&gt;- You upload the public key to a server&lt;/li&gt;
&lt;li&gt;- The server lets you in only if you can prove you hold the private key&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;No password needed. No central authority verifying you. Just cryptography.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Solana works almost exactly like this....&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your public key is your address on the network&lt;/li&gt;
&lt;li&gt;Your private key proves that you own that address&lt;/li&gt;
&lt;li&gt;Instead of one server, the entire Solana network verifies you &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;That’s your identity.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On Solana, your identity looks more like this:&lt;br&gt;
&lt;code&gt;....mFaf88c8tiVkKz3.....&lt;/code&gt;&lt;br&gt;
That string is your public key, encoded in Base58 (a format designed to avoid confusing characters like 0, O, I, and l).&lt;/p&gt;

&lt;p&gt;One shift that I found was the trade-offs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lose your private key → you lose access permanently&lt;/li&gt;
&lt;li&gt;Leak your private key → someone else becomes you&lt;/li&gt;
&lt;li&gt;No recovery system unless you build one on top&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a Web2 developer like myself, this feels extreme — because it is. But, you are replacing convenience with true ownership.&lt;/p&gt;

</description>
      <category>100daysofsolana</category>
      <category>solana</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
