[{"content":" In progress AI_Juridico is a proof of concept I\u0026rsquo;m building to explore how far a fully local AI system can go in legal research.\nThe goal is a RAG (retrieval-augmented generation) pipeline that synthesizes decisions from Brazil\u0026rsquo;s Supreme Federal Court (STF) and drafts legal opinions. It is designed so that every citation can be traced back to a real ruling, which means the system cannot invent references.\nDesign principles # Real court data only. Synthetic datasets were deliberately ruled out. Fully local execution on a single consumer GPU (RTX 4080 SUPER), using Ollama and open-weight models. No cloud APIs. Objective evaluation targets, including zero hallucinated citations. What is built so far # An automated pipeline that collects decisions, downloads the full-text rulings from the STF portal and splits each document into its legal sections (ementa, relatório, voto, acórdão). The pipeline has processed all 51 decisions of the validation set; a field-level accuracy review is underway. The extraction produces structured JSONL records, ready for chunking and embedding.\nThe plan # Scope definition: done Data collection from the STF and validation: done Structured extraction: in progress Legal-aware chunking Embeddings and vector store RAG pipeline Synthesis and draft opinions Interface (Open WebUI) Evaluation with objective metrics Local deployment with Docker Stack # Python · Playwright · PyMuPDF · Ollama (Qwen3) · bge-m3 embeddings · ChromaDB · Open WebUI · Docker · Git\n","date":"26 October 2026","externalUrl":null,"permalink":"/projects/legal-ai/","section":"Projects","summary":"In progress · A fully local RAG proof of concept over real decisions from Brazil’s Supreme Federal Court (STF), designed so every claim cites a real ruling.","title":"Legal AI","type":"projects"},{"content":"Animals and plants through my macro lens.\n","externalUrl":null,"permalink":"/hobbies/photography/macro/","section":"Hobbies","summary":"Animals and plants through my macro lens.","title":"Animals \u0026 Plants through Macro lens","type":"hobbies"},{"content":"This was one of the most significant personal projects for me. It was an extremely intensive modeling course that I took back when I was still a complete beginner. This course was the biggest motivation for me to keep using 3D software. It was created entirely in Blender 3D, following video tutorials by Chris Plush. It involved countless hours of learning and was a truly enjoyable experience.\n","externalUrl":null,"permalink":"/hobbies/3d-for-fun/corvette/","section":"Hobbies","summary":"Total dedication: Hours of fun and intense learning.","title":"Corvette","type":"hobbies"},{"content":"This is Duna. A stray cat that my mother adopted. She had a great personality: she was so feisty that my mother used to call her an ocelot.\n","externalUrl":null,"permalink":"/hobbies/photography/duna/","section":"Hobbies","summary":"Animals and plants through my lens.","title":"Duna","type":"hobbies"},{"content":"","externalUrl":null,"permalink":"/hobbies/photography/","section":"Hobbies","summary":"Photo galleries by theme and date.","title":"Photography","type":"hobbies"},{"content":" In progress A self-hosted AI stack running on local hardware. Ollama serves open-weight models; Hermes Agent orchestrates a CrewAI team of specialized agents (researcher, writer, critic) with shared long-term memory on a Mem0 server backed by Qdrant. It is accessible through Open WebUI, a chat bot interface and the Paperclip agent manager.\nNo cloud AI APIs: models and memory stay on local hardware.\nHardware # OS: Ubuntu CPU: AMD Ryzen 9 5950X RAM: 32 GB GPU: NVIDIA RTX 4080 SUPER (16 GB VRAM) Models # Model Use gemma4:26b · gemma4:12b General purpose gpt-oss:20b (64k context) General purpose, long context qwen3.8:27b · qwen3:14b General purpose qwen3-coder:30b · qwen2.5-coder:14b Code deepseek-r1:14b Reasoning Stack # Ollama · Open WebUI · Hermes Agent · CrewAI · Mem0 · Qdrant · Paperclip · Docker\n","date":"26 October 2026","externalUrl":null,"permalink":"/projects/local-ai/","section":"Projects","summary":"In progress · A self-hosted AI stack with local models, a team of agents and shared long-term memory. No cloud AI APIs.","title":"Local AI","type":"projects"},{"content":"Personal renders and experiments, outside client work. Professional 3D work is in Projects.\n","externalUrl":null,"permalink":"/hobbies/3d-for-fun/","section":"Hobbies","summary":"Galleries of personal renders and experiments, outside client work.","title":"3D for Fun","type":"hobbies"},{"content":"These photos are from when I was trying out a Meade DS-114, a 114 mm reflector telescope. At the time, the camera I had on hand was a compact Sony Cyber-shot, and the technique was as simple as it gets: holding the camera right up to the eyepiece and shooting, known as afocal photography. With no mount or adapter, every bit of shake shows up, which is why some shots lack sharpness.\n","externalUrl":null,"permalink":"/hobbies/photography/moon/","section":"Hobbies","summary":"The Moon, on different nights.","title":"The Moon","type":"hobbies"},{"content":"Family finances across two countries and two currencies run on one spreadsheet, and every number in it is audited.\nIt is a local-first system that turns bank and card statements from 16 accounts into one consolidated cash-flow view, in CAD and BRL. Deterministic code does every calculation; a local LLM only suggests categories, and a human confirms.\nAll screens on this page use fictitious values, for system demonstration only.\nWhat it does # Reads 20 statement sources (CSV, OFX and digital PDF) with 13 deterministic parsers Converts BRL, USD and EUR to CAD at the Bank of Canada rate of each transaction day Pairs card payments, internal transfers and international remittances, so nothing is counted twice Categorizes by rules; for the rest, three local LLMs on Ollama vote, and only a unanimous answer becomes a suggestion Rebuilds the Google Sheets dashboards on every run: annual cash flow, per person, debts (principal vs. interest), investments against target allocation, and charts Audits every run with 4,302 independent checks How it works # One command runs the whole pipeline. The LLM touches exactly one step, and never the numbers.\nThe spreadsheet # Transactions. One row per statement line. BRL converted to CAD at the rate of the day; transfers and card payments paired so nothing counts twice.\nAnnual dashboard. Cash in, cash out and what is left, consolidated in CAD.\nAnnual by person. Each expense belongs to the holder of the account it left from, so it is easy to see early if one person is running negative.\nDebts. Each debt split into principal and interest, and how much of the income they take every month.\nInvestments. Grouped by asset class, type and asset, with a target percentage for each and how much is missing or over.\nCharts. Native Google Sheets charts fed by the dashboards, each one following the period selector of its own panel.\nLocal LLMs suggest. Code decides. # Every amount, sum, currency conversion and pairing is handled by deterministic Python. The models touch exactly one step: proposing a category for merchants the rules don\u0026rsquo;t cover yet.\nThree local models on Ollama (gemma4:12b, gemma4:26b and gpt-oss:20b) answer the same queue Only a unanimous answer becomes a suggestion; split votes are shown with every model\u0026rsquo;s answer Output is structured and restricted to a closed list of 67 categories, at temperature 0 Categories that depend on intent (gifts, kids\u0026rsquo; outings, insurance type) are blocked by code before the vote The prompt carries the merchant name, account type and similar rules, never an amount A suggestion becomes a rule only when a human ticks Confirm in the Review tab How the setup was chosen. Seven model configurations were measured in a leave-one-out test against 114 categorization rules written by a human. Single models landed between 75% and 86% precision. The unanimous vote of three models from two families, plus the block list, reached 97.6% precision with 73% coverage; the remaining items become \u0026ldquo;don\u0026rsquo;t know\u0026rdquo; instead of a wrong answer. Reasoning mode did not improve precision for this task, and adding more examples made it worse. The test precision is an upper bound, since the block list was picked on the same data; the real acceptance rate is tracked on every confirmation.\nEvery run ends with an audit # A dashboard that looks right isn\u0026rsquo;t the same as one that is right. After the dashboards are rebuilt, a read-only script recalculates everything from the local master files and compares it with the sheet, at a tolerance of one cent: 4,302 checks, all of which must match.\nA. Every transaction in the sheet against the local master file B. Every cell of the dashboards, recomputed in Python C. The annual totals again, through an independent calculation with its own rules D. The money identity: the monthly surplus equals the sum of every account, and both sides of each transfer cancel out E. Coverage: no missing statement or month for any account F. Investments and chart data against their sources G. A human check: the last balance of each account and random transactions to compare with the statements The audit writes nothing and fixes nothing: it reports which layer failed and by how much. The first full run found one real mismatch, an internal BRL transfer that left on one day and arrived three days later, at a different exchange rate. The fix went into the rule, not into an exception list. The audit has its own tests: 29 cases and 38 deliberately injected bugs, all caught.\nBy the numbers # Built with Claude Code as the engineering partner.\n~25,600 lines of Python, more than half of it tests and mutation scripts 718 test cases; 204 deliberately injected bugs, all caught 75 commits in 16 days 41 hours of commit activity (time between commits only) ~60 hours of Claude Code sessions and ~4M tokens of context (both estimates) What it doesn\u0026rsquo;t do # Connect to banks or store bank credentials; statements are downloaded and dropped into a watched folder Let an LLM read amounts, do math or create rules Send financial data to any cloud AI service Move money or make investment decisions The repository is private, since it holds a family\u0026rsquo;s real configuration. If a generalized public version would be useful to you, get in touch through the Contact page.\nStack # Python · Ollama (gemma4, gpt-oss) · Google Sheets API · systemd · Bank of Canada exchange rates · Claude Code · Git\n","date":"26 October 2026","externalUrl":null,"permalink":"/projects/finance-system/","section":"Projects","summary":"Two countries, two currencies, one spreadsheet. A local-first system that turns statements from 16 accounts into audited dashboards, with local LLMs that only suggest.","title":"Family Finance","type":"projects"},{"content":"High dynamic range: bright highlights and deep shadows in a single image.\n","externalUrl":null,"permalink":"/hobbies/photography/hdr/","section":"Hobbies","summary":"High dynamic range: bright highlights and deep shadows in a single image.","title":"HDR","type":"hobbies"},{"content":"My home network ended up becoming my lab. It is organized in simple, functional layers, focused on performance, device segmentation and DNS-level content filtering.\nInternet │ Cable modem (ISP router (NAT)) │ Wi-Fi 6 router – TP-Link Archer AX23 (routing, DHCP, Wi-Fi) │ Managed switch – Netgear GS305E (wired distribution) │ Wired devices The ISP router and the AX23 both perform NAT (double NAT).\nOn top of that, I put a few concepts into practice:\nIoT segmentation: smart devices sit on an isolated network, separated from computers and phones, keeping a vulnerable device further away from important data. Guest network: visitors get internet access without seeing the main network. DNS filtering: DHCP hands out a public DNS that blocks ads and trackers, so the protection covers the whole network with nothing to install on each device. Versioned documentation: configurations and step-by-step setup guides live in git repositories, making any change easy to redo or roll back. The centrepiece of the homelab is the local AI server: a PC that runs language models on the machine itself, with no external services, reachable from any computer on the network. Details are in the Local AI project.\nOutside the main setup, I keep a Ubiquiti lab with a UniFi Security Gateway (USG-3P) and a Cloud Key Gen2 for study and occasional testing. They stay out of production because the gateway can\u0026rsquo;t keep up with my internet speed. Deciding not to put a piece of equipment into production is also part of designing a network.\nIn the end, the homelab is where networking, security and systems administration theory turns into practice: plan a change, test it in a separate environment, document it, and only then apply it. It\u0026rsquo;s the same cycle as day-to-day IT, at home scale.\n","externalUrl":null,"permalink":"/hobbies/homelab/","section":"Hobbies","summary":"My home network as a lab: segmentation, filtered DNS, local AI and a separate test environment.","title":"Homelab \u0026 Networking","type":"hobbies"},{"content":"Software: Blender (Cycles) · 3ds Max (Corona Renderer) · Photoshop\nRenders and 2D site maps for residential projects: facades, materials, lighting and landscaping. Post-production in Photoshop; site map assets created in Blender and composed in Photoshop.\n","externalUrl":null,"permalink":"/projects/3d-archviz/","section":"Projects","summary":"Archviz portfolio: residential exteriors and facades.","title":"Architectural Visualization","type":"projects"},{"content":"Software: Blender — 3D modeling, shading, animation, image editing, video editing and sound.\nProduct visualization for an energy drink line, from still renders to animation.\n","externalUrl":null,"permalink":"/projects/3d-energy-drink/","section":"Projects","summary":"Energy drink product visualization: renders and animation.","title":"Beaver Buzz Energy","type":"projects"},{"content":"Swimming is my favourite sport. For me, it\u0026rsquo;s almost a form of meditation: when I get into a state of flow and swimming feels as natural as breathing, the pleasure is hard to describe. It\u0026rsquo;s a feeling I\u0026rsquo;ve only ever found in the water.\nI started at around 8 years old, during physical education classes at my school. I grew up in an environment that always encouraged sports, and swimming had an extra advantage: a child who can swim has one more layer of safety (or one less fear) in any situation involving a pool, the ocean or a river.\nA few years later, I joined a club in Brasília, and what had been a leisure activity turned into serious training: every day, for several hours a day. I started competing for the club and became a registered athlete with the Federal District\u0026rsquo;s swimming federation, taking part in a number of meets. I\u0026rsquo;ll admit I never really enjoyed competition itself, even though I stood out a bit, especially in breaststroke. What drove me were time goals, and I improved a lot over the years. In distance and endurance sessions, I\u0026rsquo;d often swim for more than an hour without stopping.\nI\u0026rsquo;ve also done road running, cycling and basketball, but nothing compared to the pleasure of swimming. Running, in fact, I trained for seriously, mainly for the physical fitness tests required in public-service entrance exams and for military physical training back in my police days. Modesty aside, I did well: a 5 km under 30 minutes with relative ease, and 2,400 m in 12 minutes, the standard in those tests.\nWith swimming, running and cycling under my belt, I\u0026rsquo;ve thought about putting all three together in a triathlon. It never got off the ground, mostly because cycling has always been a hobby for me, never training. I\u0026rsquo;ve also never ventured into open water, apart from a few strokes in the ocean on vacation.\nOver time, life pulled me away from the pool, but every now and then I\u0026rsquo;d come back, at least for a few months a year. Right now I\u0026rsquo;m on a break, but I plan to return. No set plan yet. Maybe soon.\n","externalUrl":null,"permalink":"/hobbies/swimming/","section":"Hobbies","summary":"My favourite sport: from school swim classes to competitive training in Brasília.","title":"Swimming","type":"hobbies"},{"content":"","date":"26/10/2026","externalUrl":null,"permalink":"/pt-br/tags/agentes/","section":"Tags","summary":"","title":"Agentes","type":"tags"},{"content":"","date":"26 October 2026","externalUrl":null,"permalink":"/tags/agents/","section":"Tags","summary":"","title":"Agents","type":"tags"},{"content":"","date":"26 October 2026","externalUrl":null,"permalink":"/tags/ai/","section":"Tags","summary":"","title":"AI","type":"tags"},{"content":"","date":"26/10/2026","externalUrl":null,"permalink":"/pt-br/tags/automa%C3%A7%C3%A3o/","section":"Tags","summary":"","title":"Automação","type":"tags"},{"content":"","date":"26 October 2026","externalUrl":null,"permalink":"/tags/automation/","section":"Tags","summary":"","title":"Automation","type":"tags"},{"content":"","date":"26 October 2026","externalUrl":null,"permalink":"/tags/google-sheets/","section":"Tags","summary":"","title":"Google Sheets","type":"tags"},{"content":"","date":"26/10/2026","externalUrl":null,"permalink":"/pt-br/tags/ia/","section":"Tags","summary":"","title":"IA","type":"tags"},{"content":"","date":"26/10/2026","externalUrl":null,"permalink":"/pt-br/tags/ia-local/","section":"Tags","summary":"","title":"IA Local","type":"tags"},{"content":"","date":"26 October 2026","externalUrl":null,"permalink":"/tags/llm/","section":"Tags","summary":"","title":"LLM","type":"tags"},{"content":"","date":"26 October 2026","externalUrl":null,"permalink":"/tags/local-ai/","section":"Tags","summary":"","title":"Local AI","type":"tags"},{"content":"Hi! My name is Guilherme Rizzo, and I\u0026rsquo;m currently based in Calgary, Alberta.\nMy path hasn\u0026rsquo;t been a straight line, and I see that as an advantage. I earned a degree in Physics, built an IT team and rolled out an ERP system at a construction company, co-founded a commercial kitchen, and spent six years as a civil servant in public safety. Along the way, 3D went from hobby to freelance work, and eventually I left my career in Brazil behind to move to Canada. Today I work in IT, keeping systems and access running smoothly for the people who depend on them.\nThe common thread? I like understanding how things work, bringing order to what\u0026rsquo;s messy, and building things from scratch. That\u0026rsquo;s what you\u0026rsquo;ll find here: AI projects, a legal AI proof of concept, a personal finance spreadsheet, 3D work and photography.\nFeel free to look around. If something here sparks an idea, I\u0026rsquo;m always open to a good conversation.\n","date":"26 October 2026","externalUrl":null,"permalink":"/","section":"Mr. Rizzo · Systems, AI \u0026 3D","summary":"","title":"Mr. Rizzo · Systems, AI \u0026 3D","type":"page"},{"content":"","date":"26 October 2026","externalUrl":null,"permalink":"/tags/ollama/","section":"Tags","summary":"","title":"Ollama","type":"tags"},{"content":"","date":"26 October 2026","externalUrl":null,"permalink":"/projects/","section":"Projects","summary":"","title":"Projects","type":"projects"},{"content":"","date":"26 October 2026","externalUrl":null,"permalink":"/tags/python/","section":"Tags","summary":"","title":"Python","type":"tags"},{"content":"","date":"26 October 2026","externalUrl":null,"permalink":"/tags/rag/","section":"Tags","summary":"","title":"RAG","type":"tags"},{"content":"","date":"26 October 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"Hi! My name is Guilherme Rizzo, a Canadian and Brazilian citizen based in Calgary since September 2021. I work in IT support and systems in a regulated environment, helping users around the world in English and Portuguese.\nMy path hasn\u0026rsquo;t been a straight line, and I like it that way. I started in IT as the only technician for a group of companies in Brasília and left as the coordinator of the IT team and the ERP implementation. I then co-founded, with three partners, an industrial kitchen providing meals for workers; served six years with the Military Police of the Federal District (Brazil), in both patrol and contract management; and worked as a freelance 3D artist for clients in Brazil and Canada. Today I work on an IT service desk for a global pharmaceutical company, focusing on identity and access management.\nWhat ties it all together is a drive to understand how things work: solving problems, organizing processes, and building from scratch. I hold a degree in Physics from the University of Brasília, which may explain my curiosity about the universe and my habit of asking \u0026ldquo;why?\u0026rdquo; until I reach the root cause.\nOutside of work, I explore local AI, 3D modeling, and photography. Some of these experiments are in Projects and Hobbies.\n","externalUrl":null,"permalink":"/about/","section":"Mr. Rizzo · Systems, AI \u0026 3D","summary":"","title":"About me","type":"page"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":" Open to opportunities I enjoy trading ideas with people who also like to get hands-on: AI running locally, homelab, networking and automations that solve everyday problems. If you have a project I could collaborate on, a question about something I\u0026rsquo;ve posted here, or an opportunity that fits my profile, reach out.\nCalgary, Canada · I reply in English or Portuguese\nLinkedIn The fastest way: full background and direct messages. GitHub The projects I publish, including this site\u0026rsquo;s repository. Message Rather not use social networks? Write below. Send a message # Name Email (so I can reply) Message Please complete the captcha before sending.\nSend Your email is only used to reply to this message.\n","externalUrl":null,"permalink":"/contact/","section":"Mr. Rizzo · Systems, AI \u0026 3D","summary":"Let’s talk.","title":"Contact","type":"page"},{"content":"Cycling is one of my great passions. Nothing professional: just grabbing the bike and heading out, letting myself get lost around the city, discovering neighbourhoods and parks. One big perk of living in Calgary is the infrastructure for it: more than 1,000 km of paved pathways, one of the most extensive urban networks in North America, with plenty of nature, huge urban parks and long stretches along the Bow River.\nSo, soon after I arrived, I bought a bike. A used, fairly basic one, but with a few small adjustments and tune-ups it did the job. The first rides came, and with them a real taste for cycling around Calgary.\nMy CCM, bought used: it served its purpose well. Two years later, I decided to upgrade. This time a new bike, with the specs I wanted: lightweight, no suspension (which I was happy to skip, partly to save weight) and hydraulic disc brakes. The Trek Dual Sport 3 matched that combination exactly.\nMy Trek Dual Sport 3 I handle all the maintenance myself: brake and derailleur adjustments, tires, installing accessories and whatever else comes up.\nMy longest ride so far: from Calgary out to Chestermere, a loop around the town and back, about 60 km in total.\nSince then, I try to make the most of the warm months and fit in a ride whenever my busy routine allows.\n","externalUrl":null,"permalink":"/hobbies/cycling/","section":"Hobbies","summary":"Unhurried rides along Calgary’s pathways.","title":"Cycling","type":"hobbies"},{"content":" Service Desk Analyst – Tier II (White Glove, User Access Management) 2025–Present IT service desk for a global pharmaceutical company · Remote Selected through an internal process to join the White Glove team. Support investigators, study coordinators, and clinical research site staff worldwide. Access management with Entra ID and ServiceNow in a regulated (GxP) environment. 1,200+ tickets handled, with QA scores above 90%. Train new team members. Service Desk Analyst – Tier I (Bilingual) 2022–2025 IT service desk for a global pharmaceutical company · Remote 4,000+ tickets resolved and documented. Subject Matter Expert (SME) for clinical research applications. Mentored 10+ new analysts. Recommended knowledge base improvements. Freelance 3D/2D Artist 2020–2024 Self-employed · Brazil and Canada Architectural visualization (archviz), product visualization, and animation. Worked directly with clients, from briefing to delivery. Created a 3D modeling course. Police Officer 2014–2020 PMDF (Military Police of the Federal District, Brazil) · Brasília Patrol duty. Logistics and contracts assistant: deputy contract executor for the battalion's contracts (lease, renovation, and electricity). Built an Excel-based contract tracking system. Co-founder 2012–2013 Cozinha Capitu (meal service for workers) · Brasília Started by delivering daily packed meals to construction workers under a contract with the builder. Expanded to walk-in customers and phone orders, always focused on contracts with employers. Responsible for sales and finance. IT Technician → IT Coordinator 2008–2011 Grupo Santa Helena (security, construction, and land development companies) · Brasília Hired as the sole IT technician and promoted to IT Coordinator. Built and led the IT team (2 technicians and 2 interns). ERP implementation, defining business rules with managers and executives. Windows Server, Active Directory, GPO, SQL Server, Linux firewall, and networking. In-house ticketing system. ","externalUrl":null,"permalink":"/experience/","section":"Mr. Rizzo · Systems, AI \u0026 3D","summary":"","title":"Experience","type":"page"},{"content":"","externalUrl":null,"permalink":"/hobbies/","section":"Hobbies","summary":"","title":"Hobbies","type":"hobbies"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":" Certifications # Microsoft Certified: Azure Fundamentals (AZ-900) – 2025 ServiceNow Certified System Administrator (CSA) – in progress ITSM \u0026amp; Service Desk # ServiceNow · ITIL practices · KCS · SLA management · documentation and knowledge base Identity \u0026amp; Access # Microsoft Entra ID · Active Directory · Group Policy · MFA · User Access Management Infrastructure # Windows Server · SQL Server · networking (LAN/WAN, Wi-Fi, firewall) · Linux (Ubuntu) · Azure fundamentals Regulated Environments # GxP · data integrity · SOPs · clinical research applications (Veeva CTMS, Oracle InForm) AI \u0026amp; Automation # Local LLMs (Ollama, Open WebUI) · RAG (POC with Python) · Git/GitHub · advanced Excel 3D \u0026amp; Visual # Blender (primary) · 3ds Max + Corona · Maya · Unreal Engine · Photoshop Languages # Portuguese (native) · English (full professional proficiency) ","externalUrl":null,"permalink":"/skills/","section":"Mr. Rizzo · Systems, AI \u0026 3D","summary":"","title":"Skills","type":"page"}]