<?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: pan</title>
    <description>The latest articles on DEV Community by pan (@ayuzz10p).</description>
    <link>https://dev.to/ayuzz10p</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%2F4155586%2F68c1ba4c-8281-446f-a772-fa6f6c29b4a1.png</url>
      <title>DEV Community: pan</title>
      <link>https://dev.to/ayuzz10p</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ayuzz10p"/>
    <language>en</language>
    <item>
      <title>I Built an zero touch or automatic AI Time Tracker Because I Was Too Lazy to Track My Time 💀</title>
      <dc:creator>pan</dc:creator>
      <pubDate>Mon, 26 Oct 2026 06:05:10 +0000</pubDate>
      <link>https://dev.to/ayuzz10p/i-built-an-zero-touch-or-automatic-ai-time-tracker-because-i-was-too-lazy-to-track-my-time-8ka</link>
      <guid>https://dev.to/ayuzz10p/i-built-an-zero-touch-or-automatic-ai-time-tracker-because-i-was-too-lazy-to-track-my-time-8ka</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;Recently, I was reading &lt;em&gt;The Now Habit&lt;/em&gt;, a book about overcoming procrastination. It discussed something surprisingly simple: &lt;strong&gt;track where your time goes before trying to change how you spend it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Makes sense, right? So I decided to start tracking my time on paper, following one of the examples in the book.&lt;/p&gt;

&lt;p&gt;And then I did what any dedicated procrastinator would do.&lt;/p&gt;

&lt;p&gt;I procrastinated on tracking my procrastination. 💀&lt;/p&gt;

&lt;p&gt;Think about it. I was trying to stop wasting time, but the very first step required me to remember to write things down every time I switched tasks. Open a notebook, write down the task, note the time, remember to stop the timer, start another one…&lt;/p&gt;

&lt;p&gt;Bro, I needed a project manager just to manage the process of managing my time.&lt;/p&gt;

&lt;p&gt;So naturally, instead of doing the sensible thing and simply writing things down, &lt;strong&gt;I spent my time building an entire application to do it for me.&lt;/strong&gt; 😂&lt;/p&gt;

&lt;p&gt;Meet &lt;strong&gt;Time Tracker AI 2.0&lt;/strong&gt; — an automatic, AI-powered Windows time tracker built around one rule:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero steps to record your time. Your computer does the tracking; you do your thing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It quietly observes what I'm doing on my computer, records activity, identifies applications and websites, classifies tasks, builds a timeline, calculates productivity metrics, and alerts me when my actions don't match my plans.&lt;/p&gt;

&lt;p&gt;No manually starting timers. No reconstructing my entire day from memory at midnight. No spreadsheet that I enthusiastically create and abandon three days later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnya46nntaktq3oxuriez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnya46nntaktq3oxuriez.png" alt=" " width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What can it actually do?
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Automatic activity tracking
&lt;/h4&gt;

&lt;p&gt;The tracking engine continuously monitors my active Windows application, window title, activity duration, and idle periods in the background.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Automatically records application usage without requiring manual timers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Detects idle periods based on keyboard and mouse activity, without recording the actual keys I type.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tracks when applications change and merges consecutive observations into longer activity records.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supports starting, pausing, resuming, and stopping tracking.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Protects against duplicate tracking processes and includes recovery mechanisms for interrupted observations.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The raw observation loop runs at approximately one-second intervals. The application combines those observations into useful records rather than presenting every second as a separate task.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Automatic browser and website tracking
&lt;/h4&gt;

&lt;p&gt;An application name alone doesn't tell me much. Spending an hour in Chrome could mean studying Python, watching chess videos, browsing Reddit, or falling into a YouTube rabbit hole.&lt;/p&gt;

&lt;p&gt;Time Tracker AI tracks browser activity and attributes it to individual websites.&lt;/p&gt;

&lt;p&gt;It supports Chrome, Edge, Brave, Opera, Opera GX, Vivaldi, and Firefox through Windows accessibility automation and fallback title parsing.&lt;/p&gt;

