Matteo Cattapan

Las Palmas de Gran Canaria

AI consultant and .NET developer.

Thirteen years of .NET consulting, remote.

I build software, websites and APIs, and help bring AI into the way people work.

Get in touch

About

012011 · Radio Padova → 2C Solution

From the radio desk to code.

In 2011 I was a director at Radio Padova. I wanted to explore, and while looking around I met the person who brought me into 2C Solution, my mentor's company. Everything was going digital and there was no software to sort out the pile of documents companies were drowning in: he found the funding and threw himself at it.

He was a tough, demanding boss, the kind who has already built your idea before you manage to think it. In that team I learned what school doesn't teach. It's why I don't think like a textbook engineer, and I'm keeping it that way.

022021 · Las Palmas de Gran Canaria

Somewhere warm and quiet to work from.

In 2021, in the middle of covid, we moved to the Canary Islands, the whole family. My wife and I decided it together: we wanted a warm, quiet place to work remotely and be with the girls.

What made it possible was my mentor, who gave me the chance to work remotely on a brand-new project.

03.NET

Not nostalgia. Range.

With .NET you can build anything: sites, APIs, apps, games, AWS lambdas, console tools, Windows services. And .NET Core runs on Linux too. It's the stack I know inside out because it's huge, not because it's the only one I know.

I also explore Node, Flutter, Vue, Angular, Java, SQL, Python. Explorations, though: I use them and study them, but I don't call them solid knowledge. I'd rather say it first than have you find out.

04AI

A tsunami, and then you swim.

AI hit my freelance life like a tsunami: it opened an immensity of opportunities and shook foundations I thought were solid. From there I started to diversify, and with a developer's grounding, following the current wasn't hard.

I still study and keep up today, in the evenings, once the girls are asleep.

How I work

Remote, non-negotiable. Everything else, gladly discussed.

I can't go back to not working remotely: being there for my family is a gift I give up with great difficulty. I work best with organised companies, with a clear org chart and clear processes. And if someone tells me «tomorrow you're on R&D», I say yes before they finish the sentence.

A day

Up at seven. Breakfast with the hungry beasts, tears and complaints about everything, car to school, back around half past eight. Coffee, mandatory. Work until five or six. My wife is my backbone: she takes the girls to the pool or the park, and I get to stay on the code. Dinner as a family, girls to bed, and then study and research until midnight. Then I stop, or I'd die. But it's what I love.

What makes me say yes

Remote
Non-negotiable. It's what lets me live with my family.
R&D
An immediate yes.
Structured companies
Organised, with clear roles and clear processes. That's where I do my best work.

Thirteen years

of .NET consulting, since 2012

In service

at a public body, every working day

1,553 issues

closed on GeDASI / PEM, across GitHub and Jira, since 2021

I know nothing for certain, and neither does anyone. You study, you learn, and above all you build, you create.

Outside work

Guitar, chess, a voice in training.

Guitar

I play, and I write my own pieces.

Online chess

I'm terrible at it, but it's the most beautiful and the hardest game there is, both at once.

Singing

One lesson a week, on Chris Liepe's online course.

Clash Royale

Yes, that one.

A book

I'm writing a manual on moving from WinForms to WebView2. It's being written, and that's all I'll say until it's done.

Music and AI

Two names, my lyrics, Suno's music.

I have two music projects, Glass Howl and Aira Kei. The lyrics are mine; the music is made with Suno, and I'd rather say it plainly. It was a fascinating pastime, but music versus AI is a far more open fight than developers versus AI, and I didn't want to spend more time on it. It left me one thing: the urge to sing. Hence the lessons.

Work

What I've built, by category.

I work on the Regional Council of Lombardy's systems and keep them in service: the copyright is the Council's.

Web

Regional Council of Lombardy

GeCo

Registry of councillors and cabinet members, institutional posts, attendance at sittings, with the deduction engine that cross-checks overlapping sittings and justifications.

Stack
ASP.NET · SQL Server
Licence
AGPL-3.0

Regional Council of Lombardy

GEA

The life cycle of the Council's acts: bills, administrative act proposals, opinions, reports, petitions, referendums. Open data publishing.

Stack
Java JSF · PrimeFaces · Alfresco Community 7.4

Namirial internal product

Tracing.Dashboard

