<?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: Slevin Cordeiro</title>
    <description>The latest articles on DEV Community by Slevin Cordeiro (@shade555).</description>
    <link>https://dev.to/shade555</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%2F4155547%2F59233de8-fa8f-4939-ba96-5c1ed00720b1.png</url>
      <title>DEV Community: Slevin Cordeiro</title>
      <link>https://dev.to/shade555</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shade555"/>
    <language>en</language>
    <item>
      <title>ProofPocket: I Built an Open-Weight AI Agent That Turns Paperwork Chaos into Progress</title>
      <dc:creator>Slevin Cordeiro</dc:creator>
      <pubDate>Mon, 26 Oct 2026 01:18:10 +0000</pubDate>
      <link>https://dev.to/shade555/proofpocket-i-built-an-open-weight-ai-agent-that-turns-paperwork-chaos-into-progress-b08</link>
      <guid>https://dev.to/shade555/proofpocket-i-built-an-open-weight-ai-agent-that-turns-paperwork-chaos-into-progress-b08</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Meet &lt;strong&gt;ProofPocket&lt;/strong&gt; — an open-weight AI paperwork agent built around a simple idea: people shouldn't have to spend hours organizing documents when AI can handle the repetitive work.&lt;/p&gt;

&lt;p&gt;Whether you're preparing a scholarship application, organizing internship documents, or gathering paperwork for a program, the process is often the same: read the requirements, search through files, figure out what's missing, rename documents, and double-check everything.&lt;/p&gt;

&lt;p&gt;ProofPocket turns this tedious process into a structured, reviewable workflow.&lt;/p&gt;

&lt;p&gt;Here's what it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Understands requirements:&lt;/strong&gt; Converts application instructions into a structured checklist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finds relevant evidence:&lt;/strong&gt; Matches uploaded documents to requirements and explains why each match was suggested.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flags missing information:&lt;/strong&gt; Identifies missing documents, incomplete evidence, and ambiguous matches instead of blindly marking everything complete.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organizes the paperwork:&lt;/strong&gt; Suggests descriptive filenames and creates a downloadable application pack.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keeps humans in control:&lt;/strong&gt; Lets users review the results, correct mistakes, and approve the final pack before downloading it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't to replace human judgment. It's to eliminate the repetitive work that gets in the way of it.&lt;/p&gt;

&lt;p&gt;Instead of manually checking every document against every requirement, users can focus on the exceptions that actually need their attention.&lt;/p&gt;

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

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

&lt;p&gt;Repository: &lt;a href="https://github.com/Shade555/ProofPocket" rel="noopener noreferrer"&gt;ProofPocket on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is designed to be open source, with a modular AI architecture so developers can inspect, modify, and extend how document analysis works.&lt;/p&gt;

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

&lt;p&gt;ProofPocket combines a modern web application with an open-weight AI model and a structured document-processing pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The technology stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js and TypeScript:&lt;/strong&gt; The web application, dashboard, document upload workflow, and review interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemma:&lt;/strong&gt; The open-weight AI model used to interpret requirements, extract structured information from document text, and reason about potential evidence matches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas:&lt;/strong&gt; Stores project metadata, requirements, extracted fields, and relationships between documents and evidence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Render:&lt;/strong&gt; Hosts the application and its backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sentry:&lt;/strong&gt; Provides error monitoring and visibility into processing failures.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The processing pipeline separates deterministic operations from AI reasoning.&lt;/p&gt;

&lt;p&gt;First, uploaded files are validated and their text is extracted using suitable document-processing tools. The extracted text and application instructions are then passed through structured analysis. Gemma helps interpret the requirements and suggest relationships between available documents and required evidence.&lt;/p&gt;

&lt;p&gt;The application validates the resulting structured data and presents each match with its supporting evidence. When the evidence is insufficient or ambiguous, the requirement is sent for human review instead of being automatically marked as satisfied.&lt;/p&gt;

&lt;p&gt;Finally, the user can review the proposed document pack and generate a ZIP containing organized files and reports.&lt;/p&gt;

&lt;p&gt;This separation is important: the model handles language and ambiguity, while deterministic code handles validation, file operations, and output generation.&lt;/p&gt;

&lt;p&gt;The application is designed to support a configured Gemma inference endpoint rather than requiring large model weights to run on the web server itself. This keeps the deployment practical while preserving the ability to experiment with different open-weight model configurations.&lt;/p&gt;

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

