<?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: Apurva Aggarwal</title>
    <description>The latest articles on DEV Community by Apurva Aggarwal (@apurva0510).</description>
    <link>https://dev.to/apurva0510</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%2F4157888%2Fe78c138d-7dea-40ac-94ed-da997a2ff48b.jpeg</url>
      <title>DEV Community: Apurva Aggarwal</title>
      <link>https://dev.to/apurva0510</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/apurva0510"/>
    <language>en</language>
    <item>
      <title>I Built My Dad a Local AI Translator for His Stock Research</title>
      <dc:creator>Apurva Aggarwal</dc:creator>
      <pubDate>Fri, 02 Oct 2026 22:53:28 +0000</pubDate>
      <link>https://dev.to/apurva0510/i-built-my-dad-a-local-ai-translator-for-his-stock-research-55ea</link>
      <guid>https://dev.to/apurva0510/i-built-my-dad-a-local-ai-translator-for-his-stock-research-55ea</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;Argus Friend Brief&lt;/strong&gt;, a local AI research translator for my dad.&lt;/p&gt;

&lt;p&gt;My dad uses &lt;a href="https://github.com/apurva0510/argus" rel="noopener noreferrer"&gt;Argus&lt;/a&gt;, a stock-research dashboard I built for our family, every day. It tracks 53 companies across AI infrastructure, semiconductors, power, cooling, networking, and emerging compute. Argus brings prices, technical metrics, peer-relative valuation, news, SEC filings, and bull/bear theses into one place.&lt;/p&gt;

&lt;p&gt;Argus solved the scattered-data problem, but it left my dad with another one. A dashboard can show everything and still make you do the hard work of connecting it all.&lt;/p&gt;

&lt;p&gt;Argus Friend Brief takes a sanitized snapshot of that research and asks a local Gemma model to explain one company in plain language. The result is organized into five questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What changed?&lt;/li&gt;
&lt;li&gt;Why does it matter?&lt;/li&gt;
&lt;li&gt;What supports the bull case?&lt;/li&gt;
&lt;li&gt;What supports the bear case?&lt;/li&gt;
&lt;li&gt;What should we monitor next?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every factual claim links back to the exact evidence record that supported it. The app is research support only. It does not produce buy, sell, hold, price-target, or position-sizing advice.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://argus-friend-brief.streamlit.app/" rel="noopener noreferrer"&gt;argus-friend-brief.streamlit.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recorded walkthrough:&lt;/strong&gt; &lt;a href="https://github.com/apurva0510/argus-friend-brief/blob/main/artifacts/argus-friend-brief-demo.mp4" rel="noopener noreferrer"&gt;Watch the MP4 on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The hosted preview includes saved, citation-validated Gemma examples for NVDA, VRT, and CEG so it works without a cloud GPU. Those outputs are clearly labeled in the interface. Clone the repository and run Ollama locally to generate a fresh brief for any of the 53 companies.&lt;/p&gt;

&lt;p&gt;The current demo includes sanitized snapshots for all 53 active Argus companies, refreshed after the October 2 market close. Once the model is downloaded, the whole app can run on a laptop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What my dad said (paraphrased):&lt;/strong&gt; “This helps me break down the research into terms that are much easier to digest, instead of having to navigate a bunch of technical dashboards.”&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/apurva0510" rel="noopener noreferrer"&gt;
        apurva0510
      &lt;/a&gt; / &lt;a href="https://github.com/apurva0510/argus-friend-brief" rel="noopener noreferrer"&gt;
        argus-friend-brief
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Hacktoberfest 2026 Challenege
    &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;Argus Friend Brief&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Argus Friend Brief turns structured Argus market research into a plain-language
evidence-linked briefing using a local Gemma model through Ollama. It was created for
the Hacktoberfest 2026 &lt;strong&gt;Build for a Friend&lt;/strong&gt; challenge.&lt;/p&gt;
&lt;p&gt;The intended reader is the family member who shares the Argus research workflow but
does not want to decode every metric, filing, signal, and valuation table. This is a
research translator—not a trading system or investment adviser.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Live preview:&lt;/strong&gt; &lt;a href="https://argus-friend-brief.streamlit.app/" rel="nofollow noopener noreferrer"&gt;argus-friend-brief.streamlit.app&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Video:&lt;/strong&gt; &lt;a href="https://github.com/apurva0510/argus-friend-brief/artifacts/argus-friend-brief-demo.mp4" rel="noopener noreferrer"&gt;Recorded walkthrough&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What makes it different&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Local open-weight inference: the research snapshot stays on the laptop.&lt;/li&gt;
&lt;li&gt;Evidence-first generation: every factual claim must reference a compact exported evidence ID.&lt;/li&gt;
&lt;li&gt;Citation validation: unsupported evidence IDs trigger one repair attempt and then fail closed.&lt;/li&gt;
&lt;li&gt;Reproducible demo: a sanitized snapshot is committed, so no Argus or database credentials are required.&lt;/li&gt;
&lt;li&gt;Read-only ingestion: the exporter opens the Argus SQLite database in immutable read-only mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run locally&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Requirements: Python 3.12+…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/apurva0510/argus-friend-brief" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Repository: &lt;a href="https://github.com/apurva0510/argus-friend-brief" rel="noopener noreferrer"&gt;github.com/apurva0510/argus-friend-brief&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I kept the project intentionally small:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Streamlit provides the interface.&lt;/li&gt;
&lt;li&gt;A read-only exporter creates a sanitized JSON snapshot from Argus's local SQLite database.&lt;/li&gt;
&lt;li&gt;Ollama runs &lt;code&gt;gemma3:4b&lt;/code&gt; locally.&lt;/li&gt;
&lt;li&gt;Pydantic defines the response schema.&lt;/li&gt;
&lt;li&gt;Citation and language guards validate the result before it reaches the screen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The committed demo snapshot lets anyone inspect the project without access to my production database or Supabase credentials.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I built it
&lt;/h2&gt;