&lt;p&gt;It can associate browser activity with website domains and page titles without requiring a dedicated browser extension. Captured URLs are sanitized to remove query parameters and fragments.&lt;/p&gt;

&lt;p&gt;The objective is to understand not just which application I opened, but what I was actually doing inside it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnscqao2k4moevjbsre3l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnscqao2k4moevjbsre3l.png" alt=" " width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Two-layer smart activity recognition
&lt;/h4&gt;

&lt;p&gt;Raw activity records aren't very useful until they have context.&lt;/p&gt;

&lt;p&gt;The application uses a rule-based classification pipeline first. It checks manual corrections, URL rules, website domains, application names, and window-title patterns in priority order.&lt;/p&gt;

&lt;p&gt;For more ambiguous activity, optional AI-assisted classification using the Gemma model family can provide richer descriptions and categories.&lt;/p&gt;

&lt;p&gt;The result is a structured activity record rather than a long list of cryptic executable names.&lt;/p&gt;

&lt;p&gt;I can also create custom categories and rules, adjust how applications and websites are classified, and correct mistakes directly from the timeline.&lt;/p&gt;

&lt;p&gt;The system includes built-in categories for coding and development, research and learning, communication, utilities and system activity, entertainment, social browsing, uncategorized activity, and idle gaps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frxwwawiipjvbkw8blkqd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frxwwawiipjvbkw8blkqd.png" alt=" " width="799" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Privacy-aware screenshot analysis
&lt;/h4&gt;

&lt;p&gt;Sometimes an application title doesn't tell the whole story.&lt;/p&gt;

&lt;p&gt;The project includes an optional vision-analysis path for ambiguous windows. When the configured Ollama vision service is available, screenshots can be analyzed to provide additional context about the activity.&lt;/p&gt;

&lt;p&gt;A sensitive-application blacklist suppresses screenshot processing for configured windows and applications, including password managers, authentication tools, banking-related windows, and other sensitive contexts.&lt;/p&gt;

&lt;p&gt;The vision functionality is optional. Core time recording doesn't require an AI vision model to be running.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. A timeline that makes sense
&lt;/h4&gt;

&lt;p&gt;Recording thousands of observations is easy. Turning them into a readable story of the day is the harder part.&lt;/p&gt;

&lt;p&gt;The interactive timeline groups related observations into sessions and helps distinguish between different kinds of activity.&lt;/p&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clustered View:&lt;/strong&gt; A cleaner, human-readable view of longer sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detailed View:&lt;/strong&gt; A granular view of the underlying observations.&lt;/li&gt;
&lt;li&gt;Search and category filters.&lt;/li&gt;
&lt;li&gt;Timeline zoom controls and chronological navigation.&lt;/li&gt;
&lt;li&gt;Session details, including duration, application, title, website, and confidence information.&lt;/li&gt;
&lt;li&gt;Warnings for uncertain classifications.&lt;/li&gt;
&lt;li&gt;Manual editing of session descriptions and categories.&lt;/li&gt;
&lt;li&gt;Custom rules that make future classification more consistent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Manual corrections are saved so that corrected classifications can take precedence over automatic classifications when the timeline is loaded again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqetzen5d7t77ipxvu21x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqetzen5d7t77ipxvu21x.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  6. Productivity analytics and reports
&lt;/h4&gt;

&lt;p&gt;This is where all that tracking becomes useful.&lt;/p&gt;

&lt;p&gt;The dashboard provides an overview of focused work, productive work, distraction time, and daily goal progress, including comparisons against the previous day.&lt;/p&gt;