&lt;p&gt;For ProofPocket, open innovation is about more than avoiding dependence on a single model API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The reasoning can be inspected and changed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Document requirements vary significantly. A scholarship application, internship application, and academic program may use different terminology for similar documents. An open-weight model makes it possible to experiment with prompts, model versions, and fine-tuning strategies to improve how the system interprets these requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The model is not locked into one provider.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By separating the AI provider from the application logic, developers can evaluate different compatible inference setups without rewriting the entire product. This makes it easier to compare quality, latency, and cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Local inference becomes a possible deployment option.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A compatible local inference setup can allow document analysis to run on a user's own machine, reducing the need to send sensitive document text to an external inference provider. This requires suitable hardware and configuration, but it offers a meaningful privacy advantage for users who need it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The workflow can improve through reproducible evaluation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developers can create synthetic test documents, define expected requirements and evidence matches, and evaluate where a model makes mistakes. They can investigate false positives, adjust the pipeline, and share improvements with the community.&lt;/p&gt;

&lt;p&gt;That last point matters particularly for paperwork automation. A system that confidently makes an incorrect match can be worse than one that admits uncertainty.&lt;/p&gt;

&lt;p&gt;Open innovation gives developers more freedom to investigate those failure modes rather than treating the model as an unquestionable black box.&lt;/p&gt;

&lt;p&gt;One important distinction: hosting ProofPocket on Render does not automatically make document processing private or offline. The privacy characteristics depend on where the inference runs, what information is transmitted, and how the application handles uploaded files.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;The real payoff is reducing the number of repetitive decisions a person has to make.&lt;/p&gt;

&lt;p&gt;Without ProofPocket, someone might repeatedly switch between an application instruction PDF, their downloads folder, scanned certificates, and a checklist to determine whether everything is ready.&lt;/p&gt;

&lt;p&gt;With ProofPocket, the intended workflow is simpler:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upload → Analyze → Review exceptions → Download.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The system brings the relevant evidence and missing items together, reducing unnecessary searching and repeated checking.&lt;/p&gt;

&lt;p&gt;I want the most meaningful measure of success to be the time spent reaching a correct, reviewable application pack—not the number of AI calls or the number of documents processed.&lt;/p&gt;

&lt;p&gt;The evaluation should compare manual completion time against assisted completion time using the same document set, while also measuring incorrect matches and missed requirements. That way, any time savings can be assessed alongside the accuracy of the result.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Render — Best Use of Render:&lt;/strong&gt; Hosting the deployed application and backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma — Best Use of Gemma:&lt;/strong&gt; Using an open-weight model for requirement interpretation and evidence matching.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB — Best Use of MongoDB Atlas:&lt;/strong&gt; Managing project data and document-to-requirement relationships, with semantic retrieval where configured.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sentry — Best Use of Sentry Agent Tracing:&lt;/strong&gt; Observing processing stages, errors, and performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These categories reflect the intended integrations; the final submission should include only those that are actually implemented and demonstrable.&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I Built a Private AI Spreadsheet Repair Tool That Runs on Windows, No Cloud API Required</title>
      <dc:creator>Slevin Cordeiro</dc:creator>
      <pubDate>Sun, 18 Oct 2026 16:54:05 +0000</pubDate>
      <link>https://dev.to/shade555/i-built-a-private-ai-spreadsheet-repair-tool-that-runs-on-windows-no-cloud-api-required-29ke</link>
      <guid>https://dev.to/shade555/i-built-a-private-ai-spreadsheet-repair-tool-that-runs-on-windows-no-cloud-api-required-29ke</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Small businesses deal with messy spreadsheets every day. Supplier lists, inventory records, and business data often contain duplicate entries, inconsistent categories, missing values, incorrectly formatted dates, and numbers stored as text.&lt;/p&gt;

&lt;p&gt;Cleaning this data manually takes time, and uploading sensitive business information to an external AI service isn't always an option.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;Patchwork AI&lt;/strong&gt; — an open-source, local-first Windows desktop application that helps users identify, understand, and repair messy spreadsheet data.&lt;/p&gt;

&lt;p&gt;Instead of sending spreadsheet contents to a cloud AI API, Patchwork AI combines deterministic data profiling with locally running AI models. The application can analyze data-quality issues and suggest transformations while keeping the user in control of the changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  What makes Patchwork AI different?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local-first AI:&lt;/strong&gt; Integrates with Ollama to run supported open-weight models locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic data profiling:&lt;/strong&gt; Identifies common data-quality issues without requiring an AI model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spreadsheet support:&lt;/strong&gt; Imports and exports CSV and Excel files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-assisted suggestions:&lt;/strong&gt; Helps with column mapping and category normalization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human-in-the-loop workflow:&lt;/strong&gt; Users can review proposed changes before applying them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safer transformations:&lt;/strong&gt; The original file is preserved rather than intentionally overwritten during export.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reviewability:&lt;/strong&gt; Includes change history and undo functionality to make data-cleaning decisions easier to inspect.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is simple: make useful AI-powered data cleaning accessible to people who don't want to depend on cloud APIs or send their business data to external AI providers.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Watch the demo:&lt;/strong&gt;&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/1KVhjb8rnnw" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;In this walkthrough, I demonstrate Patchwork AI using a deliberately messy supplier and inventory spreadsheet.&lt;/p&gt;

