Azure & AI developer · Treviso, Italy

GianlucaFlorian

I build AI agents that work with real systems. From the factory floor to the cloud.

Visitor asks: Summarize this site in 3 lines.

  • I’m Gianluca, an Azure & AI developer in Treviso. I build AI agents that work with real systems.
  • I started on the factory floor: six years of SCADA, MES and warehouses, then cloud and AI.
  • Off the clock: a home lab and open-source tools.
See the agents

I build Azure solutions, connect systems and turn AI into working software. At home, I run a small data centre.

Download CV (PDF) ↓

01Applied AI, my role today

AI that does the work

I build agents and AI pipelines on Azure that read documents, call real systems and hand a clean, checked result to a person. Not demos. Software in production.

  1. 01

    Agents with tools

    Agents that call typed C# functions against ServiceNow, ERPs and internal APIs, instead of guessing.

  2. 02

    Documents into data

    OCR, layout and vision models turn invoices, forms and scans into structured fields.

  3. 03

    Typed, validated output

    JSON schemas, confidence scores and deterministic guardrails after every model call.

  4. 04

    A human signs off

    People approve the final step. Every decision is logged with its reason.

How I build agents

Anatomy of an agent, on Microsoft Agent Framework

One loop, five moves. The model decides, the tools act, the thread remembers, the schema keeps the output honest.

RdaAgent.csSimplified
// Microsoft Agent Framework + Microsoft.Extensions.AI
var agent = chatClient.CreateAIAgent(
    name: "rda-assistant",
    instructions: prompts.PurchaseRequest,
    tools: [
        AIFunctionFactory.Create(snow.SearchSupplier),
        AIFunctionFactory.Create(snow.GetBudget),
        AIFunctionFactory.Create(snow.CreateDraft),
    ]);

var thread = agent.GetNewThread();
var reply = await agent.RunAsync(message, thread);

Banking group · Purchase requests

A chatbot that fills the purchase request while you talk

Employees say what they need. An orchestrator agent keeps the conversation and the draft, and hands each job to a specialist: a lines agent reads the offer and splits it into rows, with its own classifier for CAPEX or OPEX, and a ServiceNow agent fills supplier, area, project and budget through typed lookups. Every value is a valid one. Nothing is submitted without a yes.

Agent Framework · multi-agent, agents as tools · Azure OpenAI · function calling · adaptive cards · ServiceNow REST · .NET

RDA assistantFictional data

The conversation plays here.

Purchase requestEmpty
Operation
—
Requester area
—
Previous order
—
Supplier
—
Offer
—
Expense type
—
Project
—
Cost centre
—
Budget available
—
Line amount
—

Banking group · Invoice reconciliation

Every invoice line, matched to its purchase order with a score

Scanned or digital, each supplier invoice is read, its order numbers found, and every line paired with open PO lines in the ERP. The model explains each match; code decides what is safe to propose.

Semantic Kernel agents · Document Intelligence · structured output · Azure Functions · Business Central

INVOICE LINESOPEN PO LINES #1 Cloud platform, monthly1,650.00 EUR #2 Support box, monthly300.00 EUR #3 Setup fee120.00 EUR PO-1238 / 10 Cloud services1,650.00 left PO-1402 / 20 Support302.44 left 95 60 0 No PO referenceamount forced to 0 Fictional values. Guardrails run in code after the model.

Veritas · Citizen request profiling

Emails sorted, attachments read, fields extracted

A utility receives citizen emails with forms and scans attached. The system decides what each request is, reads every page with a vision model and writes the extracted fields back to the protocol system. Business users define request types and fields in an admin app, not in code.

GPT vision · Semantic Kernel · Durable Functions · Azure SQL · React admin

Utility · Mailbox form capture

From a shared mailbox to reviewed data

A timer reads new mail through Microsoft Graph, tags its progress and splits attachments into single and multi-page forms. Custom OCR models and an LLM fill the fields; an operator saves or discards each form.

Microsoft Graph · Document Intelligence custom models · LLM prompts · React review UI

Premium car dealer · Promotion matching

The right promotion for each customer, ranked and explained