Internal library that collects an application's metrics and shows them on a dashboard.

Stack
.NET

Mine, personal use

fatture-mie

Local invoicing portal for a self-employed autónomo: issuing, register, costs, dashboard, PDF.

Stack
Node · Express · SQLite

WinForms

Apps and mobile

Namirial internal product

Electronic invoices app

An app for the electronic invoice archive.

Stack
Flutter

Unity

Mine

dungeon-survival

A game. 254 commits between February and May 2026.

Stack
Unity · C#

Tools

Screens

The screens, one project at a time.

Each row drags sideways, with the mouse or a finger. The arrows do the same.

Regional Council of Lombardy

GeDASI / PEM

Browse all 5 screens
PEM: the amendments filed on a bill
PEM: the amendments filed on a bill
PEM: filing an amendment with PIN confirmation
PEM: filing an amendment with PIN confirmation
PEM: signing an amendment
PEM: signing an amendment
DASI: overview of the acts of direction and oversight
DASI: overview of the acts of direction and oversight
DASI: configuring a report
DASI: configuring a report

Mine

Campanello

Browse all 3 screens
Campanello: the report window with the screenshot preview
Campanello: the report window with the screenshot preview
Campanello: report filled in and sent
Campanello: report filled in and sent
Campanello: the issue opened on GitHub
Campanello: the issue opened on GitHub

Mine

Nublo

Browse all 4 screens
Nublo: what's on in Gran Canaria, with filters
Nublo: what's on in Gran Canaria, with filters
Nublo: an event page
Nublo: an event page
Nublo: the conditional presale, it happens only if ten tickets are sold
Nublo: the conditional presale, it happens only if ten tickets are sold
Nublo: putting an event together with suppliers and seeing if the numbers hold
Nublo: putting an event together with suppliers and seeing if the numbers hold

Mine, personal use

fatture-mie

Browse all 2 screens
fatture-mie: the timesheet, hours per client and month
fatture-mie: the timesheet, hours per client and month
fatture-mie: monthly trend and summaries (sample data)
fatture-mie: monthly trend and summaries (sample data)

Mine

Convivio

Browse all 4 screens
Convivio: the negotiations, from the first call to the balance
Convivio: the negotiations, from the first call to the balance
Convivio: a wedding record, with its milestones
Convivio: a wedding record, with its milestones
Convivio: catalogue and price lists, with the published version
Convivio: catalogue and price lists, with the published version
Convivio: the quote as the couple sees it
Convivio: the quote as the couple sees it

Mine

Rompi Bae

Browse all 2 screens
Rompi Bae: the table, mid-game against the bot
Rompi Bae: the table, mid-game against the bot
Rompi Bae: the menu, against the bot, two players or online
Rompi Bae: the menu, against the bot, two players or online

Namirial internal product

KonservaAI

Browse all 4 screens
KonservaAI: dashboard with profiles and engine status
KonservaAI: dashboard with profiles and engine status
KonservaAI: package recognition and document detail
KonservaAI: package recognition and document detail
KonservaAI: building the submission package, index mapping
KonservaAI: building the submission package, index mapping
KonservaAI: S3 batch console with the processing flow
KonservaAI: S3 batch console with the processing flow

Mine

dima

Browse all 4 screens
dima: the job dashboard for the technical office
dima: the job dashboard for the technical office
dima: a step is written in the portal and previewed as it will look on the tablet
dima: a step is written in the portal and previewed as it will look on the tablet
dima: the tablet at the workstation, one step at a time
dima: the tablet at the workstation, one step at a time
dima: the job queue at the workstation
dima: the job queue at the workstation

Mine

whisper

Browse all 4 screens
whisper: a meeting summary, with decisions and to-dos
whisper: a meeting summary, with decisions and to-dos
whisper: the transcript, with speakers and timestamps
whisper: the transcript, with speakers and timestamps
whisper: model and pauses, all local
whisper: model and pauses, all local
whisper: a dictation; the text is blurred because it is the manual, still being written
whisper: a dictation; the text is blurred because it is the manual, still being written

Before

Earlier clients: TeamSystem, Gruppo CPE, 221e, A.T.E.R.

Contact

Where do we start?

Two lines are enough. I reply from Las Palmas, on Canary Islands time.

The form is off in this version: to write to me, use the one on the site.