&lt;p&gt;The dataset contains inconsistent category names, mixed date formats, extra whitespace, missing values, duplicate-like records, inconsistent currency formatting, and invalid email addresses.&lt;/p&gt;

&lt;p&gt;The demo walks through importing the spreadsheet, identifying data-quality issues, reviewing proposed fixes, and exporting the resulting data.&lt;/p&gt;

&lt;p&gt;The aim is to show how Patchwork AI can make a spreadsheet that needs manual attention easier to inspect and clean.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/Shade555/patchwork-ai" rel="noopener noreferrer"&gt;https://github.com/Shade555/patchwork-ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Patchwork AI is open source and released under the Apache License 2.0.&lt;/p&gt;

&lt;p&gt;The repository includes the application source code, setup instructions, a sample dataset, and tests.&lt;/p&gt;

&lt;p&gt;Contributions, bug reports, and suggestions are welcome!&lt;/p&gt;

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

&lt;p&gt;I built Patchwork AI as a native Windows desktop application using &lt;strong&gt;C#, .NET 8, and WPF&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The project is organized into separate components for the desktop interface, data profiling, AI integration, transformation planning, transformation execution, and file import/export.&lt;/p&gt;

&lt;p&gt;The main technologies include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;C# and .NET 8:&lt;/strong&gt; Core application logic and desktop application runtime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WPF and WPF-UI:&lt;/strong&gt; Native Windows interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CommunityToolkit.Mvvm:&lt;/strong&gt; MVVM architecture and application state management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ClosedXML:&lt;/strong&gt; Excel workbook processing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CsvHelper:&lt;/strong&gt; CSV file processing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama:&lt;/strong&gt; Local inference through a locally running model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;xUnit:&lt;/strong&gt; Automated testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the important design decisions was to avoid making the AI responsible for every operation.&lt;/p&gt;

&lt;p&gt;Data-quality issues such as missing values, whitespace, duplicates, and inconsistent formatting can often be detected deterministically. These checks do not require an LLM.&lt;/p&gt;

&lt;p&gt;AI is used where it can add value, particularly when interpreting ambiguous column names or suggesting how inconsistent categories should be normalized. The application provides a workflow for reviewing proposed transformations before applying them.&lt;/p&gt;

&lt;p&gt;This separation makes the system more predictable than an approach where an LLM directly rewrites an entire spreadsheet.&lt;/p&gt;

&lt;p&gt;I also included a synthetic supplier-inventory dataset so that people can test the application without needing to provide their own business data.&lt;/p&gt;

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

&lt;p&gt;AI should not be limited to people and businesses that can afford cloud subscriptions or are comfortable sending their data to external services.&lt;/p&gt;

&lt;p&gt;Open-source tools allow developers to inspect how an application works, modify it for their own needs, and contribute improvements. Open-weight models and local inference also create opportunities to build AI applications without sending every request to a third-party AI provider.&lt;/p&gt;

&lt;p&gt;Patchwork AI brings these ideas into an everyday workflow: spreadsheet cleaning.&lt;/p&gt;

&lt;p&gt;A small business should be able to explore AI-assisted data cleaning while maintaining greater control over its files. A developer should also be able to inspect the code and extend the tool rather than being locked into a proprietary service.&lt;/p&gt;

&lt;p&gt;There is still work to do, especially around handling more complex spreadsheets, improving transformation suggestions, and expanding test coverage. Making the project open source means those improvements can happen collaboratively.&lt;/p&gt;

&lt;p&gt;For me, open innovation means making practical technology more accessible, understandable, and adaptable.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I used an AI coding assistant during development to help with implementation, debugging, and refining the application architecture.&lt;/p&gt;

&lt;p&gt;The development process involved separating deterministic data checks from AI-generated suggestions, organizing the application into maintainable services, and testing the spreadsheet import and transformation workflow.&lt;/p&gt;

&lt;p&gt;This helped me iterate on the project while keeping the code organized into smaller, more maintainable components.&lt;/p&gt;

&lt;h2&gt;
  
  
  My First User
&lt;/h2&gt;

&lt;p&gt;My first test user was me.&lt;/p&gt;

&lt;p&gt;I tested Patchwork AI using a synthetic supplier and inventory spreadsheet containing intentionally introduced data-quality problems. This allowed me to evaluate the import, profiling, transformation-review, and export workflow without exposing real business information.&lt;/p&gt;

&lt;p&gt;The test dataset also makes it easier for other developers to reproduce the same scenarios and verify how the application behaves.&lt;/p&gt;

&lt;p&gt;The next step is to get feedback from someone who regularly works with spreadsheets, especially someone managing inventory, suppliers, or small-business operations. Their feedback will help identify which data-cleaning features are genuinely useful and which parts of the workflow need improvement.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Featured Categories
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Best Use of Gemma — $200&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Patchwork AI is designed to support local inference through Ollama, and Gemma can be used as the local model for AI-assisted spreadsheet analysis and transformation suggestions.&lt;/p&gt;