&lt;p&gt;The analytics section lets me investigate my activity across today, yesterday, the last seven days, the last 30 days, this week, this month, and custom date ranges.&lt;/p&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Productivity and focus metrics.&lt;/li&gt;
&lt;li&gt;Distraction-time breakdowns.&lt;/li&gt;
&lt;li&gt;Hourly activity visualizations and focus-versus-distraction patterns.&lt;/li&gt;
&lt;li&gt;App usage and website-domain breakdowns.&lt;/li&gt;
&lt;li&gt;Top Interruptors, which help identify applications and idle gaps associated with fragmented work.&lt;/li&gt;
&lt;li&gt;A calculated Productivity Score.&lt;/li&gt;
&lt;li&gt;Comparisons across different dates and reporting periods.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of guessing whether I spent the day productively, I can inspect the data and see where my time actually went.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdur2bzws7aaasqxrk72j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdur2bzws7aaasqxrk72j.png" alt=" " width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  7. Time blocking, focus sessions, and goals
&lt;/h4&gt;

&lt;p&gt;Tracking what happened is only half the problem. I also need to compare it with what I intended to do.&lt;/p&gt;

&lt;p&gt;The time-blocking system lets me schedule a task, specify its start time and duration, and assign a target category.&lt;/p&gt;

&lt;p&gt;I can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create, edit, duplicate, shift, and delete time blocks.&lt;/li&gt;
&lt;li&gt;Choose quick durations such as 25, 50, or 90 minutes, or set a custom duration.&lt;/li&gt;
&lt;li&gt;Detect overlapping blocks before saving.&lt;/li&gt;
&lt;li&gt;Start a focus session associated with a planned block.&lt;/li&gt;
&lt;li&gt;Review plan adherence and see how much of the scheduled period matched the intended activity.&lt;/li&gt;
&lt;li&gt;Set daily targets for work, focus, study, and distraction limits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important distinction is that a planned task and a recorded task aren't treated as the same thing. The tracker can compare what I intended to do with what actually happened.&lt;/p&gt;

&lt;h4&gt;
  
  
  8. Smart Windows notifications and accountability
&lt;/h4&gt;

&lt;p&gt;This is one of my favourite features because it helps close the gap between making a plan and following it.&lt;/p&gt;

&lt;p&gt;Time Tracker AI can generate native Windows notifications for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upcoming and starting time blocks.&lt;/li&gt;
&lt;li&gt;Sustained activity that doesn't match the planned task.&lt;/li&gt;
&lt;li&gt;Prolonged idle periods.&lt;/li&gt;
&lt;li&gt;Missed-activity gaps that may need to be filled in after returning to the computer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The notifications support relevant actions, such as starting a focus session, snoozing an alert, skipping a block, opening the planner, reviewing activity, or switching tasks.&lt;/p&gt;

&lt;p&gt;It also includes configurable notification preferences, idle thresholds, notification sounds, quiet hours, and a notification history.&lt;/p&gt;

&lt;p&gt;The notification logic includes grace periods, cooldowns, and suppression rules to reduce unnecessary alerts.&lt;/p&gt;

&lt;p&gt;If I return after being away for a long time, the application can offer a recovery prompt so I can manually add activity that wasn't recorded. It doesn't need to pretend it knows exactly what happened while I was gone.&lt;/p&gt;

&lt;p&gt;The aim is accountability without turning my desktop into a notification factory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftcrzyvsdq93ebrg7muvm.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftcrzyvsdq93ebrg7muvm.jpeg" alt=" " width="478" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  9. An AI productivity coach
&lt;/h4&gt;

&lt;p&gt;The project includes an AI Coach for questions about my day.&lt;/p&gt;

&lt;p&gt;It supports structured queries about productivity summaries, distractions, focus, goals, time blocks, and activity breakdowns. These common questions can be answered using metrics obtained directly from the local database.&lt;/p&gt;

&lt;p&gt;For more open-ended questions, the application can use an available Ollama language model, with verified activity metrics supplied as context.&lt;/p&gt;

&lt;p&gt;If the model isn't available, supported requests can return a deterministic summary of the available data instead.&lt;/p&gt;

&lt;p&gt;The purpose isn't to let a chatbot invent productivity statistics. It's to make the information already collected easier to understand and act on.&lt;/p&gt;

