<?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: mamigabi</title>
    <description>The latest articles on DEV Community by mamigabi (@mamigabi).</description>
    <link>https://dev.to/mamigabi</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3938101%2Fcc43c2f3-83ff-4583-ba83-6c7400fb1438.png</url>
      <title>DEV Community: mamigabi</title>
      <link>https://dev.to/mamigabi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mamigabi"/>
    <language>en</language>
    <item>
      <title>Pharma-Assist 2.0: A Sovereign Local AI Agent Network for Real-Time Pharmacy Audit</title>
      <dc:creator>mamigabi</dc:creator>
      <pubDate>Mon, 18 May 2026 12:47:32 +0000</pubDate>
      <link>https://dev.to/mamigabi/pharma-assist-20-a-sovereign-local-ai-agent-network-for-real-time-pharmacy-audit-4jj5</link>
      <guid>https://dev.to/mamigabi/pharma-assist-20-a-sovereign-local-ai-agent-network-for-real-time-pharmacy-audit-4jj5</guid>
      <description>&lt;h1&gt;
  
  
  🦅 Pharma-Assist 2.0: A Sovereign Local AI Agent Network for Real-Time Pharmacy Audit
&lt;/h1&gt;

&lt;h2&gt;
  
  
  🏷️ Category Credentials
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Challenge Track:&lt;/strong&gt; Build With Gemma 4&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Submission Tags:&lt;/strong&gt; &lt;code&gt;#gemmachallenge&lt;/code&gt;, &lt;code&gt;#ai&lt;/code&gt;, &lt;code&gt;#opensource&lt;/code&gt;, &lt;code&gt;#python&lt;/code&gt;, &lt;code&gt;#privacy&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏛️ 1. The Real-World B2B Pain Point
&lt;/h2&gt;

&lt;p&gt;In the pharmaceutical and logistics industries, administrative staff spend up to &lt;strong&gt;70% of their working hours manually reconciling invoices&lt;/strong&gt;, checking delivery sheets (albaranes), and calculating trade margins. &lt;/p&gt;

&lt;p&gt;This causes three critical operational bottlenecks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;The Margin Drain:&lt;/strong&gt; Surcharges, cooperative rebate discrepancies, and minor billing errors from major distributors (e.g., Cofares, Hefame, Alliance) go unnoticed, draining thousands of euros annually.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Legal Liability:&lt;/strong&gt; Invoices containing sensitive patient data, sanitary cards, and proprietary pricing metrics are routinely uploaded to public SaaS clouds (like public ChatGPT wrappers) for quick parsing, resulting in catastrophic GDPR compliance breaches.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;API Tolls:&lt;/strong&gt; Processing high-volume transactions via cloud-based LLM APIs results in heavy monthly recurring subscription fees.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🚀 2. Our Sovereign Solution: The Local AI Bunker
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Pharma-Assist 2.0&lt;/strong&gt; is a fully open-source, self-contained &lt;strong&gt;Local AI Bunker&lt;/strong&gt; running entirely on-premises inside the company's LAN network. Powered by local &lt;strong&gt;Gemma / Qwen&lt;/strong&gt; model architectures via Ollama, it automates high-volume document auditing with &lt;strong&gt;zero cloud dependencies, zero API costs, and absolute data privacy&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌟 Core Tech Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;100% Secure Local Isolation:&lt;/strong&gt; Financial audit, OCR parsing, and regular expression evaluations are processed entirely within the local GPU/VRAM memory.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Dynamic Margin Audit Engine:&lt;/strong&gt; Automatically cross-references distributor unit costs, discounts, and retail pricing, flagging any item falling below the mandatory &lt;strong&gt;12% commercial margin&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Glassmorphic Control Dashboard:&lt;/strong&gt; An elite B2B web interface that acts as the command center, featuring model conmuting, real-time latency indicators, and an interactive "Fire Drill" simulation module.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏗️ 3. System Architecture &amp;amp; Flow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;graph TD
    LAN[Red Local de Oficina - LAN] --&amp;gt;|HTTPS| Proxy[Nginx Reverse Proxy]
    Proxy --&amp;gt;|REST API| Dashboard[Glassmorphic HTML5/JS Dashboard]
    Proxy --&amp;gt;|REST API| Facilix[Facilix Orchestrator Server: Port 3002]
    Facilix --&amp;gt;|JSON Payload| Ollama[Ollama Core Engine: Port 11434]
    Ollama --&amp;gt;|GPU Infece| Models[Local Qwen2.5-Coder / Gemma 2B]
    Facilix --&amp;gt;|Write Report| DB[error_reports.json Database]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚙️ 4. Technical Implementation &amp;amp; Code Highlights
