Architecture
Bounded contexts that match how the business actually works, and API contracts that outlive the teams behind them.
- DDD
- Bounded contexts
- API contracts
Software & AI Solutions Architect
The architecture decides whether it survives the second year.
I work where systems stop being simple: scale, unclear design, and models that have to run in production and not only in a notebook.
Available for new projects
Got something
worth building?
Let's build it properly.
Download CVItaly · remote across the EU
Years on production systems
Projects delivered
Companies collaborated with
Patent co-authored
About
I work where the architecture decides the outcome — financial platforms that cannot lose a transaction, medical AI that has to hold up to clinical scrutiny, enterprise software that has to keep running while it changes.
That work starts where things stop being simple: the product that served ten customers and breaks at a hundred, the model that scores well on a held-out set and has never seen a production request.
What I do
Not a service menu. These are the shapes the work actually takes once the problem is on the table.
Bounded contexts that match how the business actually works, and API contracts that outlive the teams behind them.
Custom models, the pipelines that feed them, the serving layer that keeps them answering. The model is the small part.
Containers, CI/CD and observability sized for the team that has to operate them on a Tuesday afternoon.
APIs, backends and the interfaces on top, built as one system — the seams are decisions, not accidents.
Assessment, roadmap, technical due diligence. Often the answer worth most is the one about what not to build.
Profiling, hardening and load work on systems already live, where starting from a blank page is not an option.
How I work
The architecture that carries the first customer should be the one that carries the hundredth.
I start from a small piece that works in production and grow it. Each module is validated under real load before the next is added, and the trade-offs — cost, complexity, what the team can maintain — get said out loud before they are paid for.
The constraints, the systems already running, and what actually breaks — before a single line of design.
One piece, in production, doing real work. Not a prototype and not a proof of concept.
Each module validated under real load before the next is added. Nothing is built on an unproven assumption.
The same architecture carries the hundredth customer. Growth stops meaning rewrite.
For a small team the right answer is often a modular monolith with a single deploy; sometimes it is an event-driven platform on Kubernetes, and sometimes it is a data pipeline with a model at the end. The constraints choose — cost, team size, and what the company already runs.
Clear internal boundaries, one deployable unit, one database to reason about.
Fits when A small team that needs to move fast without paying the operational tax of distribution.
Services split along ownership lines, with contracts that are versioned on purpose.
Fits when Several teams whose release cadences have started to collide.
Systems emit events; reactions are decoupled from the thing that caused them.
Fits when Workflows that span tools nobody wants to couple together.
Ingestion, preprocessing, training and serving, each observable on its own.
Fits when The product is the prediction, and it has to be reproducible.
Selected work
Every project here started as a problem on real work, not as a portfolio exercise.
A .NET modular monolith that lets Italian SMEs make the systems they already own work together, without replacing any of them.
A case that spans several systems. Connectors observe and act, a pure engine decides, and nothing is ever confirmed by an API response.
One backend, a phone app and a desktop app sharing the same data, with device-level authentication and a mortgage simulator that answers the question people actually ask.
The whole operation of a body shop in one system: intake, repairs, parts, insurers, invoicing and payments — replacing a legacy tool and the spreadsheets around it.
Track record
2024 →
Aigon SRL · ex Gate To Brain
2023 →
Independent
2021 →
Tecnos Group SRL
Stack
Not everything I have touched — the things I would be comfortable putting in front of a paying customer on Monday.
Writing
Things I had to figure out on real projects, written down while they were still fresh.
· 5 min read
Microservices, modular monolith, event-driven — none of these is a starting point. The constraints choose, and the constraints are usually cost, team size and what the company already runs.
· 4 min read
A model that only exists in a notebook has not been finished — it has been described. What it takes to close the gap, from someone who works on both sides of it.
Why these projects exist
The reconciliation model went into the platform the operators already used, not into a separate tool nobody would open. A correct answer in the wrong place is not an answer.
Explainability, preprocessing and deployment are the work, not the afterthought. A model that only exists in a notebook has not been finished, it has been described.
They need the systems they already own to talk to each other. That constraint is the whole reason Leaf and Glide exist.
Whether you need an architecture review, a technical partner, or someone to get a model out of a notebook and into production — tell me what is breaking.