&lt;p&gt;The coach also has suggested prompts and navigation actions that can take me directly to relevant parts of the application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqpqlfdk4n863slmbxc41.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqpqlfdk4n863slmbxc41.png" alt=" " width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa6xxi66a4w030uz8lvas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa6xxi66a4w030uz8lvas.png" alt=" " width="799" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  10. A floating desktop widget
&lt;/h4&gt;

&lt;p&gt;I don't want to keep opening my dashboard just to check my active session.&lt;/p&gt;

&lt;p&gt;The floating mini-widget stays on top of other windows and provides a compact view of my tracking status.&lt;/p&gt;

&lt;p&gt;It displays the active task, elapsed session time, and daily progress. It supports expanded and compact layouts, tracking controls, task editing, and saved window positioning.&lt;/p&gt;

&lt;p&gt;That means I can keep it visible while coding, browsing documentation, or working in a terminal without constantly switching away from what I'm doing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0lui4xo9z1vl2nzn99as.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0lui4xo9z1vl2nzn99as.png" alt=" " width="436" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  11. Data export, settings, and recovery
&lt;/h4&gt;

&lt;p&gt;The application also includes the less glamorous features that make a real tool usable.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CSV exports:&lt;/strong&gt; Download detailed activity records or summaries of application and website usage for a selected date range.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Settings:&lt;/strong&gt; Configure notification behaviour, quiet hours, idle thresholds, and other preferences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Profile management:&lt;/strong&gt; Edit the local user profile.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autostart:&lt;/strong&gt; Optionally launch the application when logging in to Windows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local diagnostics:&lt;/strong&gt; Inspect database-related information to help troubleshoot the tracker.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent storage:&lt;/strong&gt; Keep observations, activity classifications, time blocks, goals, notifications, settings, and reports in SQLite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recovery mechanisms:&lt;/strong&gt; Audit and repair certain interrupted or unfinished observations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  12. A standalone Windows application
&lt;/h4&gt;

&lt;p&gt;I didn't want the final product to be just another development server that needed to be opened in a browser.&lt;/p&gt;

&lt;p&gt;The project combines a Python backend, a React and TypeScript interface, FastAPI, SQLite, and PyWebView into a dedicated Windows desktop application.&lt;/p&gt;

&lt;p&gt;It includes a custom desktop title bar, minimize and maximize controls, window management, a single-instance mechanism, and lifecycle handling for closing the application while tracking is active.&lt;/p&gt;

&lt;p&gt;The project also has Windows packaging and installer scripts, desktop and Start Menu shortcuts, an uninstaller, and support for opening the application through notification actions.&lt;/p&gt;

&lt;p&gt;The intended experience is a proper desktop application rather than a website I have to remember to open.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Demo video:&lt;/strong&gt; &lt;a href="https://dev.tourl"&gt;https://youtu.be/XNiH-a5P9Zg?si=oiFGwKcNzyiUlEWK&lt;/a&gt;&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/pan103769/time-tracker_ai-2.0" rel="noopener noreferrer"&gt;Time Tracker AI 2.0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is built primarily with Python, React, TypeScript, FastAPI, SQLite, and PyWebView.&lt;/p&gt;

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

&lt;p&gt;The architecture separates the Windows tracking engine from the API, database, AI-assisted interpretation, and desktop interface. The tracking engine collects observations, the database stores them, the backend calculates metrics and handles classification, and the frontend presents the results.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where AI fits in
&lt;/h3&gt;

&lt;p&gt;I use &lt;strong&gt;Ollama-compatible models, including the Gemma model family&lt;/strong&gt;, for optional AI-powered activity interpretation and related features. The project also contains a Llama 3.2 configuration for open-ended AI Coach queries.&lt;/p&gt;

&lt;p&gt;The Gemma-related paths support text interpretation, optional vision analysis, and natural-language productivity summaries, depending on their configuration and availability.&lt;/p&gt;

&lt;p&gt;I deliberately kept deterministic logic at the centre of the application. Recording an observation, calculating a duration, checking a scheduled time block, or aggregating a report doesn't inherently require an LLM.&lt;/p&gt;

