<?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: Fabio Nobre</title>
    <description>The latest articles on DEV Community by Fabio Nobre (@fabiohcnobre).</description>
    <link>https://dev.to/fabiohcnobre</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%2F941079%2Fa0b7c034-0e56-4404-916d-7e6d8f07d2cd.jpg</url>
      <title>DEV Community: Fabio Nobre</title>
      <link>https://dev.to/fabiohcnobre</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fabiohcnobre"/>
    <language>en</language>
    <item>
      <title>Transparência de Tributos dos Combustíveis: do PDF da Fecombustíveis ao XML do PDV, sem servidor</title>
      <dc:creator>Fabio Nobre</dc:creator>
      <pubDate>Fri, 16 Oct 2026 19:35:08 +0000</pubDate>
      <link>https://dev.to/fabiohcnobre/transparencia-de-tributos-dos-combustiveis-do-pdf-da-fecombustiveis-ao-xml-do-pdv-sem-servidor-159b</link>
      <guid>https://dev.to/fabiohcnobre/transparencia-de-tributos-dos-combustiveis-do-pdf-da-fecombustiveis-ao-xml-do-pdv-sem-servidor-159b</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  O que eu construí
&lt;/h2&gt;

&lt;p&gt;Todo posto de combustível no Brasil precisa mostrar na nota/cupom quanto do preço é imposto (Lei 12.741/2012, a "Lei da Transparência"). Para combustíveis, os valores de ICMS, PMPF e PIS/COFINS mudam por estado e por mês, e a referência que todo mundo usa é o PDF &lt;strong&gt;"Carga tributária estadual"&lt;/strong&gt; publicado pela Fecombustíveis.&lt;/p&gt;