&lt;p&gt;Thanks for organizing the Hacktoberfest Open-Source AI Challenge. Building Patchwork AI has been an opportunity to explore how local AI can solve a practical problem while keeping the user in control of their data.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Building Mundane: An Open-Source AI Field Investigator</title>
      <dc:creator>Slevin Cordeiro</dc:creator>
      <pubDate>Sun, 11 Oct 2026 12:50:51 +0000</pubDate>
      <link>https://dev.to/shade555/building-mundane-an-open-source-ai-field-investigator-2ffj</link>
      <guid>https://dev.to/shade555/building-mundane-an-open-source-ai-field-investigator-2ffj</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Most AI products are designed to capture your attention and keep you staring at a glowing rectangle. They give you instant, authoritative-sounding answers so you never have to leave your chair.&lt;/p&gt;

&lt;p&gt;I wanted to build the opposite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mundane&lt;/strong&gt; is an open-source AI field investigator that turns everyday outdoor observations into small, structured scientific inquiries. Instead of acting like an encyclopedia that dispenses prefabricated trivia, it acts like a curious field biologist walking alongside you. Its job is to help you notice physical reality, record empirical clues, evaluate competing hypotheses, and return with a deeper understanding of the world.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works in Practice
&lt;/h3&gt;

&lt;p&gt;Imagine you are walking down your street and notice something ordinary: small green rosettes of broadleaf plantain are flourishing along one narrow seam in the concrete sidewalk, but the parallel seam two feet away is completely bare.&lt;/p&gt;

&lt;p&gt;When you enter this observation into Mundane (or snap a photo and note that it rained yesterday):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Investigation Formulation&lt;/strong&gt;: The system generates a structured inquiry titled &lt;em&gt;"Pavement Fracture Botany"&lt;/em&gt;, articulating a central question, observable physical phenomena to look for, and a safe, practical field procedure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Continue Outdoors" Mode&lt;/strong&gt;: The interface switches to a high-contrast, distraction-free view designed to remain legible under direct sunlight. Crucially, each step explicitly instructs you to put your phone in your pocket, step back, and inspect the physical environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clue Collection &amp;amp; Grounded Breakdown&lt;/strong&gt;: When you record what you see—such as fine grit packed into the vegetated crack, or tire scuff marks near the bare seam—the AI doesn't just guess what's happening. It separates your notes into five rigorous categories:

&lt;ul&gt;
&lt;li&gt;Tangible, observable facts&lt;/li&gt;
&lt;li&gt;Reasonable deductions&lt;/li&gt;
&lt;li&gt;Competing alternative explanations&lt;/li&gt;
&lt;li&gt;Questions that remain unanswerable without microscopic or laboratory assays&lt;/li&gt;
&lt;li&gt;Safe next outdoor checks&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hypothesis Testing Matrix&lt;/strong&gt;: You form a hypothesis (e.g., &lt;em&gt;"The plant flourishes because foot traffic compaction keeps moisture from evaporating quickly"&lt;/em&gt;). The system compares your gathered field clues against this and alternative explanations (such as micro-topography runoff or seed dispersal shadows), grading them as &lt;em&gt;Supported&lt;/em&gt;, &lt;em&gt;Plausible but Unverified&lt;/em&gt;, &lt;em&gt;Inconclusive&lt;/em&gt;, or &lt;em&gt;Contradicted&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Field Journal Dossier&lt;/strong&gt;: Once complete, the investigation is archived into a persistent naturalist journal with explicit uncertainty ratings, your personal reflections, and a one-click Markdown export.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Mundane never presents an AI guess as a scientifically established fact. If a question cannot be resolved with the naked eye, the application explicitly says so.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repository&lt;/strong&gt;: &lt;a href="https://github.com/Shade555/Mundane" rel="noopener noreferrer"&gt;https://github.com/Shade555/Mundane&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Deployment&lt;/strong&gt;: &lt;a href="https://mundane-hynu.onrender.com/" rel="noopener noreferrer"&gt;https://mundane.onrender.com&lt;/a&gt; &lt;em&gt;(Hosted on Render)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Running 100% Locally
&lt;/h3&gt;

&lt;p&gt;If you want to run Mundane completely offline on your own machine without sending a single byte to an external server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Pull the open-weight Gemma model via Ollama&lt;/span&gt;
ollama pull gemma2:2b

&lt;span class="c"&gt;# 2. Clone the repository and install dependencies&lt;/span&gt;
git clone https://github.com/Shade555/Mundane.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Mundane
npm &lt;span class="nb"&gt;install&lt;/span&gt;

&lt;span class="c"&gt;# 3. Launch the local field desk&lt;/span&gt;
npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://localhost:3000&lt;/code&gt; and the app will detect your local Ollama instance automatically.&lt;/p&gt;

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