&lt;p&gt;AI is used where interpretation can add value. Rules and database calculations handle the tasks that are better suited to deterministic logic.&lt;/p&gt;

&lt;p&gt;This hybrid design also means that losing access to a model doesn't have to stop the core tracker.&lt;/p&gt;

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

&lt;p&gt;I'm a student, and I don't have an unlimited budget for building software.&lt;/p&gt;

&lt;p&gt;I want to experiment with AI, build real projects, and keep iterating. But sending every classification and analysis request to an expensive closed API can make experimentation costly, particularly for a product that runs continuously.&lt;/p&gt;

&lt;p&gt;Open-weight models give me more flexibility.&lt;/p&gt;

&lt;p&gt;With an appropriate local model and compatible hardware, I can run inference without paying a per-token fee to a hosted API. I can experiment with different models, control the configuration, and decide which operations actually benefit from AI.&lt;/p&gt;

&lt;p&gt;Cloud-hosted model options are useful too, but they can require network access and may have different costs or authentication requirements. The important part is being able to choose how each feature is implemented.&lt;/p&gt;

&lt;p&gt;Open models also let me learn by exploring how inference fits into a real application instead of treating an AI API as a magic box.&lt;/p&gt;

&lt;p&gt;For someone building independently on a student budget, that freedom matters. It lowers the cost of experimentation and makes it easier to turn an idea into something practical.&lt;/p&gt;

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

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

&lt;p&gt;The biggest payoff is that I no longer have to remember to start and stop timers every time I switch tasks. Earlier, I'd start a timer, move to another task, and completely forget to stop the original one. Suddenly, my two-hour coding session somehow lasted six hours. My time tracking was tracking fiction. 💀&lt;/p&gt;

&lt;p&gt;Now I can sit down to code, research a topic, or watch a tutorial, and the tracker records the activity in the background. Later, I can inspect the timeline, review my productivity, find interruptions, export the data, and compare my actual behaviour against the schedule I made.&lt;/p&gt;

&lt;p&gt;And when I plan to spend an hour studying but drift into unrelated activity, the application can help me notice that mismatch before the end of the day.&lt;/p&gt;

&lt;p&gt;It's not going to magically cure my procrastination. Unfortunately, no amount of Python can guarantee that I won't find a new way to waste three hours.&lt;/p&gt;

&lt;p&gt;But it removes one excuse: I can't procrastinate on tracking my time when the tracking happens automatically.&lt;/p&gt;

&lt;p&gt;I started this project because I wanted to build a habit from The Now Habit. Somewhere along the way, that simple attempt turned into a much larger experiment in Windows automation, data analysis, AI, and product development.&lt;/p&gt;

&lt;p&gt;The project is still evolving, but that is the idea behind Time Tracker AI 2.0: make tracking effortless, make the data useful, and make it easier to notice when my actions don't match my intentions.&lt;/p&gt;

&lt;p&gt;And hopefully, spend less time building increasingly elaborate systems to help me stop wasting time.&lt;/p&gt;

&lt;p&gt;Although, looking at this project, I may need to build a tracker for the time I spend building trackers. 💀&lt;/p&gt;

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

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

&lt;p&gt;The project uses the Gemma model family for optional AI-powered activity interpretation and related analysis paths. Rather than sending every observation to an AI model, I combine model-assisted interpretation with deterministic tracking, classification rules, and local analytics.&lt;/p&gt;

&lt;p&gt;That hybrid approach lets AI add context where it's useful while keeping core tracking and reporting functional without constant model inference.&lt;/p&gt;

&lt;p&gt;Best Use of GitHub Copilot&lt;br&gt;
GitHub Copilot helped me understand unfamiliar code, explore implementation ideas, debug errors, and refine features while building this project as a student. &lt;/p&gt;

&lt;p&gt;It made development faster and helped me learn along the way, but testing and fixing things when they broke was still on me! 🚀&lt;/p&gt;

