<?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: AI Predictions Dev</title>
    <description>The latest articles on DEV Community by AI Predictions Dev (@aipredictions_dev).</description>
    <link>https://dev.to/aipredictions_dev</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%2F3848303%2F8503f0f9-4dcb-4185-aba1-b79b8d72714b.png</url>
      <title>DEV Community: AI Predictions Dev</title>
      <link>https://dev.to/aipredictions_dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aipredictions_dev"/>
    <language>en</language>
    <item>
      <title>Stop Copy-Pasting Regex from Stack Overflow</title>
      <dc:creator>AI Predictions Dev</dc:creator>
      <pubDate>Fri, 03 Jul 2026 13:00:02 +0000</pubDate>
      <link>https://dev.to/aipredictions_dev/stop-copy-pasting-regex-from-stack-overflow-l80</link>
      <guid>https://dev.to/aipredictions_dev/stop-copy-pasting-regex-from-stack-overflow-l80</guid>
      <description>&lt;p&gt;We’ve all been there. You need to validate an email address, or extract a specific pattern from a log file, or sanitize user input in a security-sensitive backend. You know you need a regular expression. You open your favorite regex playground, type in &lt;code&gt;^\w+&lt;/code&gt;, realize it’s not quite right, tweak it, test it, break it, tweak it again, and eventually copy-paste it into your codebase.&lt;/p&gt;

&lt;p&gt;The problem isn’t just that writing regex is hard. It’s that &lt;strong&gt;reading&lt;/strong&gt; and &lt;strong&gt;explaining&lt;/strong&gt; regex is even harder. A week later, when a bug surfaces because the regex didn’t handle a hyphenated name, you stare at that string of symbols and wonder what you were thinking.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;RegexBuilder&lt;/strong&gt; to solve the "what was I thinking?" problem, but with a specific constraint: I wanted it to work entirely in your browser, with zero data leaving your machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Wedge: Privacy-First, Real-Time Explanation
&lt;/h2&gt;

&lt;p&gt;Most regex tools are simple validators. You type a pattern, you type a test string, and you get a green check or a red X. Some fancier ones highlight matches. But they don’t help you understand &lt;em&gt;why&lt;/em&gt; a pattern works or fails, and they certainly don’t help you write the pattern in the first place.&lt;/p&gt;

&lt;p&gt;RegexBuilder flips this. Instead of starting with the regex, you start with the problem. You describe what you’re trying to do in plain English: “Extract all hex color codes from a CSS file” or “Validate a strong password with at least one uppercase, one number, and one special character.”&lt;/p&gt;

&lt;p&gt;The tool then generates the regex for you. But the real value isn’t the generation—it’s the explanation. It breaks down the generated pattern part-by-part, explaining what each group does in plain language. If you tweak the description, the regex updates in real-time. If you tweak the regex, the explanation updates to reflect your changes.&lt;/p&gt;

&lt;p&gt;This back-and-forth is crucial. It turns regex from a black-box syntax puzzle into a transparent logic structure. For backend and security teams, this is huge. You can audit the logic without being a regex expert, and you can document the intent directly alongside the pattern.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why 100% On-Device?
&lt;/h2&gt;

&lt;p&gt;The biggest constraint I imposed on myself was: &lt;strong&gt;no server-side AI.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you type a sensitive regex pattern—especially one that might contain proprietary data formats, internal identifiers, or security rules—you shouldn’t have to send that data to a cloud API to get help. There’s latency, there’s trust, and there’s the simple friction of knowing your code is leaving your environment.&lt;/p&gt;

&lt;p&gt;RegexBuilder runs entirely in your browser using WebGPU-accelerated inference. There’s a small model running locally that processes your natural language descriptions and generates the regex logic. Because it’s on-device, it works offline. It works instantly, without network lag. And it works privately.&lt;/p&gt;

&lt;p&gt;I’ve found that this approach changes how developers interact with the tool. You don’t hesitate to type out complex, specific requirements because you know nothing is being logged or stored elsewhere. You can experiment freely.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Developer Experience
&lt;/h2&gt;

&lt;p&gt;I’ve used many regex tools over the years. The best ones are fast and accurate. The worst ones are slow and opaque. RegexBuilder aims to be fast, accurate, and transparent.&lt;/p&gt;