&lt;/h2&gt;

&lt;p&gt;The brain of the system is the &lt;strong&gt;Local Invoice Auditor&lt;/strong&gt; (&lt;code&gt;agents/pharmacy_invoice_auditor.py&lt;/code&gt;), which executes high-speed mathematical auditing combined with local LLM semantic evaluation.&lt;/p&gt;

&lt;p&gt;Here is how the core mathematical and compliance auditing logic is constructed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# --- LÓGICA DE CONCILIACIÓN DE MÁRGENES (12% MÍNIMO) ---
&lt;/span&gt;&lt;span class="n"&gt;net_cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;disc&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;100.0&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;retail&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;margin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;retail&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;net_cost&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;retail&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;margin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;margin&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mf"&gt;12.0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;loss&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;net_cost&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;retail&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mf"&gt;0.88&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;# Projected financial loss
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;loss&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;total_loss&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;loss&lt;/span&gt;
    &lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ALERTA_MARGEN: Margen comercial del &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;margin&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;% (Mínimo requerido: 12%).&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🧠 Semantic Error Parsing via Local Qwen:
&lt;/h3&gt;

&lt;p&gt;For advanced textual anomalies, the auditor queries our offline Qwen/Gemma instance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;call_local_qwen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt_text&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;qwen2.5-coder:7b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;prompt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;SYSTEM_RULES&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Analiza la siguiente transacción:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;prompt_text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;stream&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;format&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://localhost:11434/api/generate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;response&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;{}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🖥️ 5. The Glassmorphic Interface &amp;amp; "Fire Drill" Simulator
&lt;/h2&gt;

&lt;p&gt;To present this to corporate decision-makers (such as CEOs and Operations Managers of large Logistics and Real Estate firms), we built a stunning web-based dashboard:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Model Selector Card:&lt;/strong&gt; Switch on the fly with a single click between &lt;strong&gt;Local Qwen&lt;/strong&gt; (high-speed local processing), &lt;strong&gt;Hybrid Gemini&lt;/strong&gt; (optimized processing), and &lt;strong&gt;Cloud Claude&lt;/strong&gt; (external fallback).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The Live "Fire Drill" (Simulacro de Fuego Real):&lt;/strong&gt; Allows users to select 5 real Madrid-based leads from a dropdown menu, loading their specific corporate profiles (e.g., &lt;em&gt;TIBA Group&lt;/em&gt;, &lt;em&gt;Walter Haus&lt;/em&gt;). Users can click the dotted drag-and-drop zone to run a mock document audit, trigger a live scanning animation, and render dynamic metrics (e.g., &lt;strong&gt;"$8,900 in financial risk protected"&lt;/strong&gt; or &lt;strong&gt;"340 administrative minutes saved"&lt;/strong&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏆 6. Why Gemma &amp;amp; Local Models Make B2B AI High-Ticket Viable
&lt;/h2&gt;

&lt;p&gt;Deploying large cloud models for high-volume invoice and catalog sorting is a financial black hole. By running &lt;strong&gt;Gemma / Qwen locally&lt;/strong&gt;, businesses can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Amortize Hardware Instantly:&lt;/strong&gt; The cost of a dedicated local workstation (NVIDIA RTX 4090) is fully amortized within the first two months.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Sovereign Compliance:&lt;/strong&gt; Medical prescriptions and proprietary catalog prices remain &lt;strong&gt;strictly local&lt;/strong&gt;, completely immune to internet outages, data leaks, or foreign server hacks.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  📂 7. Repository &amp;amp; Installation
&lt;/h2&gt;

&lt;p&gt;The complete open-source repository is available under the &lt;strong&gt;MIT License&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  💻 Quick Start:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Clone the Repo &amp;amp; Install Dependencies:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/yourusername/pharma-assist-2.0.git
&lt;span class="nb"&gt;cd &lt;/span&gt;pharma-assist-2.0
pip &lt;span class="nb"&gt;install &lt;/span&gt;requests
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Run the Background Service:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python facilix_service.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Run a Test Audit:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python agents/pharmacy_invoice_auditor.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Open the Console:&lt;/strong&gt; Double-click &lt;code&gt;antigravity_core_dashboard.html&lt;/code&gt; in your browser to start conmuting models and running live document simulations on port 3002!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Created by Antigravity — Powering local, private, and high-performance AI bunkers for enterprise elite.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>gemmachallenge</category>
      <category>ai</category>
      <category>opensource</category>
      <category>python</category>
    </item>
  </channel>
</rss>