&lt;p&gt;But it removes one excuse: &lt;strong&gt;I can't procrastinate on tracking my time when the tracking happens automatically.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I started this project because I wanted to build a habit from &lt;em&gt;The Now Habit&lt;/em&gt;. Somewhere along the way, that simple attempt turned into a much larger experiment in Windows automation, data analysis, AI, and product development.&lt;/p&gt;

&lt;p&gt;The project is still evolving, but that is the idea behind Time Tracker AI 2.0: make tracking effortless, make the data useful, and make it easier to notice when my actions don't match my intentions.&lt;/p&gt;

&lt;p&gt;And hopefully, spend less time building increasingly elaborate systems to help me stop wasting time.&lt;/p&gt;

&lt;p&gt;Although, looking at this project, I may need to build a tracker for the time I spend building trackers. 💀&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Best Use of Gemma
&lt;/h3&gt;

&lt;p&gt;The project uses the Gemma model family for optional AI-powered activity interpretation and related analysis paths. Rather than sending every observation to an AI model, I combine model-assisted interpretation with deterministic tracking, classification rules, and local analytics.&lt;/p&gt;

&lt;p&gt;That hybrid approach lets AI add context where it's useful while keeping core tracking and reporting functional without constant model inference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Use of GitHub Copilot
&lt;/h3&gt;

&lt;p&gt;GitHub Copilot helped me throughout the process of turning this idea into a working application.&lt;/p&gt;

&lt;p&gt;As a student, I'm still learning how to design and maintain larger software projects. Building a system that combines Windows APIs, background processes, a database, a backend, a React interface, AI integrations, and desktop packaging meant dealing with plenty of unfamiliar code and concepts.&lt;/p&gt;

&lt;p&gt;Copilot helped me think through implementation approaches, understand existing code, explore unfamiliar functions, and translate ideas into concrete code changes. It was also useful when working through errors, refining implementations, and understanding how different parts of the application fit together.&lt;/p&gt;

&lt;p&gt;One of the biggest benefits was being able to investigate why something worked instead of blindly copying a solution. Understanding why matters when multiple components need to communicate reliably.&lt;/p&gt;

&lt;p&gt;AI-assisted development wasn't a magic button, either. Suggestions still needed to be inspected, tested, and debugged. Sometimes a fix introduced a new issue, or the initial diagnosis turned out to be wrong. That meant iterating: understand the problem, explore a solution, implement it, and verify the result.&lt;/p&gt;

&lt;p&gt;For me, Copilot was less about generating an entire application with one prompt and more about accelerating the development and learning process. It helped me work through unfamiliar technical challenges while learning about software architecture, debugging, integration, and product development along the way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The biggest lesson was that AI assistance is most useful when it helps you understand and improve your work, not when you stop questioning its output.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Hello, any chess players out there? ♟️