&lt;p&gt;Here’s how a typical workflow looks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Describe:&lt;/strong&gt; You type, “Match IPv4 addresses but exclude private ranges.”&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Generate:&lt;/strong&gt; The tool produces a regex. It highlights the parts that handle the octets and the parts that exclude the private ranges.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Refine:&lt;/strong&gt; You notice it’s too broad. You add, “...and only match if it’s at the start of a line.” The regex updates instantly.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Explain:&lt;/strong&gt; You click on the generated pattern, and it breaks down each component: “&lt;code&gt;^&lt;/code&gt; asserts start of line,” “&lt;code&gt;(?:&lt;/code&gt; starts a non-capturing group,” etc.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Copy:&lt;/strong&gt; You copy the final regex and the explanation into your code comments.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This isn’t just about convenience. It’s about reducing cognitive load. When you’re debugging a security vulnerability related to input validation, you don’t want to spend 20 minutes deciphering a regex you wrote three months ago. You want to understand the intent immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest Take on Pricing
&lt;/h2&gt;

&lt;p&gt;RegexBuilder is a paid tool. I believe in building sustainable, high-quality developer tools, and this model allows me to focus on performance and privacy without ads or data harvesting. There’s a 7-day free trial so you can test it on your actual projects. If you’re exploring the interactive learning features or games, those have free turns available.&lt;/p&gt;

&lt;p&gt;If you’re curious, you can try it here: &lt;a href="https://regexbuilder.bestpaid.app" rel="noopener noreferrer"&gt;https://regexbuilder.bestpaid.app&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters Now
&lt;/h2&gt;

&lt;p&gt;As applications become more complex, the need for robust input validation and data extraction grows. Regular expressions remain one of the most powerful tools in our toolkit, but they’re also one of the most misunderstood. By lowering the barrier to entry and increasing transparency, we can make regex safer and more maintainable.&lt;/p&gt;

&lt;p&gt;I’m still refining the&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Why I Built a JSON Toolkit That Never Touches a Server</title>
      <dc:creator>AI Predictions Dev</dc:creator>
      <pubDate>Mon, 29 Jun 2026 13:00:01 +0000</pubDate>
      <link>https://dev.to/aipredictions_dev/why-i-built-a-json-toolkit-that-never-touches-a-server-2afb</link>
      <guid>https://dev.to/aipredictions_dev/why-i-built-a-json-toolkit-that-never-touches-a-server-2afb</guid>
      <description>&lt;p&gt;Most of the time, when I need to inspect a complex JSON payload, I copy the raw string from my terminal or network tab, open a browser tab, and paste it into one of the many "JSON Formatter" sites that clutter the first page of Google. It’s a ritual we all do. We paste, we click "Format," and we wait.&lt;/p&gt;

&lt;p&gt;For small payloads, this is fine. But when you are debugging a massive API response, a deeply nested configuration file, or a large dataset, that ritual breaks down. The browser freezes. The site asks you to upload a file. Worse, many of these tools send your data to a server for processing. If that JSON contains API keys, user PII, or internal schema definitions, you are essentially trusting a third-party service with your proprietary data every time you hit "pretty print."&lt;/p&gt;

&lt;p&gt;I got tired of the latency and the privacy overhead. So I built &lt;strong&gt;JSONForge&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The core premise is simple: do everything locally. No server-side processing. No file uploads. No network requests for the core logic. Everything happens in your browser, powered by WebGPU for heavy lifting and a small model that runs in your browser for schema inference.&lt;/p&gt;

&lt;h3&gt;
  
  
  The WebGPU Advantage
&lt;/h3&gt;

&lt;p&gt;JSON parsing is computationally cheap for a modern CPU, but rendering and diffing large structures is not. When you have a 5MB JSON file, the DOM manipulation required to display it as a tree view can cause significant jank.&lt;/p&gt;

&lt;p&gt;By offloading the parsing and formatting logic to the GPU via WebGPU, JSONForge handles massive payloads without blocking the main thread. You can open a file, click "Pretty Print," and see the result instantly, even if the file is hundreds of kilobytes or larger. The UI remains responsive because the heavy computation is parallelized on the graphics card.&lt;/p&gt;

&lt;p&gt;This also means the tool works offline. If you are on a plane, or your internet drops in the middle of a debugging session, your toolkit doesn’t vanish. You can continue to diff, validate, and format without interruption.&lt;/p&gt;

&lt;h3&gt;
  
  
  Schema Generation Without the Server Round-Trip
&lt;/h3&gt;

&lt;p&gt;One of the most tedious parts of API development is keeping your JSON Schema in sync with your actual data. Traditionally, you might use a command-line tool or an online service to generate a schema from a sample JSON object.&lt;/p&gt;

&lt;p&gt;JSONForge includes a schema generator that analyzes your JSON structure and infers the types, required fields, and constraints. Because this runs entirely in the browser, you can take a raw response from your staging API, paste it in, and immediately get a draft schema. You can then copy that schema directly into your OpenAPI spec or TypeScript definition files.&lt;/p&gt;

&lt;p&gt;The inference engine uses a small model that runs in your browser to understand complex type patterns, but it does so without sending your data to a cloud API. This keeps the inference fast and your data private.&lt;/p&gt;

&lt;h3&gt;
  
  
  Diffing and Validation
&lt;/h3&gt;

&lt;p&gt;Beyond formatting, the tool includes a visual diff engine. If you have two versions of a configuration file, you can paste both side-by-side and see exactly what changed. The diffing algorithm highlights added, removed, and modified keys, making it easy to spot unintended changes in your deployments.&lt;/p&gt;

&lt;p&gt;Validation is another key feature. You can paste a JSON Schema and a JSON instance, and the tool will validate the instance against the schema in real-time. Errors are highlighted directly in the tree view, showing you exactly which path in the JSON failed validation and why. This is particularly useful when you are working with strict schemas that require specific types or formats.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Honest Note on Pricing
&lt;/h3&gt;

&lt;p&gt;JSONForge is a paid tool. I built it to be sustainable and to continue improving the performance and feature set. There is a 7-day free trial so you can test it with your own workflows. If you are looking for a quick, one-off format, the free tier might be enough, but for heavy daily use, the paid plan unlocks the full suite of features, including unlimited schema generation and advanced diffing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why This Matters
&lt;/h3&gt;

&lt;p&gt;The web is becoming more capable. We have WebGPU, Web Workers, and efficient JavaScript engines. Yet, many developer tools still rely on the old pattern of "send data to server, process, return result." This pattern introduces latency, privacy concerns, and dependency on network availability.&lt;/p&gt;

&lt;p&gt;JSONForge is an experiment in what we can do when we embrace these capabilities. It is not just a prettier printer; it is a local-first toolkit that respects your data and your time. If you spend a significant amount of your day working with JSON, I hope you find it useful.&lt;/p&gt;

&lt;p&gt;You can try it out at &lt;a href="https://jsonforge.bestpaid.app" rel="noopener noreferrer"&gt;https://jsonforge.bestpaid.app&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Why I Built an SEO Auditor That Doesn’t Upload Your HTML</title>
      <dc:creator>AI Predictions Dev</dc:creator>
      <pubDate>Thu, 25 Jun 2026 13:00:01 +0000</pubDate>
      <link>https://dev.to/aipredictions_dev/why-i-built-an-seo-auditor-that-doesnt-upload-your-html-1af2</link>
      <guid>https://dev.to/aipredictions_dev/why-i-built-an-seo-auditor-that-doesnt-upload-your-html-1af2</guid>
      <description>&lt;p&gt;Most SEO tools follow the same pattern: you paste your URL, they crawl it, they send the data to a cloud server, an AI model processes it, and then they send you a report. It works, but it introduces latency, privacy concerns, and a hard dependency on network connectivity.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;MetaForge&lt;/strong&gt; to solve a specific friction point: the desire to audit and rewrite meta tags, Open Graph (OG) images, and Twitter cards instantly, without leaving the browser or uploading sensitive HTML to a third-party API.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Wedge: Local-First AI for Web Developers
&lt;/h3&gt;

&lt;p&gt;The core insight behind MetaForge is that modern browsers are powerful enough to handle natural language processing tasks locally. By leveraging WebGPU, we can run a small model that runs in your browser entirely on-device. This means your HTML never leaves your machine. If you disconnect your internet, the tool still works.&lt;/p&gt;

&lt;p&gt;For developers and content creators, this isn’t just about speed; it’s about trust. When you’re tweaking the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; section of a critical landing page, you don’t want to copy-paste sensitive content into a SaaS dashboard just to get a readability score or a meta description suggestion. You want the feedback loop to be instantaneous and private.&lt;/p&gt;

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

&lt;p&gt;MetaForge operates as a local-first application. When you paste your HTML or load a local file, the following happens entirely within your browser:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Parsing&lt;/strong&gt;: The DOM is parsed to extract all existing meta tags, OG properties, and Twitter card data.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Analysis&lt;/strong&gt;: A private on-device AI analyzes the content for length, keyword density, clarity, and emotional resonance.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Rewriting&lt;/strong&gt;: The model generates optimized versions of these tags, adhering to character limits and best practices for click-through rates.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Because the model runs locally, there is no API latency. The feedback is immediate. You can tweak the source text, and the meta tags update in real-time. This allows for an iterative workflow that feels more like editing code than filling out a form.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Developer Experience
&lt;/h3&gt;

&lt;p&gt;I designed MetaForge with developers in mind. The interface is minimal, focusing on the code output. You can export the generated tags directly as HTML snippets, making it easy to copy-paste into your component library or static site generator.&lt;/p&gt;

&lt;p&gt;The tool handles common pain points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Length Constraints&lt;/strong&gt;: It automatically truncates or expands meta descriptions to fit Twitter and LinkedIn preview limits.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;OG Image Suggestions&lt;/strong&gt;: It analyzes your content to suggest descriptive alt text and titles for social sharing.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;SEO Hygiene&lt;/strong&gt;: It flags duplicate tags, missing canonical links, and malformed JSON-LD structures.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Privacy and Offline Capability
&lt;/h3&gt;

&lt;p&gt;The decision to run everything on-device was intentional. Many developers hesitate to use AI tools for content generation due to data privacy policies. With MetaForge, your content never leaves your local environment. There is no telemetry, no tracking, and no data retention. This makes it suitable for auditing internal tools, draft pages, or sensitive client projects where confidentiality is paramount.&lt;/p&gt;

&lt;p&gt;Furthermore, because it relies on WebGPU, it works offline. You can draft your SEO strategy on a plane or in a café without worrying about connection stability. The only requirement is a browser that supports WebGPU (currently Chrome, Edge, and Safari Technology Preview).&lt;/p&gt;

&lt;h3&gt;
  
  
  Honest Note on Pricing
&lt;/h3&gt;

&lt;p&gt;MetaForge is a paid tool designed to be lightweight and efficient. It offers a 7-day trial so you can test the local inference capabilities on your own projects. If you find the tool useful for your workflow, the subscription supports the ongoing maintenance and model updates. Note that if you use the companion games or interactive features, they have free turns to allow for casual exploration without immediate commitment.&lt;/p&gt;

&lt;p&gt;You can try it here: &lt;a href="https://metaforge.bestpaid.app" rel="noopener noreferrer"&gt;https://metaforge.bestpaid.app&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Local AI Matters for SEO
&lt;/h3&gt;

&lt;p&gt;SEO is often a slow, iterative process. Tools that require server-side processing add friction to this loop. By moving the intelligence to the edge (your browser), we reduce that friction. MetaForge isn’t trying to replace your entire SEO stack. It’s a specialized utility for the final mile: ensuring that the technical metadata driving your click-through rates is optimized, accurate, and generated from your actual content.&lt;/p&gt;

&lt;p&gt;If you value privacy, speed, and a developer-centric interface, this approach to SEO auditing might fit into your workflow. It’s a small tool for a specific problem, built for those who prefer to keep their data local and their workflows fast.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Generating WCAG-Compliant Palettes Locally: A WebGPU Experiment</title>
      <dc:creator>AI Predictions Dev</dc:creator>
      <pubDate>Mon, 22 Jun 2026 13:00:01 +0000</pubDate>
      <link>https://dev.to/aipredictions_dev/generating-wcag-compliant-palettes-locally-a-webgpu-experiment-dhh</link>
      <guid>https://dev.to/aipredictions_dev/generating-wcag-compliant-palettes-locally-a-webgpu-experiment-dhh</guid>
      <description>&lt;p&gt;Color is deceptively difficult. We often treat it as an aesthetic choice, but in practice, it is a rigorous compliance constraint. If your interface fails WCAG 2.1 AA contrast ratios, you aren't just making a design mistake; you are excluding users. The typical workflow for solving this involves opening a separate tool, manually adjusting hues, checking contrast ratios, and then copying values back into your codebase. It is a context-switching tax that accumulates quickly.&lt;/p&gt;

&lt;p&gt;I built ColorWell to remove the friction between selecting a base color and generating a fully compliant, accessible palette. The core philosophy was simple: the heavy lifting should happen where the data lives—in the browser.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Wedge: Privacy and Performance via WebGPU
&lt;/h3&gt;

&lt;p&gt;The defining constraint of this project was that no data should leave the user's device. Most palette generators require uploading your design files or sending hex codes to a server for processing. For sensitive projects, this is a non-starter. Furthermore, round-trip latency kills the "flow" state of design work.&lt;/p&gt;

&lt;p&gt;ColorWell runs 100% in the browser using WebGPU. This allows the application to leverage the GPU for parallel processing of color space calculations without the overhead of WebGL. The result is a tool that works offline, respects privacy by default, and generates palettes instantly.&lt;/p&gt;

&lt;p&gt;When you input a base color, the system doesn't just pick random harmonies. It calculates a range of complementary, analogous, and triadic schemes, then filters them through a strict WCAG 2.1 AA compliance layer. Every generated color is validated against both light and dark backgrounds to ensure legibility. If a color fails, it is adjusted or flagged, ensuring the final palette is not just beautiful, but usable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exporting to the Developer Workflow
&lt;/h3&gt;

&lt;p&gt;A palette is useless if it stays in a UI. The second half of the tool focuses on integration. ColorWell exports directly to CSS custom properties, Tailwind configuration objects, and Figma tokens. This means you can copy a block of code and paste it directly into your &lt;code&gt;globals.css&lt;/code&gt; or &lt;code&gt;tailwind.config.js&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;The export format is clean and ready for production. For example, a Tailwind export includes not just the color values, but also the semantic naming structure that helps maintain consistency across a project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--color-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#3b82f6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--color-primary-hover&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#2563eb&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--color-text-dark&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#111827&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--color-bg-light&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f9fafb&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;This reduces the manual error rate when translating design decisions into code. You don't have to worry about whether the hover state has sufficient contrast because the tool has already verified it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Role of On-Device AI
&lt;/h3&gt;

&lt;p&gt;While the core generation logic is algorithmic, I integrated a small model that runs in your browser to assist with semantic labeling. This private on-device AI analyzes the base color and suggests contextual names (e.g., "Ocean Blue" vs. "Steel Gray") based on color theory and common usage patterns. This helps developers maintain consistent naming conventions in their CSS variables.&lt;/p&gt;

&lt;p&gt;Because the model runs locally, there is no API call, no latency, and no data privacy concerns. It is a lightweight enhancement that adds intelligence without the infrastructure overhead.&lt;/p&gt;

&lt;h3&gt;
  
  
  Building in Public
&lt;/h3&gt;

&lt;p&gt;Building ColorWell was an exercise in balancing complexity with simplicity. The challenge wasn't just the color math; it was ensuring the WebGPU implementation remained stable across different browsers and devices. Early versions struggled with shader compilation on some laptops, which required significant optimization of the compute shaders.&lt;/p&gt;

&lt;p&gt;The tool is designed for developers and designers who value speed and privacy. It is a paid tool, with a 7-day trial available for anyone who wants to test the full export features. For those exploring the interactive aspects, games have free turns to try out the generation logic without commitment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Local-First Matters
&lt;/h3&gt;

&lt;p&gt;The trend toward local-first software is gaining traction for good reason. When you remove the server from the equation, you remove single points of failure, reduce latency, and enhance privacy. ColorWell is a small example of how modern web APIs like WebGPU can enable sophisticated tools that were previously only possible with desktop applications or heavy cloud services.&lt;/p&gt;

&lt;p&gt;If you find yourself manually tweaking colors to meet accessibility standards, this tool might save you time. It is a focused utility that handles the tedious part of color theory so you can focus on the broader design system.&lt;/p&gt;

&lt;p&gt;You can try it out at &lt;a href="https://colorwell.bestpaid.app" rel="noopener noreferrer"&gt;https://colorwell.bestpaid.app&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Why I built a code debugger that never leaves your browser</title>
      <dc:creator>AI Predictions Dev</dc:creator>
      <pubDate>Thu, 18 Jun 2026 18:47:56 +0000</pubDate>
      <link>https://dev.to/aipredictions_dev/why-i-built-a-code-debugger-that-never-leaves-your-browser-o2l</link>
      <guid>https://dev.to/aipredictions_dev/why-i-built-a-code-debugger-that-never-leaves-your-browser-o2l</guid>
      <description>&lt;p&gt;We've all been there. You're deep in the zone, debugging a subtle race condition or untangling a messy dependency graph, and you realize you need a second pair of eyes. The instinct is to copy-paste your code into a chat interface, hit enter, and wait for the magic.&lt;/p&gt;

&lt;p&gt;But then the friction hits.&lt;/p&gt;

&lt;p&gt;You pause: &lt;em&gt;Is this code proprietary? Does it contain API keys? Am I comfortable sending this logic to a cloud server I don't control?&lt;/em&gt; You might redact the sensitive bits — which defeats the point of context-aware help. Or you skip the AI altogether and go back to the slower, guaranteed-private route of manual inspection.&lt;/p&gt;

&lt;p&gt;That tension between convenience and privacy is the real problem. Most AI coding tools solve convenience by sacrificing privacy — they trade your data for speed. For a hobby project, fine. For an enterprise codebase, or proprietary logic, or developers who are privacy-first by nature, it's a dealbreaker.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;CodeClarify&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The wedge: WebGPU and true locality
&lt;/h3&gt;

&lt;p&gt;CodeClarify explains and refactors code, but the defining trait isn't that it's "local" — it's that it runs &lt;strong&gt;100% in your browser via WebGPU&lt;/strong&gt;. No backend processing your requests, no API call to a cloud provider. When you paste code, inference happens on your own GPU, right there in the tab. Nothing leaves your device — not the code, not the analysis, not the metadata.&lt;/p&gt;

&lt;p&gt;That immediately dissolves the privacy anxiety: paste a file with production secrets or proprietary algorithms and know with certainty no one else sees it. It also means the tool works offline — if your internet drops, your debugging session doesn't.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why browser-based AI matters
&lt;/h3&gt;

&lt;p&gt;Running models in the browser is no longer theoretical. With WebGPU we can run small, efficient models directly in the page with hardware acceleration. It shifts the compute from the network to the user's device — what used to need Docker containers or heavy Python scripts now runs in a tab on a modern laptop.&lt;/p&gt;

&lt;p&gt;The trade-off is speed: a local in-browser model is slower than a massive cloud cluster. But for &lt;em&gt;understanding why a function fails&lt;/em&gt; — not just getting a quick patch — you need accuracy, context, and privacy more than raw throughput. CodeClarify is built for that thoughtful pause.&lt;/p&gt;

&lt;h3&gt;
  
  
  The experience
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Paste your code&lt;/strong&gt; — snippets, whole files, or error logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Define the goal&lt;/strong&gt; — explain this, find the bug, suggest a cleaner refactor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local inference&lt;/strong&gt; — the model runs on your GPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Result&lt;/strong&gt; — a detailed, contextual answer with zero data egress.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Because the model is small and tuned for code, it's surprisingly good at syntax, logical errors, and cleaner patterns. It's not trying to write your whole app — it helps you debug the piece in front of you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Honest about pricing
&lt;/h3&gt;

&lt;p&gt;CodeClarify is a paid tool, kept deliberately focused and sustainable. It runs right in your browser with a 7-day trial so you can test it against your own codebase before committing. Not a freemium trap — a direct value exchange for a privacy-first tool. You can try it at &lt;a href="https://codeclarify.bestpaid.app" rel="noopener noreferrer"&gt;codeclarify.bestpaid.app&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The future of private dev tools
&lt;/h3&gt;

&lt;p&gt;I don't think the future of dev tools is just bigger models — it's smarter, more efficient ones that respect user agency. As WebGPU becomes standard, expect more tools that offer cloud-like intelligence without cloud-like exposure. CodeClarify is my attempt to build that today: for the developer who values control as much as speed.&lt;/p&gt;

&lt;p&gt;If you're curious what's possible when AI stays on your machine, give it a spin — nothing leaves your device, just code and context.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What's your biggest friction point with current AI coding tools — privacy, speed, or something else? I'd genuinely like to hear your experience in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>privacy</category>
    </item>
    <item>
      <title>I built a roguelike whose dungeon master is an LLM running 100% in the browser</title>
      <dc:creator>AI Predictions Dev</dc:creator>
      <pubDate>Wed, 17 Jun 2026 19:54:19 +0000</pubDate>
      <link>https://dev.to/aipredictions_dev/i-built-a-roguelike-whose-dungeon-master-is-an-llm-running-100-in-the-browser-4pke</link>
      <guid>https://dev.to/aipredictions_dev/i-built-a-roguelike-whose-dungeon-master-is-an-llm-running-100-in-the-browser-4pke</guid>
      <description>&lt;p&gt;Most "AI games" phone home. Every turn is an API round-trip, every player burns your tokens, and the whole thing dies the day the bill scares you. I wanted the opposite: a text roguelike where the dungeon master is an LLM that runs &lt;strong&gt;entirely in the player's browser&lt;/strong&gt; — no server, no API key, no per-token cost, and it keeps working offline after the first load.&lt;/p&gt;

&lt;p&gt;Here's the architecture and the one bug that taught me the most.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core trick: WebLLM + WebGPU
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/mlc-ai/web-llm" rel="noopener noreferrer"&gt;WebLLM&lt;/a&gt; compiles quantized models to WebGPU, so inference runs on the &lt;em&gt;player's&lt;/em&gt; GPU. There is no backend at all.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cdn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://esm.run/@mlc-ai/web-llm&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;webllm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="cm"&gt;/* webpackIgnore: true */&lt;/span&gt; &lt;span class="nx"&gt;cdn&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;engine&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;webllm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;CreateMLCEngine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;MODEL_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;initProgressCallback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setLoading&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&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;First load pulls the weights once (the browser caches them). After that every turn is local and free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let the model narrate — never let it adjudicate
&lt;/h2&gt;

&lt;p&gt;A dungeon master should be creative, but it must not be allowed to break the rules. The split that made it stable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Narrative&lt;/strong&gt; comes back as free prose. Let it cook.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mechanics&lt;/strong&gt; — HP delta, items, whether the run ends — come back as a small JSON object the engine &lt;em&gt;validates&lt;/em&gt;. The game loop trusts the JSON, not the prose.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My most instructive bug: early on I let the prose drive death detection (regex for "you die"), and the model cheerfully killed players on turn one with pure flavor text — "this could be the end of you" → game over. Moving death to an integer the engine owns (&lt;code&gt;if (hp &amp;lt;= 0)&lt;/code&gt;) fixed it instantly.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Rule of thumb: the LLM writes the story; your code keeps the score.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why on-device is the right default for indie games
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;$0 marginal cost&lt;/strong&gt; — 10 players or 10,000, the server bill is identical: nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy&lt;/strong&gt; — choices never leave the device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline&lt;/strong&gt; — runs on a plane after first load.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No rate limits, no leaked keys.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tradeoff is model size: you run something small enough to load in a tab, so prompt design carries real weight. For a narrative game master that's a fair trade.&lt;/p&gt;

&lt;h2&gt;
  
  
  One engine, many games (config beats code)
&lt;/h2&gt;

&lt;p&gt;Genre is just a config object — palette, HUD labels, seed scenarios, system prompt. Same engine, swap the config, ship a different game. Adding a genre is &lt;em&gt;data&lt;/em&gt;, not a code change, which means a generator can author new ones.&lt;/p&gt;

&lt;p&gt;If you want to poke at a live one, the cyberpunk build (NeonHeist) and a few others are up under Games at &lt;a href="https://bestpaid.app" rel="noopener noreferrer"&gt;bestpaid.app&lt;/a&gt; — all running on-device.&lt;/p&gt;

&lt;p&gt;Happy to go deeper on the JSON-contract prompt or the WebGPU loading UX in the comments.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>ai</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Dev tools that run 100% in your browser — your data never leaves the page</title>
      <dc:creator>AI Predictions Dev</dc:creator>
      <pubDate>Sun, 14 Jun 2026 10:45:26 +0000</pubDate>
      <link>https://dev.to/aipredictions_dev/dev-tools-that-run-100-in-your-browser-your-data-never-leaves-the-page-2m22</link>
      <guid>https://dev.to/aipredictions_dev/dev-tools-that-run-100-in-your-browser-your-data-never-leaves-the-page-2m22</guid>
      <description>&lt;p&gt;Most "free online dev tools" quietly POST everything you paste to a server. For API payloads, tokens, or customer data, that's a bad default.&lt;/p&gt;

&lt;p&gt;A cleaner pattern: tools that do all the work &lt;strong&gt;client-side&lt;/strong&gt;. The page loads once, then parsing/generating/converting happens locally — nothing is uploaded, no signup, and it works offline.&lt;/p&gt;

&lt;p&gt;Here's a set that actually follows this. All have a free core; paid only unlocks bulk/export/history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Runs entirely in your browser
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://jsonforge.shortvideos.tv/en/app" rel="noopener noreferrer"&gt;JSONForge&lt;/a&gt;&lt;/strong&gt; — format, diff, validate, infer a schema. Inspect payloads you'd never paste into a random box.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://regexbuilder.shortvideos.tv/en/app" rel="noopener noreferrer"&gt;RegexBuilder&lt;/a&gt;&lt;/strong&gt; — live match highlighting + a plain-English explainer; Pro exports the pattern as JS/Python.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://passwordforge.shortvideos.tv/en/app" rel="noopener noreferrer"&gt;PasswordForge&lt;/a&gt;&lt;/strong&gt; — passwords/passphrases generated locally; secrets never hit a network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://colorwell.shortvideos.tv/en/app" rel="noopener noreferrer"&gt;ColorWell&lt;/a&gt;&lt;/strong&gt; — palettes + WCAG contrast; export CSS vars / JSON tokens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://cronexplain.shortvideos.tv/en/app" rel="noopener noreferrer"&gt;CronExplain&lt;/a&gt;&lt;/strong&gt; — cron → plain English + next run times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://metaforge.shortvideos.tv/en/app" rel="noopener noreferrer"&gt;MetaForge&lt;/a&gt;&lt;/strong&gt; — meta-tag audit + Google/social preview.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://timeforge.shortvideos.tv/en/app" rel="noopener noreferrer"&gt;TimeForge&lt;/a&gt;&lt;/strong&gt; — multi-timezone overlap planner.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  On-device AI (the model runs in the browser)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://privatescribe.shortvideos.tv/en/app" rel="noopener noreferrer"&gt;PrivateScribe&lt;/a&gt;&lt;/strong&gt; — summarize/rewrite/draft with AI that runs locally; nothing you type is uploaded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://grimhollow.shortvideos.tv/en/app" rel="noopener noreferrer"&gt;Grimhollow&lt;/a&gt;&lt;/strong&gt; — an AI dungeon master that runs fully offline after a one-time model download.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why bother?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Privacy by architecture&lt;/strong&gt; — no server log to leak.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No signup friction&lt;/strong&gt; — paste, get the answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works offline&lt;/strong&gt; — even the on-device-AI ones.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The trade-off is honest: free covers everyday use, paid adds bulk/exports/history. If you touch anything sensitive, in-browser tools are simply the safer default.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What in-browser tools do you reach for? Curious what I'm missing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>webdev</category>
      <category>tools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>2 Years of .NET 8 in Production — Building AI Prediction Platforms with Blazor Server + ML.NET</title>
      <dc:creator>AI Predictions Dev</dc:creator>
      <pubDate>Sat, 28 Mar 2026 21:36:45 +0000</pubDate>
      <link>https://dev.to/aipredictions_dev/2-years-of-net-8-in-production-building-ai-prediction-platforms-with-blazor-server-mlnet-1hk4</link>
      <guid>https://dev.to/aipredictions_dev/2-years-of-net-8-in-production-building-ai-prediction-platforms-with-blazor-server-mlnet-1hk4</guid>
      <description>&lt;p&gt;I've been running two AI prediction platforms on .NET 8 for the past 2 years now, and wanted to share what the stack looks like and what I've learned along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Projects
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1X2.TV&lt;/strong&gt; (&lt;a href="https://1x2.tv" rel="noopener noreferrer"&gt;https://1x2.tv&lt;/a&gt;) — football match predictions. The system analyzes 500+ matches daily across 100+ leagues. It predicts match results, both teams to score, over/under goals, correct score — basically all the major betting markets. Models retrain continuously on fresh match data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Stock Predictions&lt;/strong&gt; (&lt;a href="https://ai-stock-predictions.com" rel="noopener noreferrer"&gt;https://ai-stock-predictions.com&lt;/a&gt;) — stock market forecasts for S&amp;amp;P 500, NASDAQ, NYSE. Same ML infrastructure, different domain. Models process 50+ features per stock: price action, volume patterns, sector momentum, sentiment signals.&lt;/p&gt;

&lt;p&gt;Both support 30+ languages and have native iOS/Android/Windows apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Clean Architecture with Domain → Application → Infrastructure layers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Blazor Server with MudBlazor components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; ASP.NET Core, MediatR (CQRS pattern), FluentValidation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ML:&lt;/strong&gt; ML.NET gradient boosting models with daily retraining pipeline&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data:&lt;/strong&gt; EF Core + MSSQL, Selenium/Playwright for data collection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time:&lt;/strong&gt; SignalR for notifications and live updates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth:&lt;/strong&gt; JWT with refresh tokens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting:&lt;/strong&gt; Windows Server + IIS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;i18n:&lt;/strong&gt; 30+ languages via server-side .resx resources + client JSON files&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Worked Well
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Blazor Server&lt;/strong&gt; turned out great for this kind of project. Fast development cycle, real server-side rendering, and MudBlazor gives you a solid component library out of the box. The SignalR connection model means you get real-time updates almost for free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ML.NET&lt;/strong&gt; is honestly underrated. For gradient boosting classification and regression tasks it's solid, and the integration with the rest of the .NET ecosystem is seamless. Retraining daily is just a background service that runs on a schedule.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EF Core&lt;/strong&gt; with the Specification pattern made complex queries manageable. Migrations just work. The combination with MSSQL has been rock-solid in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pain Points
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Blazor Server memory&lt;/strong&gt; — with many concurrent users, each holding a SignalR circuit, memory adds up fast. Had to be careful with component lifecycle and disposal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Selenium/Playwright stability&lt;/strong&gt; — scraping is inherently fragile. Sites change layouts, add captchas, go down. Built a retry/fallback system but it still needs regular maintenance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EF Core complex LINQ&lt;/strong&gt; — some queries that looked simple in C# generated terrible SQL. Had to drop to raw SQL in a few hot paths.&lt;/p&gt;

&lt;h2&gt;
  
  
  Numbers
&lt;/h2&gt;

&lt;p&gt;The football platform processes around 500 matches per day across 100+ leagues. The stock platform covers all S&amp;amp;P 500 and NASDAQ 100 stocks daily. Both run on a single Windows Server instance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;Blazor Server, MudBlazor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;ASP.NET Core 8, MediatR, FluentValidation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ML&lt;/td&gt;
&lt;td&gt;ML.NET (gradient boosting)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;MSSQL + EF Core 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scraping&lt;/td&gt;
&lt;td&gt;Selenium, Playwright, AngleSharp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real-time&lt;/td&gt;
&lt;td&gt;SignalR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosting&lt;/td&gt;
&lt;td&gt;Windows Server, IIS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apps&lt;/td&gt;
&lt;td&gt;iOS, Android, Windows (native)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Happy to answer questions about any part of the stack or architecture decisions. What would you do differently?&lt;/p&gt;

</description>
      <category>dotnet</category>
    </item>
  </channel>
</rss>