Carmakers send campaign documents full of tables and conditions. The system turns them into structured criteria, then scores every customer against every active promotion: current car, mileage, age, financing, workshop visits, recent quotes. It works both ways: the best customers for a promotion, or the best promotions for a customer at the desk.

Azure OpenAI · Document Intelligence · structured output · Durable Functions · SQL Server · React

CUSTOMERACTIVE PROMOTIONS SUV, diesel, 6 years118,000 kmLease ends in 4 months2 workshop visits / 6 mo1 quote in 90 days Electric SUV trade-inlease ending bonus Service plan renewalfrequent visits City car offerclass does not fit 0.87 0.62 0.21 Fictional customer. Under 0.30 the promotion is not proposed.

Try it

Document workbench

The same four stages, on fictional documents, running in your browser.

Input, extract, check, route

Deterministic demo / no model calls
Fictional example

Sample invoice

A fictional invoice is loaded when JavaScript is enabled.

Input

Choose a stage to see how information moves through the workflow.

Sample data only. This illustrates a workflow, not live AI inference.

Also shipped

For a financial group, a GPT-4 chatbot that helps employees find answers in company documents. Plus a shared AI gateway library on Agent Framework, reused across projects.

Frameworks
Microsoft Agent Framework, Semantic Kernel, Microsoft.Extensions.AI, Prompty
Models
Azure OpenAI GPT-4 and GPT-5, vision, embeddings
Azure
AI Foundry, Document Intelligence, Functions, Durable Functions, Storage queues, Service Bus, App Insights
Patterns
Function calling, structured output, multi-agent orchestration, multimodal extraction, human in the loop, evaluation sets

02Experience

The path so far

From a school lab in Treviso to cloud and applied AI. Keep scrolling to travel through it.

  1. 2014 – 2017

    First code

    Computer science diploma at ITIS Max Planck, Treviso. A summer at Simon Fraser University, Vancouver.

  2. 2017

    Warehouse software

    Körber. MES and intralogistics for tobacco plants, in C#, SQL Server and Reporting Services.

  3. 2019

    Automation

    HMI and SCADA for operators with WinCC, TIA Portal, AVEVA and Zenon. Industrial printers too.

  4. 2022

    Microservices

    Körber R&D. OEE monitoring on ASP.NET Core, Angular, RabbitMQ and Kubernetes.

  5. 2023

    Cloud

    Altitudo. Azure Functions, Logic Apps, Service Bus and cloud-to-on-premises integration.

  6. Now

    Applied AI + home lab

    LLM applications with Semantic Kernel and OpenAI by day. Servers and containers at home by night.

03Playground

Run my world

One connected journey, from industrial IT to cloud & AI. Four small systems you can operate.

Local simulations inspired by my experience. No real machinery, cluster, cloud service or AI model is connected.

Industrial IT

Software engineer, Körber

November 2017 – January 2019

Management software for tobacco plants. Built with C#, SQL Server and Reporting Services, including MES work for a global tobacco manufacturer across warehouse operations and intralogistics.

C# / SQL Server / Reporting Services / MES

Eight pallets, twelve bays. Euro pallets take one bay; wide loads span two neighbouring bays and split their weight. Never exceed a beam's limit, and keep the weight low: stability is scored against the best possible layout.

Balance the warehouse

0 / 8 pallets stored
Mission: store all 8 pallets safely
Stored load0 kg
Selected palletSelect a load
Stability—
Load plan0 / 8
High rack3 levels / 4 bays
400 kg600 kg400 kg600 kg800 kg1000 kg800 kg1000 kg1200 kg1500 kg1200 kg1500 kg
Light loads aboveHeavy loads below
Loading dockEuro pallet: 1 bayWide load: 2 neighbouring bays, weight split in half

Loading game. If this message stays, reload the page and check that both JavaScript files are available.

Automation

Software engineer, Körber

January 2019 – August 2022

HMI and SCADA interfaces for operators, monitoring applications and industrial printer software. Work for international tobacco manufacturers and a regional water utility.

WinCC / TIA Portal / AVEVA / Zenon / .NET / JavaScript