I built something specifically for a problem I kept seeing while studying chess. Would love for you to check it out and tell me what you think!</title>
      <dc:creator>pan</dc:creator>
      <pubDate>Mon, 05 Oct 2026 05:43:18 +0000</pubDate>
      <link>https://dev.to/ayuzz10p/hello-any-chess-players-out-there-i-built-something-specifically-for-a-problem-i-kept-27fi</link>
      <guid>https://dev.to/ayuzz10p/hello-any-chess-players-out-there-i-built-something-specifically-for-a-problem-i-kept-27fi</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/ayuzz10p/chess-fen-tastic-from-screenshot-to-playable-chess-position-in-seconds-530j" class="crayons-story__hidden-navigation-link"&gt;♟️ Chess FEN-tastic: From Screenshot to Playable Chess Position in Seconds with Gemma&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/ayuzz10p/chess-fen-tastic-from-screenshot-to-playable-chess-position-in-seconds-530j" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Hacktoberfest Weekend Challenge: Build for a Friend Submission 🤝&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/ayuzz10p" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4155586%2F68c1ba4c-8281-446f-a772-fa6f6c29b4a1.png" alt="ayuzz10p profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/ayuzz10p" class="crayons-story__secondary fw-medium m:hidden"&gt;
              pan
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                pan
                
                
              
              &lt;div id="story-author-preview-content-4799446" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/ayuzz10p" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4155586%2F68c1ba4c-8281-446f-a772-fa6f6c29b4a1.png" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;pan&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/ayuzz10p/chess-fen-tastic-from-screenshot-to-playable-chess-position-in-seconds-530j" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 5&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/ayuzz10p/chess-fen-tastic-from-screenshot-to-playable-chess-position-in-seconds-530j" id="article-link-4799446"&gt;
          ♟️ Chess FEN-tastic: From Screenshot to Playable Chess Position in Seconds with Gemma
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/weekendchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;weekendchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hf26challenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hf26challenge&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/ayuzz10p/chess-fen-tastic-from-screenshot-to-playable-chess-position-in-seconds-530j" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/ayuzz10p/chess-fen-tastic-from-screenshot-to-playable-chess-position-in-seconds-530j#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>gamedev</category>
      <category>showdev</category>
      <category>tools</category>
    </item>
    <item>
      <title>♟️ Chess FEN-tastic: From Screenshot to Playable Chess Position in Seconds with Gemma</title>
      <dc:creator>pan</dc:creator>
      <pubDate>Mon, 05 Oct 2026 05:35:51 +0000</pubDate>
      <link>https://dev.to/ayuzz10p/chess-fen-tastic-from-screenshot-to-playable-chess-position-in-seconds-530j</link>
      <guid>https://dev.to/ayuzz10p/chess-fen-tastic-from-screenshot-to-playable-chess-position-in-seconds-530j</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;&lt;strong&gt;My friend recently started learning chess seriously.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;He started reading chess books and watching grandmasters play, and there was one problem that kept coming up.&lt;/p&gt;

&lt;p&gt;Almost every chess book, &lt;strong&gt;whether it's about theory, tactics, or positional chess, is filled with lots of positions to study&lt;/strong&gt; — diagrams showing a position and asking you to understand the idea, find the move, or analyze what happens next.&lt;/p&gt;

&lt;p&gt;But there’s a frustrating gap between &lt;strong&gt;seeing the position&lt;/strong&gt; and &lt;strong&gt;actually analyzing it on a digital board&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;He'd see something like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“White to move. Find the best continuation.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Great.&lt;/p&gt;

&lt;p&gt;Except the position is sitting there as a &lt;strong&gt;picture in a book&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To analyze it online, he has to manually recreate the position:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Find the board → identify every piece → place every piece → check the position → finally start analyzing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Do that once? Fine.&lt;/p&gt;

&lt;p&gt;Do it for &lt;strong&gt;hundreds of positions across multiple chess books?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yeah. No.&lt;/p&gt;

&lt;p&gt;That was the problem I wanted to get rid of.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Chess FEN-tastic&lt;/strong&gt;, using &lt;strong&gt;Gemma 4 Cloud&lt;/strong&gt; to turn chess positions into structured, playable positions.&lt;/p&gt;

&lt;p&gt;And yes, I know the name is a little... &lt;strong&gt;supercalifragilisticexpialidocious&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's exactly why I chose it. Chess FEN-tastic is supposed to make something tedious feel ridiculously simple — so I wanted a name that was just as ridiculously fun.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bring any two-dimensional chess position to a digital, playable board in one click — in 3–4 seconds.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of manually rebuilding the position, you simply select it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma sees the board. Python converts it. Lichess makes it playable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And suddenly that annoying gap between &lt;strong&gt;reading about a position&lt;/strong&gt; and &lt;strong&gt;actually analyzing it on a board&lt;/strong&gt; disappears.&lt;/p&gt;

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

&lt;p&gt;🔗 &lt;a href="https://github.com/user-attachments/assets/295e3b56-27d2-4324-8043-491a88122031" rel="noopener noreferrer"&gt;Demo Video&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;🔗 &lt;a href="https://github.com/pan103769/chess-fen-tastic" rel="noopener noreferrer"&gt;View the source code on GitHub&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The interesting part of Chess FEN-tastic isn't generating FEN.&lt;/p&gt;

