One of Nubank’s most critical, company-wide projects for 2023-2024 was a migration of their core ETL — an 8 year old, multi-million lines of code monolith — to sub-modules. To handle such a large refactor, their only option was a multi-year effort that distributed repetitive refactoring work across over one thousand of their engineers. With Devin, however, this changed: engineers were able to delegate Devin to handle their migrations and achieve a 12x efficiency improvement in terms of engineering hours saved, and over 20x cost savings. Among others, Data, Collections, and Risk business units verified and completed their migrations in weeks instead of months or years.
Nubank was born into the tradition of centralized ETL FinServ architectures. To date, the monolith architecture had worked well for Nubank — it enabled the developer autonomy and flexibility that carried them through their hypergrowth phases. After 8 years, however, Nubank’s sheer volume of customer growth, as well as geographic and product expansion beyond their original credit card business, led to an entangled, behemoth ETL with countless cross-dependencies and no clear path to continuing to scale.
For Nubankers, business critical data transformations started taking increasingly long to run, with chains of dependencies as deep as 70 and insufficient formal agreements on who was responsible for maintaining what. As the company continued to grow, it became clear that the ETL would be a primary bottleneck to scale.
Nubank concluded that there was an urgent need to split up their monolithic ETL repository, amassing over 6 million lines of code, into smaller, more flexible sub-modules.
Nubank’s code migration was filled with the monotonous, repetitive work that engineers dread. Moving each data class implementation from one architecture to another while tracing imports correctly, performing multiple delicate refactoring steps, and accounting for any number of edge cases was highly tedious, even to do just once or twice. At Nubank’s scale, however, the total migration scope involved more than 1,000 engineers moving ~100,000 data class implementations over an expected timeline of 18 months.
In a world where engineering resources are scarce, such large-scale migrations and modernizations become massively expensive, time-consuming projects that distract from any engineering team’s core mission: building better products for customers. Unfortunately, this is the reality for many of the world’s largest organizations.
At project outset in 2023, Nubank had no choice but to rely on their engineers to perform code changes manually. Migrating one data class was a highly discretionary task, with multiple variations, edge cases, and ad hoc decision-making — far too complex to be scriptable, but high-volume enough to be a significant manual effort.
Within weeks of Devin’s launch, Nubank identified a clear opportunity to accelerate their refactor at a fraction of the engineering hours. Migration or large refactoring tasks are often fantastic projects for Devin: after investing a small, fixed cost to teach Devin how to approach sub-tasks, Devin can go and complete the migration autonomously. A human is kept in the loop just to manage the project and approve Devin’s changes.
A task of this magnitude, with the vast number of variations that it had, was a ripe opportunity for fine-tuning. The Nubank team helped to collect examples of previous migrations their engineers had done manually, some of which were fed to Devin for fine-tuning. The rest were used to create a benchmark evaluation set. Against this evaluation set, we observed a doubling of Devin’s task completion scores after fine-tuning, as well as a 4x improvement in task speed. Roughly 40 minutes per sub-task dropped to 10, which made the whole migration start to look much cheaper and less time-consuming, allowing the company to devote more energy to new business and new value creation instead.
Devin contributed to its own speed improvements by building itself classical tools and scripts it would later use on the most common, mechanical components of the migration. For instance, detecting the country extension of a data class (either ‘br’, ‘co’, or ‘mx’) based on its file path was a few-step process for each sub-task. Devin’s script automatically turned this into a single step executable — improvements from which added up immensely across all tens of thousands of sub-tasks.
There is also a compounding advantage on Devin’s learning. In the first weeks, it was common to see outstanding errors to fix, or small things Devin wasn’t sure how to solve. But as Devin saw more examples and gained familiarity with the task, it started to avoid rabbit holes more often and find faster solutions to previously-seen errors and edge cases. Much like a human engineer, we observed obvious speed and reliability improvements with every day Devin worked on the migration.
“Devin provided an easy way to reduce the number of engineering hours for the migration, in a way that was more stable and less prone to human error. Rather than engineers having to work across several files and complete an entire migration task 100%, they could just review Devin’s changes, make minor adjustments, then merge their PR”
Jose Carlos Castro, Senior Product Manager
Automate Java 8 → 17 migrations across enterprise applications.
Upgrade enterprise applications from legacy .NET versions to .NET 8.
Auto-fix SAST-detected vulnerabilities and code issues from SonarQube, Veracode, and others.
Migrate decades-old COBOL systems into modern, cloud-native services.
Break monolithic ETL pipelines into scalable, event-driven microservices.
Migrate and maintain proprietary or custom systems unsupported by off-the-shelf tools.
Goldman Sachs is piloting its first autonomous coder, Devin.
Citi rolls out Devin to 40,000 developers for autonomous code, testing, and documentation.
Nubank refactors millions of lines of code with Devin to boost engineering efficiency.
Ramp eliminates tens of thousands of hours of technical debt with Devin, freeing engineers to build new products.
Bilt uses Devin to help engineers overcome coder’s block and accelerate complex projects.
Hey Devin,
Please upgrade the BankOfDevin/BankingServer repository from Java 8 to Java 17. Here’s your task breakdown:
Required Changes
Update build.gradle
sourceCompatibility
and targetCompatibility
from ‘8’ to ‘17’<ref_file file="/home/ubuntu/repos/BankOfDevin/BankingServer/build.gradle" />
Update GitHub Actions workflow
.github/workflows/gradle.yml
from ‘8’ to ‘17’<ref_snippet file="/home/ubuntu/repos/BankOfDevin/BankingServer/.github/workflows/gradle.yml" lines="20-24" />
Update README.md
<ref_snippet file="/home/ubuntu/repos/BankOfDevin/BankingServer/README.md" lines="47-47" />
Check for deprecated APIs or language features
Test the application
Implementation Approach
You only need to look in the following repo: BankOfDevin/BankingServer
.
A leading North American bank needed to upgrade Java 8 applications to Java 17 to strengthen security and maintain regulatory compliance.
Migrate dozens of Spring Boot–based services from Java 8 while addressing deprecated APIs and outdated dependencies.
Devin automated build updates, dependency migrations, and CI/CD modernization.
The migration finished in weeks, with tests confirming identical behavior across all services.
Hey Devin,
Please migrate the ASP.NET MVC 5 backend from the COG-GTM/angularjs-asp-net48-mvc5
repository to an ASP.NET Core 8 Web API project. Here’s your task breakdown:
Create a new ASP.NET Core 8 Web API project
Program.cs
and Startup.cs
for configuration.Migrate controllers
LandingController.cs
) into API controllers.Handle configuration files
App_Start/BundleConfig.cs
and App_Start/RouteConfig.cs
with ASP.NET Core equivalents.Update views and static files
Views/Landing/Index.cshtml
).wwwroot
folder.Enable CORS
http://localhost:51267/
.Set up dependency injection
Program.cs
using the DI container.Match frontend expectations
WebApp/app.js
, WebApp/Components/test.component.js
, etc.).angular.module('app', [])
; this should remain unchanged.Deliverables
References
angularjs-asp-net48-mvc5.csproj
, and AngularJS dependencies are in package.json
.COG-GTM/angularjs-asp-net48-mvc5
.A leading digital bank needed to modernize hundreds of .NET repositories to improve performance and reduce maintenance costs.
Upgrade 120 repositories from .NET 3 to .NET 8, originally scoped for two years with five engineers.
Devin automated the upgrades, generating modern projects and parity tests.
The migration finished in two weeks with one engineer.
Hey Devin,
Please connect to the SonarQube API server for the BankOfDevin/BankingServer
repository.
Identify and extract issues for the following critical vulnerability SonarQube tags:
Implement targeted fixes
Validate remediation
Deliverable
You only need to look in the following repo: BankOfDevin/BankingServer
.
Let me know if you need any clarification on the requirements.
A major North American bank needed to clear a backlog of high-severity vulnerabilities flagged by static analysis tools.
Fix critical security issues (e.g., insecure dependencies, hardcoded secrets, complex functions) at scale without slowing feature delivery.
Devin integrated with the security toolchain, ran scans, and applied targeted fixes.
Devin remediated 700+ vulnerabilities during the pilot period alone.
Hey Devin,
Please create a Java implementation of the COBOL control file for investment account balances from the Devin-Bank/Cobol-Investment-App
repository. Here’s your task breakdown:
Create these core Java classes
AccountBalanceRecord
— Java POJO mirroring the COBOL record layout (use exact field sizes/types from the PIC clauses in the source):
accountId
(e.g., 10 chars)asOfDate
(e.g., 8 chars, YYYYMMDD)currency
(3 chars)txnType
(1 char; e.g., D/C)amount
(signed, 2-decimal fixed width; support COMP-3 if present)runningBalance
(signed, 2-decimal fixed width)FixedWidthFileReader
/ FixedWidthFileWriter
— Utilities that reproduce COBOL fixed-width I/O semantics:
BalanceControlProcessor
— Implements the COBOL “control” logic:
accountId
(and asOfDate
if the COBOL does so)Implement the program workflow
INVESTMENT-TXN.DAT
, ACCT-MASTER.DAT
BALANCE-REPORT.TXT
, CONTROL-SUMMARY.TXT
, ERROR-LOG.TXT
ERROR-LOG.TXT
with record image + reason, then continue.Match COBOL’s file handling
Implement verification
Repository scope
Devin-Bank/Cobol-Investment-App
.investment_balance
directory (use it as the source of truth for record definitions, file names, and control logic).Deliverables
Let me know if you need any clarification on the requirements.
One of the largest financial institutions in Latin America, serving 60M+ customers, needed to modernize legacy COBOL systems to meet new regulatory requirements.
Migrate national tax identifier fields (CNPJ) from 10-digit numeric to 14-digit alphanumeric across thousands of COBOL modules.
Devin automatically migrated thousands of files with high accuracy.
COBOL team is now ahead of schedule on the CNPJ migration.
Hey Devin,
Please create a standalone, event-driven microservice that extracts the load_transaction_data
pipeline from the Devin-Bank/ETL
repository. Here’s your task breakdown:
Core Functionality
banking.transactions
and banking.customer_accounts
tables in the olist source database.b_data.transactions
and b_data.customer_account
tables in our data warehouse.Event-Driven Architecture
transaction-data-loaded
events when loads complete successfully.Technical Requirements
b_data
schema before loading data.Migration Considerations
The new microservice should preserve the same data flow and transformation logic as the current ETL, but replace the monolithic pipeline structure with an event-driven architecture.
Deliverable
The original load_transaction_data
pipeline is in the Devin-Bank/ETL
repo. Use this as your reference for exact functionality matching.
Nubank needed to modernize thousands of legacy ETL jobs spanning 500k+ lines of code, which had become costly to run and hard to scale.
Nubank had an ETL migration scoped over 6 months with 50 engineers.
Devin automated the extraction of ETL logic, generated microservices, and validated outputs with regression tests.
With Devin, Nubank achieved the migration in 1/3rd the time for less than 1/10th the cost.