Start the line. Every carton that breaks the sensor beam triggers the Zebra: a real Code 128 label is printed and applied before outfeed. Hit emergency stop and both line and printer halt until the interlock is reset.

Pack & label the shipment

Stopped
InfeedSensor → Zebra print & applyOutfeed
Pack & label a batch of 50
1x

The line is stopped. Start production when ready.

Each carton gets batch-01 … batch-05. Printable ASCII, generated in this browser only.

Shipment / Gianluca Florian

Waiting for cartonLabels print when a carton hits the sensor
Shipping manifestCode 128 B
    Labels appear here as cartons pass.

    Microservices

    Software engineer, Körber R&D

    August 2022 – October 2023

    Production monitoring and OEE software for tissue paper and tobacco plants. ASP.NET Core microservices, Angular interfaces and a cloud deployment stack.

    PostgreSQL / Redis / InfluxDB / Grafana / RabbitMQ / Keycloak / Kubernetes / Terraform / ArgoCD

    Scale the deployment. Terminate a pod and watch the controller reconcile the actual state with the desired state.

    Keep the cluster alive

    3 / 3 pods ready
    3
    Deployment controller0 recoveries

    Select a pod to simulate a failure.

    Cloud & AI

    Azure / AI developer, Altitudo

    October 2023 – present

    Azure cloud applications, serverless solutions and cloud-to-on-premises integration. CI/CD with Azure DevOps, applied AI for documents and workflows, and LLM-powered applications.

    Azure Functions / Logic Apps / Service Bus / App Service / Semantic Kernel / Agent Framework / OpenAI

    Send a request. Pause the worker and let messages queue up. Resume it to see the backlog processed in order.

    Deliver the messages

    Worker online
    Service Bus0 queued
    Queue empty
    Azure FunctionWaiting for a message
    API response0 completedNo response yet

    Send a request to begin. No Azure subscription needed.

    Built on real operations

    I started where software has to work beyond the screen: on the factory floor.

    That experience shaped how I approach cloud and AI today. Understand the process, connect the right systems, and build software people can actually use.

    My core tools are C# and ASP.NET Core, SQL and Azure. My work also spans JavaScript, Python, Kubernetes, CI/CD and LLM integration.

    Years shipping software
    9
    Microsoft certifications
    6
    Industries, from tobacco to banking
    10+
    Map of Treviso’s walled centre: the Sile river and the canals around the city walls, with Piazza dei Signori marked
    Treviso, Italy. Where the journey started. Map data © OpenStreetMap contributors.

    04More work

    Selected work

    Before and beside the AI work.
    Different domains. Connected systems.

    TimesheetsInternal platform + own product

    Hours in, invoices out

    For a consulting group, an internal platform where consultants log hours against job orders, managers close and approve the month, and billing proposals are handed to SAP.

    EHorarium, my own take for small companies: daily attendance and hours split by job and activity, approved timesheets, filterable reports with Excel export and a controlled import from the old spreadsheets.

    ASP.NET Core, React + TypeScript, SQL Server, PostgreSQL, SAP integration, Azure Functions, Docker

    Timesheet MTWTF Invoice To SAP
    Hours logged by day, months closed, invoices out.

    Footwear retailerSystem integration

    Connecting commerce

    Middleware connecting PrestaShop, OneStock and warehouse systems, bringing eCommerce and operational processes together.

    Middleware, eCommerce, warehouse integration

    PrestaShop MW Warehouse OneStock
    Shop, order hub and warehouse, kept in sync by one middleware.

    Shipping lineEvent-driven software

    From queue to API

    A shipping volume and cost calculator: consume messages, calculate values, persist results to a database and expose them through APIs.

    Message queues, databases, APIs

    Queue Calc DB { } API
    Messages queue up, get calculated, stored and served through an API.

    Selected projects contributed to at Altitudo, plus EHorarium, built on my own. Clients are not named. Descriptions reflect my CV; no client data or internal interfaces are shown.

    Original illustrations, no client interfaces

    05Open source

    Built outside the brief

    My public projects as WOOKAPPA.
    Learning, tools and a little card collecting.

    AILab

    A practical AI/ML learning project covering production-grade Python, machine learning, computer vision, LLMs, RAG, agents, MCP and LLMOps.

    Read the course

    CardTrader Manager

    Card pricing automation driven by market data and configurable strategies. Includes a web application and a service that can run as a console application or Azure Function.

    Pricing rules, market analysis, Docker, Azure Functions

    CardTrader API Client

    A .NET API client library using HttpClient, request serialization and dependency injection to simplify CardTrader integrations.

    C#, .NET, HttpClient, dependency injection

    MTG binder tools

    Python tools for downloading card images from Scryfall and generating an HTML binder with image previews, pagination and navigation.

    Python, Scryfall API, HTML

    Gianluca, Cloud Archmage
    Legendary Creature — Human Wizard

    Deploy — Whenever a pipeline you control turns green, scry 2.

    Tap: Create a 1/1 blue Agent artifact creature token with “This creature can call tools.”

    “It worked on my machine. So I put my machine in the cloud.”

    001/001 M · WKP ◆ ENIllus. Wookappa
    3/4
    Unofficial fan-made card. Magic: The Gathering is a trademark of Wizards of the Coast; this site is not affiliated with it.
    Explore WOOKAPPA on GitHub ↗

    06Home lab

    The lab at home

    Where I break things on purpose. A hypervisor for services that never sleep, a RAID 5 NAS, a small box for network services and a GPU machine that wakes up when local AI is needed.

    edge-01gateway · wi-fi sw-core2.5 GbE pve-01proxmox ve nas-01raid 5 net-01debian · headless ai-01gpu · ollamaon demand
    Tap a unit to inspect it. The workstation and laptops live on the desk.

    Hypervisor

    pve-01

    Proxmox VE, running the services that stay on 24/7.

    • Proxmox VE
    gianluca@homelab: ~

    Enable JavaScript to use this terminal.

    How it talks

    One LAN, six machines, every path explained

    CPU18%
    Memory21 GB
    Temp44°C
    Power62 W

    Simulated values, generated in your browser.

    • Home Assistant OSSonoff, sensors, irrigation
    • JellyfinFilms, series and music from the NAS
    • Paperless-ngx + AIScanned documents, searchable
    • n8nAutomations and glue
    • Ollama + Open WebUILocal LLMs on the GPU box
    • Pi-holeDNS and ad blocking
    • NetBirdPrivate remote access
    • PostgreSQL + RedisFor my .NET apps

    Next

    OPNsense and a managed switch, then VLANs

    One flat LAN today. The plan is to split it once a firewall and a managed switch arrive.

    • LANWorkstation, laptops, phones
    • Serverpve-01, nas-01, net-01, ai-01
    • IoTSonoff, smart devices, Home Assistant rules
    • DMZAnything published to the internet
    • GuestVisitors and untrusted devices

    07Certifications

    Technical foundations

    Microsoft certifications listed in my CV.
    Cloud, development, AI and delivery.

    Microsoft certifications listed in the April 2026 CV. Current credential status has not been independently verified.
    CertificationMicrosoft credentialFocus
    AZ-900Azure FundamentalsCloud
    AZ-204Azure Developer AssociateDevelopment
    AI-900Azure AI FundamentalsAI
    AI-102Azure AI Engineer AssociateApplied AI
    AZ-400DevOps Engineer ExpertDelivery
    DP-100Designing and Implementing a Data Science Solution on AzureData science

    Education

    Computer science diploma, ITIS Max Planck, Treviso.
    September 2014 – June 2017.

    English summer study trip, Simon Fraser University, Vancouver.
    June – August 2014.

    08Contact

    Let's build something useful

    For software engineering opportunities,
    cloud projects and applied AI.

    Visitor asks: Write an email to Gianluca about my project.

    send_email(to: "Gianluca", subject: "Let's build something useful")

    Human approval required. That's you: click the address below to send.

    Gianluca Florian
    Treviso, Italy

    AI can make mistakes. So do I, but I fix them in production.
    Kidding. In staging.

    Download CV (PDF) ↓ Back to top ↑