Skip to content

Vinicius C. Amorim

Data & AI Engineer @ educbank

I build the data platforms a business relies on to make decisions: from ingestion to the Gold layer, with schema contracts between layers and a quarantine that stops bad data before it reaches a dashboard. Databricks, PySpark and Unity Catalog, on Azure and GCP.

Projects Get in touch LinkedIn Download CV

5years in data
150+Gold layer tables
2clouds in production
11Moonlight theme ports

What I build

Medallion platform

BronzeSilverGold

I design and run educbank's data platform on Databricks and Unity Catalog. More than 150 Gold tables, processed in PySpark and orchestrated with Lakeflow, feed the dashboards and the decisions behind them.

Azure + GCP

Medallion with Unity Catalog on Azure, s0 to s3 layers on GCP. Same principle, two implementations.

CI/CD

Multi-environment Databricks Asset Bundles and GitHub Actions. When a contract breaks, the deploy does not ship.

AI in the loop

Claude Code for boilerplate and review, with the process written up on the blog.

Open source

A VS Code theme on the marketplace, an Oh My Posh theme and a Python template with uv and ruff.

How I work

The same rules apply to pipelines, to code and to how I work with AI.

01

Proof, not promises

"Done" is a check that passed, with the evidence next to it. If it can be measured, I measure before I claim.

done = gates met + evidence

02

Cause before fix

I start from the raw error, not a hunch. Every hypothesis is confirmed or killed with evidence before any fix.

hypothesis → CONFIRMED | KILLED

03

The smallest change that works

I touch only what the problem asks for. No speculative abstractions, no refactoring what is not broken.

every changed line → the request

04

Contracts between layers

Every layer declares the schema it delivers. When a contract breaks, the CI gate blocks the deploy.

schema break → deploy blocked

05

Quarantine, not delete

Duplicates, invalid rows and test data go to quarantine: out of the Gold layer, still visible to investigate.

bad rows → quarantine, not /dev/null

06

Every mistake becomes a rule

Every correction turns into a written rule, and decisions and investigations get documented. The same mistake does not come back.

correction → written rule

I would rather stop a bad record in quarantine than find the problem after it has already become a wrong decision.

Recent writing

Articles on data engineering, AI tooling and design.

Stack

Languages
PythonSQLPySpark
Platform
DatabricksUnity CatalogLakeflowAirflow
Cloud
AzureGCP
Delivery
CI/CDDatabricks Asset BundlesGitHub Actions
Quality
Data Quality

Education and languages

Education

BSc in Computer Science, Universidade Paulista

Languages

Native Portuguese, fluent English, basic Japanese

Based in

São José dos Campos, Brazil. Remote and hybrid

Career timeline