&lt;p&gt;O problema: alguém precisa abrir esse PDF todo mês, conferir 27 UFs × 6 combustíveis e redigitar tudo no arquivo &lt;code&gt;TransparenciaTributos.xml&lt;/code&gt; que o sistema de PDV lê. É trabalho chato, manual e fácil de errar.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;Transparência de Tributos – Combustíveis&lt;/strong&gt; automatiza isso:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a cada 8 horas um workflow do GitHub Actions procura o PDF novo no site da Fecombustíveis;&lt;/li&gt;
&lt;li&gt;uma IA lê o PDF e devolve os valores por combustível e UF;&lt;/li&gt;
&lt;li&gt;o sistema compara com o XML do mês anterior, destaca o que mudou e confere as contas (PMPF × alíquota = ICMS; PMPF × 9,25% = PIS/COFINS no GNV);&lt;/li&gt;
&lt;li&gt;gera o XML novo — fechando o bloco antigo no dia anterior e abrindo um bloco novo de vigência só para os combustíveis que mudaram;&lt;/li&gt;
&lt;li&gt;publica tudo e avisa por e-mail e Discord.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quem pagaria por isso?&lt;/strong&gt; Software houses de automação comercial que atendem postos (como a Imex Tecnologia, onde isso nasceu) e redes de postos que hoje fazem essa atualização na mão. É um nicho pequeno, específico e com uma dor recorrente todo mês — exatamente o tipo de "side hustle" que vira serviço por assinatura.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Gerador do XML: &lt;a href="https://imextecnologia.github.io/tributacao/" rel="noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tributos por estado (atualiza sozinha a partir do XML mais recente): &lt;a href="https://imextecnologia.github.io/tributacao/tributos.html" rel="noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/tributos.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Código
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/imextecnologia" rel="noopener noreferrer"&gt;
        imextecnologia
      &lt;/a&gt; / &lt;a href="https://github.com/imextecnologia/tributacao" rel="noopener noreferrer"&gt;
        tributacao
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      tributacao
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Transparência de Tributos – Combustíveis&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Site estático (GitHub Pages) que gera todo mês o XML &lt;code&gt;TransparenciaTributos&lt;/code&gt; a partir do PDF
"Carga tributária estadual" da &lt;a href="https://www.fecombustiveis.org.br/tributacao" rel="nofollow noopener noreferrer"&gt;Fecombustíveis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Site:&lt;/strong&gt; &lt;a href="https://imextecnologia.github.io/tributacao/" rel="nofollow noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/&lt;/a&gt; · &lt;strong&gt;Tributos por estado:&lt;/strong&gt; &lt;a href="https://imextecnologia.github.io/tributacao/tributos.html" rel="nofollow noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/tributos.html&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Como funciona&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Busca do PDF&lt;/strong&gt; – a cada 8 horas um workflow procura o PDF novo na página da Fecombustíveis, salva em &lt;code&gt;pdf/&lt;/code&gt;
e já gera o XML do mês em &lt;code&gt;xml/&lt;/code&gt; (veja &lt;a href="https://github.com/imextecnologia/tributacao#busca-autom%C3%A1tica-do-pdf" rel="noopener noreferrer"&gt;Busca automática do PDF&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leitura com IA&lt;/strong&gt; – o site envia o PDF ao Google Gemini, que devolve os valores por combustível e UF.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comparação&lt;/strong&gt; – os valores são comparados com o XML do mês anterior (em &lt;code&gt;xml/&lt;/code&gt;) e o que mudou fica destacado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geração&lt;/strong&gt; – para cada combustível que mudou, o bloco antigo termina no dia anterior (ex.: 30/09/2026) e é criado
um bloco novo (ex.: 01/10/2026 até 01/01/2050). Combustíveis sem mudança ficam como estão
Também é possível baixar uma planilha…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/imextecnologia/tributacao" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Como eu construí
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Site 100% estático no GitHub Pages&lt;/strong&gt; — HTML + JS puro, sem framework e sem servidor próprio. Tudo roda no navegador.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions&lt;/strong&gt; — &lt;code&gt;buscar-pdf.yml&lt;/code&gt; roda às 00:00, 08:00 e 16:00 UTC, baixa o PDF, gera o XML com &lt;code&gt;scripts/gerar-xml.js&lt;/code&gt; (mesmas regras do site) e faz commit; &lt;code&gt;pages.yml&lt;/code&gt; publica a cada push.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leitura do PDF com IA&lt;/strong&gt; — hoje o projeto usa o &lt;strong&gt;Google Gemini&lt;/strong&gt; (plano gratuito), com fallback entre &lt;code&gt;gemini-flash-latest&lt;/code&gt;, &lt;code&gt;gemini-flash-lite-latest&lt;/code&gt;, &lt;code&gt;gemini-2.5-flash&lt;/code&gt; e &lt;code&gt;gemini-2.5-flash-lite&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validação antes de confiar na IA&lt;/strong&gt; — se algum valor não fecha a conta, o XML &lt;strong&gt;não&lt;/strong&gt; é gravado automaticamente; ele fica para revisão humana no site (amarelo = mudou, borda vermelha = conta não fecha). O resultado da IA fica em cache no navegador e, se o XML do mês já existe, a IA nem é chamada.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  O que fiz nesta semana (12 a 18 de outubro)
&lt;/h3&gt;

&lt;p&gt;A Fecombustíveis publicou uma &lt;strong&gt;atualização no meio do mês&lt;/strong&gt; (10/10), além do PDF de 01/10. Isso expôs um bug: a página inicial só procurava o XML com a data &lt;em&gt;exata&lt;/em&gt; do PDF (&lt;code&gt;20261001&lt;/code&gt;) e ignorava o &lt;code&gt;20261010&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;13/10&lt;/strong&gt; — corrigi &lt;code&gt;index.html&lt;/code&gt; para usar o XML &lt;strong&gt;mais recente a partir da data do PDF&lt;/strong&gt;, comparando-o com o XML anterior a ele, sem chamar a IA de novo. Em &lt;code&gt;tributos.html&lt;/code&gt;, o link do PDF passou a apontar para o PDF mais recente &lt;strong&gt;até&lt;/strong&gt; a data do XML (já que uma atualização no meio do mês pode não ter PDF próprio).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;13/10&lt;/strong&gt; — subi os PDFs/XMLs novos e ajustei o &lt;code&gt;TransparenciaTributos_20261001.xml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;15/10&lt;/strong&gt; — revisei e atualizei o &lt;code&gt;TransparenciaTributos_20261010.xml&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pequeno no diff (+11/−8 linhas), mas é o tipo de caso real que só aparece quando o sistema está rodando em produção.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que inovação aberta importa?
&lt;/h2&gt;

&lt;p&gt;Vou ser transparente (o projeto se chama assim, afinal): &lt;strong&gt;o modelo que uso hoje não é open-weight&lt;/strong&gt; — é o Gemini via API. O que é aberto aqui é todo o resto: o código, as regras de geração do XML, os workflows e o histórico de cada XML mensal, públicos no GitHub, para qualquer posto ou software house auditar ou reaproveitar.&lt;/p&gt;

&lt;p&gt;E justamente por estar tudo aberto e desacoplado, a IA é uma peça trocável: a extração é uma única chamada que devolve JSON, e a validação das contas é feita fora do modelo. O próximo passo natural é testar um modelo open-weight (como o Gemma) nessa etapa, para não depender do plano gratuito de um provedor e poder rodar localmente. Como o PDF da Fecombustíveis é público, privacidade não é o problema — custo e independência de fornecedor são.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>githubactions</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Transparência de Tributos dos Combustíveis: do PDF da Fecombustíveis ao XML do PDV, sem servidor</title>
      <dc:creator>Fabio Nobre</dc:creator>
      <pubDate>Fri, 16 Oct 2026 19:35:05 +0000</pubDate>
      <link>https://dev.to/fabiohcnobre/transparencia-de-tributos-dos-combustiveis-do-pdf-da-fecombustiveis-ao-xml-do-pdv-sem-servidor-165p</link>
      <guid>https://dev.to/fabiohcnobre/transparencia-de-tributos-dos-combustiveis-do-pdf-da-fecombustiveis-ao-xml-do-pdv-sem-servidor-165p</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  O que eu construí
&lt;/h2&gt;

&lt;p&gt;Todo posto de combustível no Brasil precisa mostrar na nota/cupom quanto do preço é imposto (Lei 12.741/2012, a "Lei da Transparência"). Para combustíveis, os valores de ICMS, PMPF e PIS/COFINS mudam por estado e por mês, e a referência que todo mundo usa é o PDF &lt;strong&gt;"Carga tributária estadual"&lt;/strong&gt; publicado pela Fecombustíveis.&lt;/p&gt;

&lt;p&gt;O problema: alguém precisa abrir esse PDF todo mês, conferir 27 UFs × 6 combustíveis e redigitar tudo no arquivo &lt;code&gt;TransparenciaTributos.xml&lt;/code&gt; que o sistema de PDV lê. É trabalho chato, manual e fácil de errar.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;Transparência de Tributos – Combustíveis&lt;/strong&gt; automatiza isso:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a cada 8 horas um workflow do GitHub Actions procura o PDF novo no site da Fecombustíveis;&lt;/li&gt;
&lt;li&gt;uma IA lê o PDF e devolve os valores por combustível e UF;&lt;/li&gt;
&lt;li&gt;o sistema compara com o XML do mês anterior, destaca o que mudou e confere as contas (PMPF × alíquota = ICMS; PMPF × 9,25% = PIS/COFINS no GNV);&lt;/li&gt;
&lt;li&gt;gera o XML novo — fechando o bloco antigo no dia anterior e abrindo um bloco novo de vigência só para os combustíveis que mudaram;&lt;/li&gt;
&lt;li&gt;publica tudo e avisa por e-mail e Discord.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quem pagaria por isso?&lt;/strong&gt; Software houses de automação comercial que atendem postos (como a Imex Tecnologia, onde isso nasceu) e redes de postos que hoje fazem essa atualização na mão. É um nicho pequeno, específico e com uma dor recorrente todo mês — exatamente o tipo de "side hustle" que vira serviço por assinatura.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Gerador do XML: &lt;a href="https://imextecnologia.github.io/tributacao/" rel="noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tributos por estado (atualiza sozinha a partir do XML mais recente): &lt;a href="https://imextecnologia.github.io/tributacao/tributos.html" rel="noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/tributos.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Código
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/imextecnologia" rel="noopener noreferrer"&gt;
        imextecnologia
      &lt;/a&gt; / &lt;a href="https://github.com/imextecnologia/tributacao" rel="noopener noreferrer"&gt;
        tributacao
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      tributacao
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Transparência de Tributos – Combustíveis&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Site estático (GitHub Pages) que gera todo mês o XML &lt;code&gt;TransparenciaTributos&lt;/code&gt; a partir do PDF
"Carga tributária estadual" da &lt;a href="https://www.fecombustiveis.org.br/tributacao" rel="nofollow noopener noreferrer"&gt;Fecombustíveis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Site:&lt;/strong&gt; &lt;a href="https://imextecnologia.github.io/tributacao/" rel="nofollow noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/&lt;/a&gt; · &lt;strong&gt;Tributos por estado:&lt;/strong&gt; &lt;a href="https://imextecnologia.github.io/tributacao/tributos.html" rel="nofollow noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/tributos.html&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Como funciona&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Busca do PDF&lt;/strong&gt; – a cada 8 horas um workflow procura o PDF novo na página da Fecombustíveis, salva em &lt;code&gt;pdf/&lt;/code&gt;
e já gera o XML do mês em &lt;code&gt;xml/&lt;/code&gt; (veja &lt;a href="https://github.com/imextecnologia/tributacao#busca-autom%C3%A1tica-do-pdf" rel="noopener noreferrer"&gt;Busca automática do PDF&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leitura com IA&lt;/strong&gt; – o site envia o PDF ao Google Gemini, que devolve os valores por combustível e UF.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comparação&lt;/strong&gt; – os valores são comparados com o XML do mês anterior (em &lt;code&gt;xml/&lt;/code&gt;) e o que mudou fica destacado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geração&lt;/strong&gt; – para cada combustível que mudou, o bloco antigo termina no dia anterior (ex.: 30/09/2026) e é criado
um bloco novo (ex.: 01/10/2026 até 01/01/2050). Combustíveis sem mudança ficam como estão
Também é possível baixar uma planilha…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/imextecnologia/tributacao" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Como eu construí
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Site 100% estático no GitHub Pages&lt;/strong&gt; — HTML + JS puro, sem framework e sem servidor próprio. Tudo roda no navegador.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions&lt;/strong&gt; — &lt;code&gt;buscar-pdf.yml&lt;/code&gt; roda às 00:00, 08:00 e 16:00 UTC, baixa o PDF, gera o XML com &lt;code&gt;scripts/gerar-xml.js&lt;/code&gt; (mesmas regras do site) e faz commit; &lt;code&gt;pages.yml&lt;/code&gt; publica a cada push.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leitura do PDF com IA&lt;/strong&gt; — hoje o projeto usa o &lt;strong&gt;Google Gemini&lt;/strong&gt; (plano gratuito), com fallback entre &lt;code&gt;gemini-flash-latest&lt;/code&gt;, &lt;code&gt;gemini-flash-lite-latest&lt;/code&gt;, &lt;code&gt;gemini-2.5-flash&lt;/code&gt; e &lt;code&gt;gemini-2.5-flash-lite&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validação antes de confiar na IA&lt;/strong&gt; — se algum valor não fecha a conta, o XML &lt;strong&gt;não&lt;/strong&gt; é gravado automaticamente; ele fica para revisão humana no site (amarelo = mudou, borda vermelha = conta não fecha). O resultado da IA fica em cache no navegador e, se o XML do mês já existe, a IA nem é chamada.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  O que fiz nesta semana (12 a 18 de outubro)
&lt;/h3&gt;

&lt;p&gt;A Fecombustíveis publicou uma &lt;strong&gt;atualização no meio do mês&lt;/strong&gt; (10/10), além do PDF de 01/10. Isso expôs um bug: a página inicial só procurava o XML com a data &lt;em&gt;exata&lt;/em&gt; do PDF (&lt;code&gt;20261001&lt;/code&gt;) e ignorava o &lt;code&gt;20261010&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;13/10&lt;/strong&gt; — corrigi &lt;code&gt;index.html&lt;/code&gt; para usar o XML &lt;strong&gt;mais recente a partir da data do PDF&lt;/strong&gt;, comparando-o com o XML anterior a ele, sem chamar a IA de novo. Em &lt;code&gt;tributos.html&lt;/code&gt;, o link do PDF passou a apontar para o PDF mais recente &lt;strong&gt;até&lt;/strong&gt; a data do XML (já que uma atualização no meio do mês pode não ter PDF próprio).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;13/10&lt;/strong&gt; — subi os PDFs/XMLs novos e ajustei o &lt;code&gt;TransparenciaTributos_20261001.xml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;15/10&lt;/strong&gt; — revisei e atualizei o &lt;code&gt;TransparenciaTributos_20261010.xml&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pequeno no diff (+11/−8 linhas), mas é o tipo de caso real que só aparece quando o sistema está rodando em produção.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que inovação aberta importa?
&lt;/h2&gt;

&lt;p&gt;Vou ser transparente (o projeto se chama assim, afinal): &lt;strong&gt;o modelo que uso hoje não é open-weight&lt;/strong&gt; — é o Gemini via API. O que é aberto aqui é todo o resto: o código, as regras de geração do XML, os workflows e o histórico de cada XML mensal, públicos no GitHub, para qualquer posto ou software house auditar ou reaproveitar.&lt;/p&gt;

&lt;p&gt;E justamente por estar tudo aberto e desacoplado, a IA é uma peça trocável: a extração é uma única chamada que devolve JSON, e a validação das contas é feita fora do modelo. O próximo passo natural é testar um modelo open-weight (como o Gemma) nessa etapa, para não depender do plano gratuito de um provedor e poder rodar localmente. Como o PDF da Fecombustíveis é público, privacidade não é o problema — custo e independência de fornecedor são.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>githubactions</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Transparência de Tributos dos Combustíveis: do PDF da Fecombustíveis ao XML do PDV, sem servidor</title>
      <dc:creator>Fabio Nobre</dc:creator>
      <pubDate>Fri, 16 Oct 2026 19:35:04 +0000</pubDate>
      <link>https://dev.to/fabiohcnobre/transparencia-de-tributos-dos-combustiveis-do-pdf-da-fecombustiveis-ao-xml-do-pdv-sem-servidor-1k0</link>
      <guid>https://dev.to/fabiohcnobre/transparencia-de-tributos-dos-combustiveis-do-pdf-da-fecombustiveis-ao-xml-do-pdv-sem-servidor-1k0</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  O que eu construí
&lt;/h2&gt;

&lt;p&gt;Todo posto de combustível no Brasil precisa mostrar na nota/cupom quanto do preço é imposto (Lei 12.741/2012, a "Lei da Transparência"). Para combustíveis, os valores de ICMS, PMPF e PIS/COFINS mudam por estado e por mês, e a referência que todo mundo usa é o PDF &lt;strong&gt;"Carga tributária estadual"&lt;/strong&gt; publicado pela Fecombustíveis.&lt;/p&gt;

&lt;p&gt;O problema: alguém precisa abrir esse PDF todo mês, conferir 27 UFs × 6 combustíveis e redigitar tudo no arquivo &lt;code&gt;TransparenciaTributos.xml&lt;/code&gt; que o sistema de PDV lê. É trabalho chato, manual e fácil de errar.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;Transparência de Tributos – Combustíveis&lt;/strong&gt; automatiza isso:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a cada 8 horas um workflow do GitHub Actions procura o PDF novo no site da Fecombustíveis;&lt;/li&gt;
&lt;li&gt;uma IA lê o PDF e devolve os valores por combustível e UF;&lt;/li&gt;
&lt;li&gt;o sistema compara com o XML do mês anterior, destaca o que mudou e confere as contas (PMPF × alíquota = ICMS; PMPF × 9,25% = PIS/COFINS no GNV);&lt;/li&gt;
&lt;li&gt;gera o XML novo — fechando o bloco antigo no dia anterior e abrindo um bloco novo de vigência só para os combustíveis que mudaram;&lt;/li&gt;
&lt;li&gt;publica tudo e avisa por e-mail e Discord.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quem pagaria por isso?&lt;/strong&gt; Software houses de automação comercial que atendem postos (como a Imex Tecnologia, onde isso nasceu) e redes de postos que hoje fazem essa atualização na mão. É um nicho pequeno, específico e com uma dor recorrente todo mês — exatamente o tipo de "side hustle" que vira serviço por assinatura.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Gerador do XML: &lt;a href="https://imextecnologia.github.io/tributacao/" rel="noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tributos por estado (atualiza sozinha a partir do XML mais recente): &lt;a href="https://imextecnologia.github.io/tributacao/tributos.html" rel="noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/tributos.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Código
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/imextecnologia" rel="noopener noreferrer"&gt;
        imextecnologia
      &lt;/a&gt; / &lt;a href="https://github.com/imextecnologia/tributacao" rel="noopener noreferrer"&gt;
        tributacao
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      tributacao
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Transparência de Tributos – Combustíveis&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Site estático (GitHub Pages) que gera todo mês o XML &lt;code&gt;TransparenciaTributos&lt;/code&gt; a partir do PDF
"Carga tributária estadual" da &lt;a href="https://www.fecombustiveis.org.br/tributacao" rel="nofollow noopener noreferrer"&gt;Fecombustíveis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Site:&lt;/strong&gt; &lt;a href="https://imextecnologia.github.io/tributacao/" rel="nofollow noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/&lt;/a&gt; · &lt;strong&gt;Tributos por estado:&lt;/strong&gt; &lt;a href="https://imextecnologia.github.io/tributacao/tributos.html" rel="nofollow noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/tributos.html&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Como funciona&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Busca do PDF&lt;/strong&gt; – a cada 8 horas um workflow procura o PDF novo na página da Fecombustíveis, salva em &lt;code&gt;pdf/&lt;/code&gt;
e já gera o XML do mês em &lt;code&gt;xml/&lt;/code&gt; (veja &lt;a href="https://github.com/imextecnologia/tributacao#busca-autom%C3%A1tica-do-pdf" rel="noopener noreferrer"&gt;Busca automática do PDF&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leitura com IA&lt;/strong&gt; – o site envia o PDF ao Google Gemini, que devolve os valores por combustível e UF.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comparação&lt;/strong&gt; – os valores são comparados com o XML do mês anterior (em &lt;code&gt;xml/&lt;/code&gt;) e o que mudou fica destacado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geração&lt;/strong&gt; – para cada combustível que mudou, o bloco antigo termina no dia anterior (ex.: 30/09/2026) e é criado
um bloco novo (ex.: 01/10/2026 até 01/01/2050). Combustíveis sem mudança ficam como estão
Também é possível baixar uma planilha…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/imextecnologia/tributacao" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Como eu construí
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Site 100% estático no GitHub Pages&lt;/strong&gt; — HTML + JS puro, sem framework e sem servidor próprio. Tudo roda no navegador.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions&lt;/strong&gt; — &lt;code&gt;buscar-pdf.yml&lt;/code&gt; roda às 00:00, 08:00 e 16:00 UTC, baixa o PDF, gera o XML com &lt;code&gt;scripts/gerar-xml.js&lt;/code&gt; (mesmas regras do site) e faz commit; &lt;code&gt;pages.yml&lt;/code&gt; publica a cada push.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leitura do PDF com IA&lt;/strong&gt; — hoje o projeto usa o &lt;strong&gt;Google Gemini&lt;/strong&gt; (plano gratuito), com fallback entre &lt;code&gt;gemini-flash-latest&lt;/code&gt;, &lt;code&gt;gemini-flash-lite-latest&lt;/code&gt;, &lt;code&gt;gemini-2.5-flash&lt;/code&gt; e &lt;code&gt;gemini-2.5-flash-lite&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validação antes de confiar na IA&lt;/strong&gt; — se algum valor não fecha a conta, o XML &lt;strong&gt;não&lt;/strong&gt; é gravado automaticamente; ele fica para revisão humana no site (amarelo = mudou, borda vermelha = conta não fecha). O resultado da IA fica em cache no navegador e, se o XML do mês já existe, a IA nem é chamada.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  O que fiz nesta semana (12 a 18 de outubro)
&lt;/h3&gt;

&lt;p&gt;A Fecombustíveis publicou uma &lt;strong&gt;atualização no meio do mês&lt;/strong&gt; (10/10), além do PDF de 01/10. Isso expôs um bug: a página inicial só procurava o XML com a data &lt;em&gt;exata&lt;/em&gt; do PDF (&lt;code&gt;20261001&lt;/code&gt;) e ignorava o &lt;code&gt;20261010&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;13/10&lt;/strong&gt; — corrigi &lt;code&gt;index.html&lt;/code&gt; para usar o XML &lt;strong&gt;mais recente a partir da data do PDF&lt;/strong&gt;, comparando-o com o XML anterior a ele, sem chamar a IA de novo. Em &lt;code&gt;tributos.html&lt;/code&gt;, o link do PDF passou a apontar para o PDF mais recente &lt;strong&gt;até&lt;/strong&gt; a data do XML (já que uma atualização no meio do mês pode não ter PDF próprio).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;13/10&lt;/strong&gt; — subi os PDFs/XMLs novos e ajustei o &lt;code&gt;TransparenciaTributos_20261001.xml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;15/10&lt;/strong&gt; — revisei e atualizei o &lt;code&gt;TransparenciaTributos_20261010.xml&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pequeno no diff (+11/−8 linhas), mas é o tipo de caso real que só aparece quando o sistema está rodando em produção.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que inovação aberta importa?
&lt;/h2&gt;

&lt;p&gt;Vou ser transparente (o projeto se chama assim, afinal): &lt;strong&gt;o modelo que uso hoje não é open-weight&lt;/strong&gt; — é o Gemini via API. O que é aberto aqui é todo o resto: o código, as regras de geração do XML, os workflows e o histórico de cada XML mensal, públicos no GitHub, para qualquer posto ou software house auditar ou reaproveitar.&lt;/p&gt;

&lt;p&gt;E justamente por estar tudo aberto e desacoplado, a IA é uma peça trocável: a extração é uma única chamada que devolve JSON, e a validação das contas é feita fora do modelo. O próximo passo natural é testar um modelo open-weight (como o Gemma) nessa etapa, para não depender do plano gratuito de um provedor e poder rodar localmente. Como o PDF da Fecombustíveis é público, privacidade não é o problema — custo e independência de fornecedor são.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>githubactions</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Tributos de combustíveis no automático: do PDF da Fecombustíveis ao XML em minutos, com IA e GitHub Actions</title>
      <dc:creator>Fabio Nobre</dc:creator>
      <pubDate>Fri, 09 Oct 2026 14:52:17 +0000</pubDate>
      <link>https://dev.to/fabiohcnobre/tributos-de-combustiveis-no-automatico-do-pdf-da-fecombustiveis-ao-xml-em-minutos-com-ia-e-github-3e0g</link>
      <guid>https://dev.to/fabiohcnobre/tributos-de-combustiveis-no-automatico-do-pdf-da-fecombustiveis-ao-xml-em-minutos-com-ia-e-github-3e0g</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Todo mês, postos de combustível e sistemas de automação comercial no Brasil precisam atualizar a &lt;strong&gt;transparência de tributos&lt;/strong&gt; (Lei 12.741/2012): quanto de ICMS, PIS/COFINS e CIDE está embutido no litro de cada combustível, em cada estado. A fonte é o PDF "Carga tributária estadual" da &lt;a href="https://www.fecombustiveis.org.br/tributacao" rel="noopener noreferrer"&gt;Fecombustíveis&lt;/a&gt; — e o trabalho era abrir o PDF, copiar valor por valor para 27 UFs e 6 combustíveis e montar o XML &lt;code&gt;TransparenciaTributos&lt;/code&gt; à mão.&lt;/p&gt;

&lt;p&gt;Construí um &lt;strong&gt;site estático (GitHub Pages)&lt;/strong&gt; que faz isso sozinho:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Busca do PDF&lt;/strong&gt; – um workflow do GitHub Actions procura o PDF novo a cada 12 horas e salva no repositório.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leitura com IA&lt;/strong&gt; – o PDF é enviado a um modelo de IA, que devolve os valores por combustível e por UF.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comparação&lt;/strong&gt; – os valores são comparados com o XML do mês anterior; o que mudou fica em amarelo, e contas que não fecham (PMPF × alíquota ≠ ICMS) ficam com borda vermelha.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geração&lt;/strong&gt; – para cada combustível que mudou, a vigência antiga é encerrada no dia anterior e um bloco novo é criado. Dá para baixar o XML e uma planilha Excel.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Também há uma página pública, &lt;a href="https://imextecnologia.github.io/tributacao/tributos.html" rel="noopener noreferrer"&gt;tributos.html&lt;/a&gt;, com as tabelas por estado (Gasolina C, Gasolina Premium, Diesel S-500, Diesel S-10, Etanol hidratado e GNV) que se atualiza sozinha quando entra o XML do mês.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;E o "Touch Grass"?&lt;/strong&gt; O objetivo aqui é tirar uma pessoa de uma tarefa repetitiva de tela: o que levava horas de digitação e conferência todo mês virou alguns minutos de revisão. A tela passa a ser a parte mais curta do processo — o resto do dia fica livre.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Para quem é:&lt;/strong&gt; desenvolvedores de sistemas de PDV/NF-e para postos, contadores e donos de posto que precisam manter a carga tributária correta no cupom.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Gerador do XML: &lt;a href="https://imextecnologia.github.io/tributacao/" rel="noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tributos por estado: &lt;a href="https://imextecnologia.github.io/tributacao/tributos.html" rel="noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/tributos.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/imextecnologia" rel="noopener noreferrer"&gt;
        imextecnologia
      &lt;/a&gt; / &lt;a href="https://github.com/imextecnologia/tributacao" rel="noopener noreferrer"&gt;
        tributacao
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      tributacao
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Transparência de Tributos – Combustíveis&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Site estático (GitHub Pages) que gera todo mês o XML &lt;code&gt;TransparenciaTributos&lt;/code&gt; a partir do PDF
"Carga tributária estadual" da &lt;a href="https://www.fecombustiveis.org.br/tributacao" rel="nofollow noopener noreferrer"&gt;Fecombustíveis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Site:&lt;/strong&gt; &lt;a href="https://imextecnologia.github.io/tributacao/" rel="nofollow noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/&lt;/a&gt; · &lt;strong&gt;Tributos por estado:&lt;/strong&gt; &lt;a href="https://imextecnologia.github.io/tributacao/tributos.html" rel="nofollow noopener noreferrer"&gt;https://imextecnologia.github.io/tributacao/tributos.html&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Como funciona&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Busca do PDF&lt;/strong&gt; – a cada 12 horas um workflow procura o PDF novo na página da Fecombustíveis e salva em &lt;code&gt;pdf/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leitura com IA&lt;/strong&gt; – o site envia o PDF ao Google Gemini, que devolve os valores por combustível e UF.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comparação&lt;/strong&gt; – os valores são comparados com o XML do mês anterior (em &lt;code&gt;xml/&lt;/code&gt;) e o que mudou fica destacado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geração&lt;/strong&gt; – para cada combustível que mudou, o bloco antigo termina no dia anterior (ex.: 30/09/2026) e é criado
um bloco novo (ex.: 01/10/2026 até 01/01/2050). Combustíveis sem mudança ficam como estão
Também é possível baixar uma planilha Excel com os valores.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Tudo roda no navegador; não há servidor próprio.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Uso&lt;/h2&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/imextecnologia/tributacao" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;100% no navegador&lt;/strong&gt;, sem servidor próprio: HTML + JavaScript puro, publicado no GitHub Pages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IA para ler o PDF:&lt;/strong&gt; o site envia o PDF e recebe JSON estruturado por UF/combustível. Hoje uso a API do Google com fallback entre modelos (&lt;code&gt;gemini-flash-latest&lt;/code&gt; → &lt;code&gt;gemini-flash-lite-latest&lt;/code&gt; → &lt;code&gt;gemini-2.5-flash&lt;/code&gt; → &lt;code&gt;gemini-2.5-flash-lite&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validação determinística depois da IA:&lt;/strong&gt; a IA não tem a palavra final. O site recalcula PMPF × alíquota e PMPF × 9,25% (PIS/COFINS no GNV) e marca qualquer divergência para revisão humana. Os valores podem ser corrigidos direto na tabela.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Economia de chamadas:&lt;/strong&gt; se o XML do mês já existe em &lt;code&gt;xml/&lt;/code&gt;, ele é carregado direto; o resultado da IA fica salvo no navegador, então recarregar a página não chama a IA de novo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;buscar-pdf.yml&lt;/code&gt; roda às 00:00 e 12:00 UTC, lê a página da Fecombustíveis, baixa o PDF novo, atualiza o &lt;code&gt;painel.json&lt;/code&gt; com o quadro oficial de tributação (%) e publica o site;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pages.yml&lt;/code&gt; gera a lista de arquivos, embute CSS/tema/logo e publica a cada push na &lt;code&gt;main&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mapeamento por código ANP&lt;/strong&gt; (ex.: Gasolina C = 320102001/320102002; Diesel S-10 = 820101033/820101034). Produtos não mapeados são mantidos no XML sem alteração.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plano B sem IA:&lt;/strong&gt; "Preencher a partir do XML (edição manual)" para quando a API estiver indisponível.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;O projeto inteiro é aberto e não depende de nenhum servidor meu: o código está no GitHub, o site é estático e roda no navegador, os dados de entrada são públicos (PDF da Fecombustíveis) e o histórico de PDFs e XMLs fica versionado no próprio repositório — qualquer posto ou software house pode fazer um fork e usar.&lt;/p&gt;

&lt;p&gt;Sendo transparente: a extração hoje usa um modelo fechado via API. Como toda a lógica de prompt, validação e geração do XML é independente do modelo (o site já troca de modelo automaticamente), o próximo passo é trocar por um &lt;strong&gt;modelo open-weight&lt;/strong&gt; (por exemplo Gemma) — o que permitiria rodar a extração localmente, sem enviar nada a terceiros e sem custo nem limite de cota. A validação determinística (as contas que precisam fechar) é justamente o que torna seguro trocar de modelo: se um modelo menor errar, o erro aparece em vermelho na tela.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot&lt;/strong&gt; — o projeto é automatizado com GitHub Actions (busca do PDF a cada 12h, atualização do quadro de tributação e publicação no Pages).&lt;/li&gt;
&lt;/ul&gt;

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