close
FLIPPING THROUGH…
VOL. 01 — NO. 09CASALE MONFERRATO, IT · --:--:--
ENIT
↓ CV
AI, CLOUD & SECURITY EDITION

MarcoBellingeri

CLOUD PLATFORM & AI SECURITY ENGINEERSECURITY HEADERSA+verify it yourself ↗

I make the AI you put into production secure, and the cloud it runs on, for teams that already have a live system and cannot afford to stop it.

BOOK 30 MINUTES — FREE, NO COMMITMENT
“We can only see a short distance ahead, but we can see plenty there that needs to be done.”
Alan Turing — Computing Machinery and Intelligence, 1950

← scroll to see all sections →

01

Dossier

Freelance Cloud Platform & AI Security Engineer, based in Casale Monferrato, Italy. I help teams and companies make their cloud infrastructure reliable and secure: automation, pipelines, hardening, internal tooling. I work alongside the client's team, in pair programming rather than black-box handovers, so they stay autonomous. Python is the main tool for automation, internal tooling and application security.

Security is not a final polish: secrets management, automated CI gates and a written threat model are part of the delivery, not of a later engagement. When a model sits in the middle the list gets longer: prompt injection on content coming from outside, AI Act transparency, the software supply chain. What's left at the end of a job is tests that run, documentation that reads, and a team able to work on it without me.

02

Services

Six ways to work together. Below, what each one includes; if your problem fits none of them, write to me anyway.

ORDER FORM — FILL IN & SEND

Not a shopping cart: a starting point. Select what you need, how and for how long: I generate a draft brief you can copy or email me in one click.

01 — WHAT YOU NEED
02 — MODE
03 — ESTIMATED DURATION
DRAFT BRIEF

No published rates: every engagement is sized to the real problem, not to a one-size-fits-all price list. The first conversation is always free and no strings attached. Pair programming, not prompt-and-go.

03

Field Notes

One case at a time from a system running in production: problem, approach, result, lesson learned. No theory, only things that actually happened.

0
CASE STUDY — SEPTEMBER 2026

The TTL index that could never expire anything

PROBLEM

RabbitWatch, my monitoring stack, declares a seven-day retention on metrics: a MongoDB TTL index, created by a dedicated script, that should delete older documents on its own. Reading the code before touching it, that retention could never have worked. The consumer writes the timestamp field as a Unix integer, at line 67 of consumer/metrics_consumer_mongo.py, and the TTL index is created on that same field, at line 23 of consumer/setup_ttl_indexes.py.

APPROACH

The MongoDB documentation is explicit, and I read it instead of inferring it: the indexed field must hold BSON date values, and a document whose field does not hold one will not expire. The field name said the right thing, the type did not. I looked at the two places side by side, where the value is written and where the index is created, because they live in different files and neither looks wrong on its own.

RESULT

The index exists, the TTL thread runs every sixty seconds, reads the field, finds a number and moves on. No error, no exception, no log line: the number of documents that index can expire is zero by construction. The same pass turned up two scripts that disagree on the configuration filename, config_consumer.yaml against consumer_config.yaml, and a repository with no YAML config versioned at all. The project never went to production, so nobody has paid for this yet.

LESSON LEARNED

A guarantee that is declared and never measured stays a hypothesis. This defect makes no noise: there was nothing to notice, no alarm to ignore, only a collection that would have grown forever while the code claimed otherwise. The shape repeats, a parameter name is not its semantics, so the source to read was the vendor's and not the field.

04

Magazine

One real case a month on AI, security and governance at work: the problem, the call made, what changed. A pipeline writes it, checked against the sources. The first one is point zero: ideas get better as you go.

N.03
SEPTEMBER 2026 · insurance

Claims handled without human intervention: the Singapore case

READ
PROBLEM

Claims remain the most manual process in the insurance value chain and the point of greatest friction with customers: too many manual checks before a payout can be made, with long turnaround times and rising operating costs. Against that backdrop, KPMG records a shift from isolated pilot projects to structured transformation across the entire value chain, from underwriting to distribution.

APPROACH

The response is end-to-end automation: systems that assess, decide, and execute with no human involvement in most cases. In Singapore a touchless processing model was applied, in which algorithms analyse the data and documentation of each claim and human intervention is reserved for cases requiring further checks. The system covers the full cycle, from intake to settlement.

RESULT

98% of claims in Singapore are auto-assessed and around 60% are processed and paid within 24 hours with no human intervention at all: the figures come from the KPMG report "AI in Insurance Sector" (Singapore, May 2026). The comparison is with manual processes and sequential checks that in many markets still take days.

LESSON LEARNED

The lesson is that claims automation works when it is designed as a complete process rather than a single isolated feature: the value comes from linking intake, validation, decision, and execution into one automated chain. At the same time, the more autonomy a system gains, the greater the need for traceability and proportional oversight, since customer trust depends on the ability to explain any disputed outcome.

Open the page →
05

Projects

OPEN SOURCE

Three models from three different providers, set up to disagree with each other, because one LLM on its own tends to tell you what you want to hear. They answer separately, rank each other blind, then an outside chairman sums up. I use it before decisions that actually cost something.

PROBLEM

A model’s eagerness to agree is not a prompting problem: it sits in the weights, put there during training. An LLM used for decision support will confirm whatever direction you signal, including the wrong one.

APPROACH

Python standard library only, zero runtime dependencies, and the dev tools pinned by hash rather than by version number: the supply chain is as small as it gets, and verified on every build. Three independent voters through OpenRouter with anonymised answers, blind cross-ranking, and a chairman picked from outside the voter pool so it cannot vote for itself. Anthropic is excluded on principle: whoever runs the council does not sit on it.