&lt;p&gt;The complete source code is open source under the Apache 2.0 license on GitHub:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/Shade555/Mundane" rel="noopener noreferrer"&gt;github.com/Shade555/Mundane&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Separation of Observation and Hypothesis
&lt;/h3&gt;

&lt;p&gt;One of the central design challenges was preventing the AI from hallucinating definitive conclusions when looking at ambiguous real-world phenomena. To enforce scientific discipline, every observation passes through a strict Zod schema before reaching the user:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/lib/ai/schemas/investigation.ts&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ObservationAnalysisSchema&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;object&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;directlyObservableEvidence&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Tangible, physical facts verified with the naked eye (colors, textures, moisture, orientation).&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;reasonableDeductions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Logical inferences derived directly from the observed evidence.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;alternativeExplanations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Other plausible reasons for the observed phenomenon.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;cannotBeDeterminedWithoutLab&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Questions requiring soil chemical testing, microscopic analysis, or longitudinal observation.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;recommendedNextFieldCheck&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;describe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;A practical, safe outdoor action the user can do right now to gather more clarity.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Combined with a deterministic safety validator that intercepts any instructions encouraging tasting wild plants, handling unknown fungi, disturbing wildlife, or trespassing, this ensures the system remains both safe and intellectually honest.&lt;/p&gt;

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

&lt;p&gt;Mundane is built around a clean, decoupled architecture where the user experience, AI inference, and persistence layers remain independent.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;graph TD
    Client["Next.js 15 Client ('Continue Outdoors' Sunlight Mode)"]
    API["Server Route Handlers (/api/ai/*)"]
    Safety["Outdoor Safety &amp;amp; Zod Schema Filter"]
    Mastra["Mastra Agent Coordinator"]
    Provider["AI Provider Interface"]
    Ollama["Local Ollama (Gemma 2 2B)"]
    Remote["Remote Inference (Groq / OpenAI-compatible)"]
    Storage["Storage Adapter (Local Offline Store / Supabase RLS)"]

    Client --&amp;gt; API
    Client --&amp;gt; Storage
    API --&amp;gt; Safety
    Safety --&amp;gt; Mastra
    Mastra --&amp;gt; Provider
    Provider --&amp;gt;|Local Mode| Ollama
    Provider --&amp;gt;|Cloud Mode| Remote&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  The Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend &amp;amp; App Framework&lt;/strong&gt;: Next.js 15 (App Router) with TypeScript and Tailwind CSS. The UI uses an earth-toned, editorial color palette (&lt;code&gt;paper&lt;/code&gt;, &lt;code&gt;forest&lt;/code&gt;, &lt;code&gt;charcoal&lt;/code&gt;, &lt;code&gt;botanical&lt;/code&gt;) designed specifically for readability outdoors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-Weight AI Models&lt;/strong&gt;: Google Gemma 2 (&lt;code&gt;gemma2:2b&lt;/code&gt; for fast, low-latency reasoning on standard CPUs) and Gemma multimodal (&lt;code&gt;gemma4:12b&lt;/code&gt; for photo analysis).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inference Runtime&lt;/strong&gt;: Ollama as the local runtime, connected via a configurable provider interface (&lt;code&gt;src/lib/ai/providers/ollama-provider.ts&lt;/code&gt;). When deployed to the cloud, the provider automatically speaks standard OpenAI-compatible wire format (tested with Groq hosting open-weight models like Qwen and Llama 3.3).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent Orchestration&lt;/strong&gt;: &lt;code&gt;@mastra/core&lt;/code&gt; coordinates the investigation synthesis, evaluating multi-hypothesis matrices and calibrating uncertainty ratings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage Layer&lt;/strong&gt;: Dual-mode storage adapter. By default, it operates 100% offline using the browser's local storage and in-memory store. When cloud sync is desired, it synchronizes with Supabase PostgreSQL protected by Row Level Security (RLS) migrations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting&lt;/strong&gt;: Configured for Render as a Web Service (&lt;code&gt;render.yaml&lt;/code&gt;) with full multi-stage Docker support.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Engineering Challenges &amp;amp; Trade-offs
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. The CPU Latency Problem on Local Hardware
&lt;/h4&gt;

&lt;p&gt;Initially, I tested running a larger 12B model (&lt;code&gt;gemma4:12b&lt;/code&gt;) for all text operations locally on my laptop. Because inference was executing on consumer CPU threads without a dedicated workstation GPU, each generation took between 90 and 180 seconds. Sitting on a park bench waiting three minutes for a response completely broke the user experience.&lt;/p&gt;

&lt;p&gt;Switching text reasoning to &lt;code&gt;gemma2:2b&lt;/code&gt; dropped response times to ~12–18 seconds while maintaining strict JSON grammar adherence. This taught me an important lesson: in an outdoor context where the user should be looking at trees rather than waiting for a spinner, a well-prompted small model beats an unwieldy large model every time.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Cross-Platform Module Resolution on Linux Containers
&lt;/h4&gt;