&lt;p&gt;The real challenge is &lt;strong&gt;understanding the chess position inside the image&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A human can look at a chess diagram and immediately understand what's happening.&lt;/p&gt;

&lt;p&gt;A computer sees pixels.&lt;/p&gt;

&lt;p&gt;That's where &lt;strong&gt;Gemma 4 Cloud&lt;/strong&gt; became the heart of the project.&lt;/p&gt;

&lt;p&gt;I give Gemma the actual screenshot of the chess position and ask it to reconstruct &lt;strong&gt;all 64 squares&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It identifies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;♔ Which squares contain pieces&lt;/li&gt;
&lt;li&gt;♟️ What type of piece is there&lt;/li&gt;
&lt;li&gt;⚪ Whether each piece is white or black&lt;/li&gt;
&lt;li&gt;⬜ Which squares are empty&lt;/li&gt;
&lt;li&gt;🔄 Which side is to move&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of asking Gemma to directly produce a FEN string, I have it return a structured representation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a8: black_rook
b8: empty
c8: black_king
...
h1: white_rook
side_to_move: white
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is an important design choice.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Gemma interprets. Python formalizes.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gemma handles the part that requires visual understanding.&lt;/p&gt;

&lt;p&gt;Python handles the part that should be deterministic.&lt;/p&gt;

&lt;p&gt;The pipeline becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;       CHESS POSITION
             │
             ▼
        📸 SCREENSHOT
             │
             ▼
      🧠 GEMMA 4 CLOUD
             │
             ▼
     64 SQUARES RECOGNIZED
             │
             ▼
      STRUCTURED POSITION
             │
             ▼
       🐍 PYTHON → FEN
             │
             ▼
       ♟️ LICHESS BOARD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI isn't just sitting on top of the project as a chatbot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visual recognition is the actual core problem.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Without understanding the image, there is no position to convert.&lt;/p&gt;

&lt;p&gt;What I really liked about using Gemma here is that I could take a powerful &lt;strong&gt;vision-language capability&lt;/strong&gt; and apply it to a very specific problem.&lt;/p&gt;

&lt;p&gt;I didn't want to build another generic AI assistant.&lt;/p&gt;

&lt;p&gt;I wanted to solve a very small but surprisingly annoying problem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How do you turn a chess position that a human can see into a chess position that a computer can use?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gemma acts as the bridge between those two worlds.&lt;/p&gt;

&lt;p&gt;It takes something visual and ambiguous — an image of a chessboard — and turns it into structured information my program can work with.&lt;/p&gt;

&lt;p&gt;And the result is remarkably simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Image → Gemma → structured position → FEN → playable board&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One screenshot.&lt;/p&gt;

&lt;p&gt;One model.&lt;/p&gt;

&lt;p&gt;One structured output.&lt;/p&gt;

&lt;p&gt;One playable position.&lt;/p&gt;

&lt;p&gt;That's what makes Gemma so important to Chess FEN-tastic.&lt;/p&gt;

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

&lt;p&gt;The biggest reason open innovation mattered for this project is &lt;strong&gt;accessibility and control&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I wanted to build a focused tool around a vision-language model without having to build an entire computer-vision system from scratch.&lt;/p&gt;

&lt;p&gt;Gemma gave me a model capable of understanding the visual input, while &lt;strong&gt;Ollama provided the interface for integrating the model into my Python application&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That separation made the project possible as a small, focused experiment:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I could concentrate on solving the chess problem instead of reinventing visual recognition.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It also means the architecture isn't tied to a single application-specific chess API. The model interprets the image, while my own code controls the structured representation, validation, FEN generation, and final output.&lt;/p&gt;

&lt;p&gt;The result is a simple combination of open technologies solving a very specific real-world problem.&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; — The heart of the project. Gemma turns a visual chess position into structured data, making the entire Image → FEN → playable board workflow possible.&lt;/li&gt;
&lt;/ul&gt;

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