RESULT

Public repo under MIT, 100% coverage across three Python versions, plus a weekly mutation run that checks whether those tests can actually fail. A full mapping of the OWASP LLM Top 10 in SECURITY.md, with the out-of-scope items named and justified.

→ APP STORE

Turin, rush hour: where do you leave the car? An API that answers in real time, built security-first as if it had been in production for years: async FastAPI, PostGIS for geospatial, Redis with ETags. Next stop: the App Store.

PROBLEM

Knowing in real time where there's a free spot in Turin meant jumping between different sources, with no single clean, fast API to query.

APPROACH

Security-first API: async FastAPI on Python 3.12, PostgreSQL 16 + PostGIS for geospatial, Redis 7 with compression and conditional ETag requests, HMAC-SHA256 on API keys (zero plaintext), multi-tier sliding-window rate limiting.

RESULT

51 tests across unit, integration and e2e with testcontainers, CI/CD and a threat model documented in SECURITY.md. Next milestone: bringing it to the Apple App Store as a native app.

How much work I actually do with AI, measured instead of claimed. Claude Code ships its telemetry to a hub of my own, five services behind a tunnel, and on this page three real numbers update by themselves.

PROBLEM

AI-assisted work gets discussed in anecdotes. I had no idea how much of it I was doing, with which models, at what cost, and no tool would tell me without shipping my sessions to somebody else.

APPROACH

OpenTelemetry from Claude Code into a Collector that authenticates the ingest and applies an allow-list on labels: anything not declared safe never becomes a metric. Prometheus stores, Grafana displays behind Cloudflare Access, and a status API exposes exactly three aggregate numbers: no free-form queries, no session content.

RESULT

In production on Railway behind a Cloudflare Tunnel, with no service exposed on a public platform domain. The allow-list came from a measurement, not from a reading: my real email address was arriving as a Prometheus label, and the obvious fix silently lost data.

The philosophical experiment of the lot: an Obsidian knowledge graph asking how memory and identity get built over time. Shelved as a product, irreplaceable as a thinking tool, and the RAG-powered SaaS idea is still on the table.

PROBLEM

Scattered notes didn't talk to each other: ideas, readings and projects ended up isolated instead of connected.

APPROACH

A personal knowledge graph on Obsidian, meant not just as an archive but as an open question about how memory and identity are built over time.

RESULT

Deprioritised as a product against whatever was actually shipping, but it remains the thinking tool I use most, and the idea of a SaaS version with RAG is still on the table.

06

Career

2026 — presentVETRERIA MONFERRINA · REMOTE

Full Stack & AI Engineer

A production site (Astro + Sanity) and an AI agent for SEO/AEO with RAG on Supabase and AI Act governance.

AstroSupabase + pgvectorAI Act
2025 — 2026FAIRFIELD S.p.A. — Figline e Incisa Valdarno (FI), Remote

Full Stack Engineer

Full-stack work on an enterprise debt-collection platform: a Python back-end (Clean/DDD) on AWS serverless and a multi-role React/TypeScript SPA.

REDIS REFACTORAWSReact / TS
2025GECO S.R.L. · GALLIATE (NO)

Software Engineer

Software for critical infrastructure: 24/7 video supervision for Rome Metro Line C and enterprise network diagnostics for Etihad Airways (Scapy).

PythonScapy
07

Stack

Python & Backend

Home turf: back-ends and APIs built on Clean Architecture and DDD (FastAPI, Flask, Falcon). Frontend: Astro and Vite, this site included; React and TypeScript when a SPA is called for.

Security

OWASP hardening, PII encryption (AES-256), threat modeling and a written audit in the repo; CI security gates: Bandit, CodeQL, Gitleaks.

AI Security

OWASP LLM Top 10 on a RAG that runs in production: prompt injection defence on content coming from outside, LLM-as-a-judge as a CI gate, EU AI Act transparency (art. 50), MITRE ATLAS as the threat map.

AI & Agents

RAG with citations (Voyage embeddings), guardrails and human review inside the flow, evals: on Claude API and the Model Context Protocol (MCP).

Supply Chain

CycloneDX SBOM and signed provenance attestation (keyless OIDC) on every deploy, dependencies pinned by SHA, zizmor on the workflows, gitleaks across the whole history.

Cloud & IaC

AWS (Lambda, SQS, S3, IAM, VPC), Kubernetes / K3s, Terraform, Cloudflare Tunnel.

Database

PostgreSQL + PostGIS, Redis, MongoDB, SQLite FTS5, for geospatial work and high-performance caching.

Deploy & Observability

Docker and K3s, CI/CD on GitHub Actions; Sentry, Langfuse, Prometheus and Grafana.

08

Security

This page audits itself. The table below is not a claim. It is read live from the response headers your browser just received.

$ security headers served by this page

SOURCE: HEAD SELF · LIVE

reading response headers…

Headers are applied at the edge (Cloudflare) and read live from this page’s response, so locally they may show as missing.

The terminal on this page prints text written by a model. Keeping that text from becoming code is not a matter of trusting the model: the page has to refuse to run anything inline. Those last two rows are that refusal, read from the policy your browser just enforced.

Radarsecurity world events — who attacks, who responds, who writes the rules
09

Booking

Thirty minutes, free, no commitment. Time zone handled automatically, email confirmation, without messages back and forth to find a time. If we then work together, the first day is on me unless it convinces you.

CAL.EU — LOADED ON REQUEST

The calendar is served by Cal.eu, a third party. Nothing is loaded, and nothing leaves your browser, until you click.

guest@bellingeri:~$
↑↓ NAVIGATE · ENTER OPENESC CLOSE