&lt;p&gt;During deployment to Render, the Next.js production build succeeded locally on Windows but failed on Render's Linux environment with &lt;code&gt;Module not found: Can't resolve '@/lib/db'&lt;/code&gt;. Because Windows is case-insensitive, subtle bundler alias quirks in Next.js client components were masked locally. Resolving this required configuring explicit Webpack path mappings in &lt;code&gt;next.config.ts&lt;/code&gt; and establishing deterministic relative imports for runtime instances.&lt;/p&gt;

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

&lt;p&gt;Open-source and open-weight AI is not just a philosophical preference for Mundane; it is the reason the application can exist in the form it does.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;True Privacy for Field Observations&lt;/strong&gt;: When someone uses an app to document their daily walks, they are recording where they spend time, what they notice near their home, and potentially uploading photos of their immediate surroundings. With closed, commercial APIs, that personal behavioral data is routinely routed through proprietary servers and retained for corporate training. With open-weight models running on Ollama, every observation, photo, and reflection stays on the user's physical machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Off-Grid, Signal-Free Autonomy&lt;/strong&gt;: Nature reserves, coastal trails, and rural woods rarely have reliable 5G connections. Proprietary API-dependent apps simply stop working the moment you cross the tree line. An open-weight model executing locally doesn't need an internet connection, an active subscription, or an API credit balance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Substitutability Without Vendor Lock-In&lt;/strong&gt;: Because the inference layer targets an open runtime rather than proprietary SDKs, users and developers can swap models as hardware allows—running &lt;code&gt;gemma2:2b&lt;/code&gt; on a modest laptop, a quantized Qwen model on an edge device, or a 70B parameter model on a local workstation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Weights vs. Open Source&lt;/strong&gt;: It is important to be clear about licensing terms. Google's Gemma models are distributed as &lt;em&gt;open weights&lt;/em&gt; under the Gemma Terms of Use (permitting commercial and research applications), while the Mundane application code is licensed under the OSI-approved Apache 2.0 license. Open innovation allows these two ecosystems to complement each other effectively.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;This project was built with an agentic pair-programming workflow in Google Antigravity. Automated test runs (all 27 tests passing across safety checks, JSON extraction, schemas, storage adapters, and end-to-end inference workflows) and iterative debugging logs were maintained throughout development.&lt;/p&gt;

&lt;p&gt;To view or import the corresponding DevRelay agent transcript:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developers using the DevRelay CLI can inspect and submit development logs using &lt;code&gt;devrelay sessions submit&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If you have an active DevRelay account, sessions can be viewed directly in your DevRelay profile.&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 Render&lt;/strong&gt;: Mundane is deployed as a production Web Service on Render (&lt;code&gt;render.yaml&lt;/code&gt;), hosting the Next.js App Router frontend and server route coordinator with zero manual infrastructure configuration.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>DigiPico: I Built a Gamified AI Companion with Mastra &amp; Gemma 4 to Help My Friend Fall in Love with Tech</title>
      <dc:creator>Slevin Cordeiro</dc:creator>
      <pubDate>Sun, 04 Oct 2026 18:05:00 +0000</pubDate>
      <link>https://dev.to/shade555/digipico-i-built-a-gamified-ai-companion-with-mastra-gemma-4-to-help-my-friend-fall-in-love-with-25de</link>
      <guid>https://dev.to/shade555/digipico-i-built-a-gamified-ai-companion-with-mastra-gemma-4-to-help-my-friend-fall-in-love-with-25de</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;DigiPico&lt;/strong&gt;, a gamified, mobile-first AI learning companion designed specifically for a close friend of mine who doesn't particularly like tech. &lt;/p&gt;

&lt;p&gt;As a developer, I’ve always wanted to share my passion for software with her, but she has always found the tech world deeply intimidating, dry, and unapproachable. Traditional learning platforms felt too much like reading a textbook, and code editors felt cold and unforgiving. I wanted her to be genuinely interested in how things work behind the scenes, so I realized I needed to disguise the learning process as a welcoming, interactive game. &lt;/p&gt;