&lt;p&gt;The data path is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Argus SQLite database
        |
        | immutable, read-only export
        v
Sanitized evidence catalog
        |
        | local inference
        v
Gemma 3 4B through Ollama
        |
        | structured JSON
        v
Citation and safety validation
        |
        v
Streamlit briefing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  A deliberately narrow snapshot
&lt;/h3&gt;

&lt;p&gt;The exporter opens the Argus database with SQLite's read-only and immutable options. It collects current and previous metrics, signals, fundamentals, peer valuation, existing deterministic theses, recent news, and SEC filings.&lt;/p&gt;

&lt;p&gt;It deliberately leaves out personal watchlist notes, authentication data, and credentials. Each exported fact gets a compact evidence ID such as &lt;code&gt;NVDA.E001&lt;/code&gt;, plus its label, value, date, and source.&lt;/p&gt;
&lt;h3&gt;
  
  
  Constrained local generation
&lt;/h3&gt;

&lt;p&gt;The model never sees the database or an open-ended question. It receives one company's evidence catalog and a Pydantic-derived JSON schema. I set the temperature to zero and tell Gemma to use only the evidence in that catalog.&lt;/p&gt;

&lt;p&gt;Each generated claim must include one to three evidence IDs. The interface uses those IDs to display the underlying values and source dates in expandable evidence panels.&lt;/p&gt;
&lt;h3&gt;
  
  
  Failing closed
&lt;/h3&gt;

&lt;p&gt;My first real Gemma run exposed a problem that the mocked tests did not. The model returned valid JSON but mistyped long, timestamp-heavy citation IDs. Even its repair attempt failed.&lt;/p&gt;

&lt;p&gt;I shortened the IDs to deterministic forms such as &lt;code&gt;NVDA.E001&lt;/code&gt; and reran the same test. Citation validation then passed.&lt;/p&gt;

&lt;p&gt;The next browser test found a subtler issue: Gemma described Argus's internal “opportunity score” as if it were an investment opportunity. That is not what the score means. I added a deterministic language guard for investment-direction phrases and clarified the prompt: the opportunity score is a research-ranking signal, not an expected return or recommendation.&lt;/p&gt;

&lt;p&gt;If a response contains an unknown citation or disallowed language, the app gives the model one repair attempt. If the repaired response still fails, the app displays an error instead of an unsupported brief.&lt;/p&gt;

&lt;p&gt;The repository currently has 20 tests covering snapshot lookup, read-only export behavior, structured Ollama requests, citation validation, repair behavior, the language guard, saved demo briefs, and privacy-preserving trace metadata. I also tested the complete flow with the real local model and verified the interface in a browser.&lt;/p&gt;
&lt;h3&gt;
  
  
  Observing the local agent without uploading its research
&lt;/h3&gt;

&lt;p&gt;I added optional Sentry agent tracing around the briefing pipeline, Ollama calls, and both validation passes. The traces show model latency, token counts, whether citation or safety&lt;br&gt;
validation failed, whether the repair path ran, and generic inference failure types.&lt;/p&gt;

&lt;p&gt;The instrumentation disables automatic integrations and does not send tickers, prompts, model responses, evidence catalogs, URLs, exception messages, or personal notes. Without a &lt;code&gt;SENTRY_DSN&lt;/code&gt;, it is a no-op and the application remains fully local. This lets me debug the agent's behavior without turning the observability tool into another copy of my dad's data.&lt;/p&gt;
&lt;h3&gt;
  
  
  Preserving the development decisions with Entire
&lt;/h3&gt;

&lt;p&gt;I enabled Entire for the repository and connected its Codex hooks so the implementation history is attributable to the agent session that produced it. Entire checkpoints preserve the relationship between a change and the conversation behind it, which is especially useful here because several of the most important improvements came from testing real model behavior: shortening citation IDs, tightening investment-language safeguards, and limiting Sentry to metadata-only traces.&lt;/p&gt;

&lt;p&gt;The integration is repository-scoped, telemetry is disabled, and automatic checkpoint pushing is off. That keeps the captured history under my control while still providing verifiable&lt;br&gt;
development provenance. This submission update was made in a fresh Codex session after the repository hooks were reviewed and approved, creating the project's first attributable Entire checkpoint.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why does open innovation matter?
&lt;/h2&gt;

