Case study · Stack

How Creditas traded Ruby for Kotlin and moved to Kubernetes on AWS

Creditas offers loans backed by homes, cars and payroll in Brazil. It started on a Ruby monolith, moved new services to Kotlin and Spring Boot, runs them on Kubernetes in AWS, and now uses AI agents for maintenance and design system work.
Copy this stackcreditas.com Secured lending and consumer credit · Brazil · founded 2012

Language

  • Kotlinmedium.com

    Main language for the services pulled out of the Ruby monolith.

    Why: Null safety and data classes removed the need to test a whole class of mistakes.

UI library

  • shadcn/uimedium.com

    Base for the components of the Lemon Pie design system.

    Why: Its CLI generates an accessible component structure with WAI-ARIA out of the box.

Hosting

  • AWSmedium.com

    Cloud where the applications and data platform run.

  • Kubernetes (Amazon EKS)medium.com

    Runs the applications, replacing the older ECS and Terraform deploy model.

    Why: They did not want to spend time running a Kubernetes cluster by hand.

  • Terraformmedium.com

    Manages AWS resources, including the analytics environment, as code.

    Why: The infrastructure had stopped being code and they wanted it back under control.

Database

  • PostgreSQLmedium.com

    Production databases behind the applications.

Styling and UI kit

  • Tailwind CSSmedium.com

    Styles every design system component, together with global CSS variables.

    Why: Changing a variable spreads the brand to every component at once.

  • Style Dictionarymedium.com

    Exports design tokens to CSS, Swift and Kotlin.

    Why: Tokens are defined once and reach web, iOS and Android without manual copying.

Build and runtime

  • GitHub Actionsmedium.com

    Runs the maintenance agent on short-lived jobs.

    Why: It means the agent platform has no server of its own to maintain.

Data fetching

  • Amazon Redshiftmedium.com

    Serves the final analytics tables fed from the S3 data lake.

    Why: It is a database built for complex analysis on the data.

Backend framework

  • Spring Bootmedium.com

    Framework for the Kotlin services, with Spring Data and Spring Security.

  • Rubymedium.com

    Language of the original Hanami monolith and an early Rails microservice.

AI model

  • Amazon Bedrockmedium.com

    Model provider for the O Zelador maintenance agent.

    Why: It was already the model infrastructure Creditas used.

  • OpenHandsmedium.com

    Coding agent that handles maintenance work nobody prioritizes.

Error monitoring

  • New Relicmedium.com

    Application performance monitoring set up for each new app.

  • Datadogmedium.com

    Source of recurring production errors in logs and traces that the AI agent works on.

How they built it

Leaving Ruby for Kotlin

Creditas began with a monolith written in Ruby on the Hanami framework, plus a newer Rails microservice. In 2018 the team asked whether Ruby still fit its problems, because the monolith could not keep up with the pace of change.

After weighing C#, Scala, Java and Kotlin, they extracted a small, well-defined context into a Kotlin service. Null safety and data classes removed a whole class of tests, the same context shrank from 1,174 lines of Ruby to 650 of Kotlin, and they could lean on mature Java libraries and a large pool of Java developers.

Sources:medium.com medium.com medium.com

From ECS to Kubernetes on EKS

Early on, the team bootstrapped servers with Ansible and later picked Amazon ECS, since EKS was still in preview. When the infrastructure stopped being code, they brought in Terraform to manage AWS resources.

The next step was Kubernetes on Amazon EKS, chosen so nobody had to babysit a cluster by hand. An in-house CLI called cliditas, written in Go, hides the manifests from developers, and in 2022 the team tuned cluster-autoscaler after deploys were waiting up to six minutes for new nodes.

Sources:medium.com medium.com

An analytics environment on AWS

Production data lives in PostgreSQL. To analyze it, AWS DMS pulls data into an S3 data lake, AWS Glue processes it and Amazon Redshift serves the final tables, all provisioned with Terraform.

Sources:medium.com

AI agents for chores and design

In 2026 Creditas put an AI agent called O Zelador (the caretaker) on the work nobody prioritizes. It runs OpenHands on GitHub Actions with models from Amazon Bedrock, and picks up signals from Dependabot, SAST and recurring production errors in Datadog.

The new Lemon Pie design system keeps Figma and code in sync with AI agents. Components start from shadcn/ui on top of Tailwind and CSS variables, and Style Dictionary exports the tokens to web, iOS and Android.

Sources:medium.com medium.com

Also detected on their website

Found on the homepage with the open Wappalyzer rules (HTML, scripts and headers). It shows what runs in the browser, not the whole backend.

  • Cloudflare
  • Contentful
  • HSTS
  • HTTP/3
  • jQuery