&lt;p&gt;That’s where DigiPico comes in. Pico is a supportive, adorable blue penguin tutor that completely removes the intimidation factor from learning computer science. Instead of lecturing, Pico breaks down complex concepts into bite-sized, interactive learning paths. The app adapts to her specific interests, generates dynamic multiple-choice quizzes to test her knowledge, and even creates safe, browser-based JavaScript sandboxes where she can write and execute real code. Every time she completes a challenge or runs code without errors, she earns XP and unlocks achievements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Hand-off:&lt;/strong&gt;&lt;br&gt;
When I finally handed the app over to her to test on her phone, her reaction was incredible. She immediately gravitated towards the cute penguin, spent almost an hour playing through the JavaScript coding challenges, and told me: &lt;em&gt;"This is the first time programming actually felt like a fun puzzle game instead of an overwhelming math test."&lt;/em&gt; That alone made the whole weekend worth it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;📱 &lt;strong&gt;Best Experience:&lt;/strong&gt; DigiPico was designed from the ground up with a mobile-first UI. For the absolute best experience, open the link on your smartphone to see it behave exactly like a native app!&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;Live App:&lt;/strong&gt; &lt;a href="https://digipico.onrender.com/" rel="noopener noreferrer"&gt;https://digipico.onrender.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Tip: Create a new account, type in a topic like "Artificial Intelligence" or "Robotics", and interact with Pico across the Chat, Learn, and Build tabs!)&lt;/em&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/Shade555" rel="noopener noreferrer"&gt;
        Shade555
      &lt;/a&gt; / &lt;a href="https://github.com/Shade555/DigiPico" rel="noopener noreferrer"&gt;
        DigiPico
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🐣 DigiPico is a cute AI-powered tech companion that helps beginners discover, understand, and learn technology through personalized explanations, hands-on challenges, learning paths, and opportunities. Powered by Gemma 4 and an open AI stack, DigiPico turns tech curiosity into confidence and building.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
  # 🐧 DigiPico
&lt;p&gt;&lt;strong&gt;A gamified, mobile-first AI learning companion designed to cure tech intimidation.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://nextjs.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/61d3f8c81dfff3b1543fbfd0fc0ed80dc72b5be6b537225a7100a38ef3cff2e7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6578742e6a732d31342d626c61636b3f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6578742e6a73" alt="Next.js"&gt;&lt;/a&gt;
&lt;a href="https://tailwindcss.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4f1c13307cbd24dcd283c3a0526136fff11a525954cb2d11e7d70d0b18b00d3b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5461696c77696e642d4353532d3338423241433f7374796c653d666f722d7468652d6261646765266c6f676f3d7461696c77696e642d637373266c6f676f436f6c6f723d7768697465" alt="Tailwind CSS"&gt;&lt;/a&gt;
&lt;a href="https://mongodb.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fd80c20b1ae142699cdd685affae033c4487e98efeaedf322fcc07bc80e330bc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6f6e676f44422d41746c61732d3437413234383f7374796c653d666f722d7468652d6261646765266c6f676f3d6d6f6e676f6462266c6f676f436f6c6f723d7768697465" alt="MongoDB"&gt;&lt;/a&gt;
&lt;a href="https://ai.google.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/23be03e76fa9ad5ffd1369794b831b5569a18dd350ada71cd257000fe18b83ac/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d47656d6d615f342d3432383546343f7374796c653d666f722d7468652d6261646765266c6f676f3d676f6f676c65266c6f676f436f6c6f723d7768697465" alt="Gemma 4"&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;br&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🏗️ Architecture&lt;/h2&gt;
&lt;/div&gt;

  &lt;div class="js-render-enrichment-target"&gt;
    &lt;div class="render-plaintext-hidden"&gt;
      &lt;pre&gt;flowchart TD
    User(["📱 User / Capacitor Mobile"]) --&amp;gt; |HTTPS| Render
    
    subgraph Render [Render Monolith]
        UI[Frontend UI]
        API[Backend API Routes]
        UI &amp;lt;--&amp;gt; API
    end
    
    subgraph Brain [Mastra AI Orchestration]
        Mastra[Mastra Framework]
        Tools[Agent Tools]
        Mastra --- Tools
    end
    
    API &amp;lt;--&amp;gt;|Prompt/Response| Mastra
    
    Tools --&amp;gt;|Live Web Search| SerpApi["🌐 SerpApi"]
    Tools --&amp;gt;|Chat Memory| Backboard["🧠 Backboard"]
    
    Mastra &amp;lt;--&amp;gt;|Open-Weights LLM| Gemma["🤖 Gemma 4"]
    
    API &amp;lt;--&amp;gt;|Text-to-Speech| ElevenLabs["🗣️ ElevenLabs"]
    API &amp;lt;--&amp;gt;|Auth &amp;amp; Gamification| Mongo[("🍃 MongoDB Atlas")]
    API &amp;lt;--&amp;gt;|Tech Readiness Prediction| TabPFN["📊 TabPFN"]
    
    Render --&amp;gt;|Error &amp;amp; Agent Tracing| Sentry["👁️ Sentry"]
&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;span class="js-render-enrichment-loader d-flex flex-justify-center flex-items-center width-full"&gt;
    &lt;span&gt;
      &lt;span class="sr-only"&gt;Loading&lt;/span&gt;
&lt;/span&gt;
  &lt;/span&gt;