&lt;p&gt;The part I care about most is where the reasoning happens.&lt;/p&gt;

&lt;p&gt;My dad's watchlists and research context do not need to leave his laptop. After Gemma is downloaded, Ollama runs inference locally without sending the snapshot to a model provider. There is no per-request fee or model API account to maintain.&lt;/p&gt;

&lt;p&gt;Open weights also give me control over the system around the model. I can swap Gemma for another compatible local model, change the context window, tighten the schema, or add a new&lt;br&gt;
validator without rebuilding the app around one vendor's API.&lt;/p&gt;

&lt;p&gt;That flexibility mattered almost immediately. Gemma struggled with the original citation format, so I changed the evidence contract. It also interpreted one internal score too strongly, so I tightened the prompt and added a deterministic guard. The surrounding code, not the model, decides what is safe enough to show.&lt;/p&gt;

&lt;p&gt;A closed API could produce similar prose. What it would not give this project is the same combination of local privacy, zero per-request cost, and control over the inference stack. For a family research tool, those qualities matter more than having access to the largest hosted model.&lt;/p&gt;

&lt;p&gt;That tradeoff also shows up across the DEV community. Projects like &lt;a href="https://dev.to/asimie/genie-building-a-privacy-first-autonomous-agent-that-controls-your-phone-entirely-offline-4da2"&gt;Genie&lt;/a&gt; and this &lt;a href="https://dev.to/avraham_aminov_542e8309b6/building-a-local-ai-seo-agent-with-gemma-ollama-docker-and-react-303j"&gt;local Gemma SEO agent&lt;/a&gt; approach local inference from different directions, but make a similar point: privacy and control can be part of the product itself.&lt;/p&gt;
&lt;h2&gt;
  
  
  My agent session
&lt;/h2&gt;

&lt;p&gt;I curated the build history into a short, secret-scrubbed DevRelay session covering the scope decisions, snapshot refresh, safety fixes, local Gemma validation, and browser demo.&lt;/p&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Gemini CLI"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Building Argus Friend Brief with local Gemma&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Build a small, useful version of Argus for a friend for the Build for a Friend challenge. Use a current snapshot of the full company universe and keep open-source AI at the core.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I scoped the project as a private-first research brief generator: choose one of 53 AI-infrastructure companies, run a local Gemma model through Ollama, and produce a concise friend-readable brief grounded only in a dated Argus snapshot.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-repositoryinspection"&gt;repository_inspection&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Inspect the Argus schema, refresh workflow, and source evidence model&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Inspect the Argus schema, refresh workflow, and source evidence model&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Identified the company universe, evidence records, snapshot fields, and daily-close refresh path needed for a standalone demo.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Run the daily-close refresh first so the project has an October 2 snapshot, then include all 53 companies.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I refreshed the source data, exported a portable SQLite snapshot, and added freshness and provenance details to the interface. During verification I noticed upstream HTTP logs could expose provider credentials in request URLs, so I redacted sensitive query parameters before relying on public logs.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-snapshotvalidation"&gt;snapshot_validation&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Validate dated snapshot coverage and public-log safety&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Validate dated snapshot coverage and public-log safety&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Confirmed 53 selectable companies and added tests for credential redaction and snapshot integrity.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Add the strongest relevant challenge integrations, but do not bolt on unrelated features. I also need a demo website and recording.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I kept Gemma as the core category, enabled Entire for agent-development history, and added privacy-preserving Sentry spans that record only operational metadata such as model name, duration, token counts, validation counts, and generic error type. Tickers, prompts, generated prose, evidence, URLs, notes, and personal data are excluded.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-testsuite"&gt;test_suite&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Run unit tests and lint after observability and safety changes&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Run unit tests and lint after observability and safety changes&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;20 tests passed and Ruff reported no issues.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;For the public site, I added pre-generated, citation-checked Gemma examples while preserving live local generation for all 53 companies. This makes the hosted demo dependable without sending private research prompts to a paid API or requiring a large model on the server.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-browserverification"&gt;browser_verification&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Exercise the Streamlit selection and saved-example flow&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Exercise the Streamlit selection and saved-example flow&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Verified the rendered brief, evidence panel, navigation, and error-free public flow; recorded an MP4 walkthrough.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Yes, publish the repository and deploy the demo.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;The repository and Streamlit demo are live. The result is a small handoff-ready tool whose core generation path can run on a laptop with local Gemma, whose source claims remain auditable, and whose public mode remains stable and inexpensive.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        9 of 9 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;a href="https://dev.to/agent_sessions/building-argus-friend-brief-with-local-gemma-wtfqtx"&gt;Open the agent session on DEV&lt;/a&gt;&lt;/p&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; — Argus Friend Brief runs Gemma 3 4B locally through Ollama as the core research-translation engine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Sentry Agent Tracing&lt;/strong&gt; — metadata-only traces cover local model calls, validation failures, repair attempts, token usage, latency, and generic inference failures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Entire&lt;/strong&gt; — repository-scoped Codex hooks connect this change to its development session, preserving attributable implementation history without automatically publishing it.&lt;/li&gt;
&lt;/ul&gt;

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