&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📖 Overview&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;DigiPico&lt;/strong&gt; was built for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01" rel="nofollow"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The goal? To help a non-technical friend fall in love with technology. Traditional tutorials feel like reading a dry textbook, and code editors are cold and unforgiving. DigiPico solves this by disguising tech education as a welcoming, interactive…&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/Shade555/DigiPico" 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;DigiPico is a Next.js monolithic full-stack application built around a powerful, open-source AI agent system. Here is exactly how every piece of the stack came together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Capacitor:&lt;/strong&gt; Because my friend is most comfortable on her phone, I designed the app for mobile screens first. The codebase is fully integrated with &lt;strong&gt;Capacitor&lt;/strong&gt;, allowing this exact web codebase to be seamlessly bundled as a native iOS and Android application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mastra Framework &amp;amp; Gemma 4:&lt;/strong&gt; I used the open-source &lt;strong&gt;Mastra&lt;/strong&gt; agent framework as the central orchestration layer. Mastra connects directly to a Google &lt;strong&gt;Gemma 4 (26B)&lt;/strong&gt; open-weights model. Gemma 4 was explicitly prompted to maintain Pico's warm, non-judgmental persona. Mastra allows Gemma 4 to seamlessly call custom background tools to generate strictly formatted JSON learning curriculums, dynamic quizzes, and customized JavaScript coding sandboxes on the fly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backboard:&lt;/strong&gt; For an AI companion to feel like a real friend, it needs context. I used Backboard to effortlessly persist the agent's memory and chat threads. This ensures Pico always remembers my friend's previous questions and progress.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas:&lt;/strong&gt; Serves as the robust primary database handling user authentication and gamification states like tracking her XP, daily streaks, and unlocked achievements. It also powers the app's seamless user experience by caching asynchronously generated AI curriculums and coding challenges in the background, ensuring near-instant load times when she navigates the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SerpApi:&lt;/strong&gt; Integrated as a custom Mastra tool, allowing Pico to actively search the live web for the latest beginner-friendly tech news and active hackathons to share with her in the chat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TabPFN:&lt;/strong&gt; I integrated TabPFN to run tabular machine learning predictions on her progress. It analyzes her accumulated XP, login streak, and quiz scores to predict a "Tech Readiness Score" subtly adjusting the difficulty of her curriculum.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ElevenLabs:&lt;/strong&gt; Text on a screen can still feel a bit clinical. I integrated ElevenLabs' Text-to-Speech API to give Pico an adorable, expressive voice in the chat interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sentry:&lt;/strong&gt; Nothing frustrates a beginner more than unexplained bugs. Sentry is implemented for full-stack error tracking and agent tracing to catch any UI crashes or AI generation errors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Render:&lt;/strong&gt; The entire monolithic Next.js application is deployed seamlessly as a single Web Service on &lt;strong&gt;Render&lt;/strong&gt;, configured entirely via a declarative &lt;code&gt;render.yaml&lt;/code&gt; blueprint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Copilot:&lt;/strong&gt; I heavily utilized &lt;strong&gt;GitHub Copilot&lt;/strong&gt; as my AI pair programming partner. Copilot dramatically accelerated my development speed over the weekend by scaffolding the complex Tailwind UI components and predicting boilerplate API route structures for the monolithic backend.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Open innovation was the absolute core of why this project worked. Using an open-weights model like &lt;strong&gt;Gemma 4&lt;/strong&gt; gave me complete control over how the agent behaved. Closed APIs often have strict, unpredictable safety guardrails that aggressively block attempts to generate raw, executable code snippets, or they forcefully inject corporate, formal tones into the chat. By using an open model like Gemma, I had the freedom to completely override its standard behavior to act exclusively as a playful, empathetic penguin without interference.&lt;/p&gt;

&lt;p&gt;Additionally, building on the open-source &lt;strong&gt;Mastra&lt;/strong&gt; agent framework let me seamlessly orchestrate different tools on my own terms. Instead of being locked into a single walled ecosystem, I had the absolute freedom to wire up SerpApi for live tech news and Backboard for memory exactly how I wanted. Open-source gave me the power to change how the agent behaves at a foundational level something a rigid, closed ecosystem would never allow.&lt;/p&gt;

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

&lt;p&gt;I am proudly entering the following partner categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Best Use of Render&lt;/li&gt;
&lt;li&gt;Best Use of TabPFN&lt;/li&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;li&gt;Best Use of Backboard&lt;/li&gt;
&lt;li&gt;Best Use of ElevenLabs&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 Sentry Agent Tracing&lt;/li&gt;
&lt;li&gt;Best Use of SerpApi&lt;/li&gt;
&lt;li&gt;Best Use of GitHub Copilot&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>First Post For Hacktoberfest</title>
      <dc:creator>Slevin Cordeiro</dc:creator>
      <pubDate>Thu, 01 Oct 2026 17:54:28 +0000</pubDate>
      <link>https://dev.to/shade555/first-post-for-hacktoberfest-10nc</link>
      <guid>https://dev.to/shade555/first-post-for-hacktoberfest-10nc</guid>
      <description>&lt;p&gt;its a test post, also for connecting DEV account to Hacktoberfest profile&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
