# Vinted

The Engineering Blog from Vinted. These are the voyages of code tailors that help create Vinted.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How Vinted Serves Personalised Search Autocomplete

DevFeed: [How Vinted Serves Personalised Search Autocomplete](<https://devfeed.tech/articles/how-vinted-serves-personalised-search-autocomplete-20447.md>)

Original publisher: [Read original article](<https://vinted.engineering//2026/04/22/personalized-search-autocomplete/>)

Author: Justina Bartulevičienė

Published: 2026-04-22T00:00:00Z

Content type: article

Language: en

Sources: [Vinted](<https://devfeed.tech/sources/vinted.md>)

Topics: [recommendation systems](<https://devfeed.tech/topics/recommendation-systems.md>), [data](<https://devfeed.tech/topics/data.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Learning](<https://devfeed.tech/topics/learning.md>)

Tags: [autocomplete](<https://devfeed.tech/tags/autocomplete.md>), [model](<https://devfeed.tech/tags/model.md>), [offline](<https://devfeed.tech/tags/offline.md>), [performance](<https://devfeed.tech/tags/performance.md>), [personalisation](<https://devfeed.tech/tags/personalisation.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [search](<https://devfeed.tech/tags/search.md>)

### AI overview

Vinted describes the architecture and operation of its personalized search autocomplete service. The system generates candidate queries from product metadata and search logs, indexes and matches them with typo tolerance, and ranks suggestions using personalization and a Learning-to-Rank model. The service supports 24 languages and more than 50 country-language combinations, with 125 million queries and reported throughput of 4,700 queries per second at 31 ms P99.

### Source excerpt

At Vinted, more than 20% of all search sessions now start with a click on an autocomplete suggestion. A few years ago, that number was below 8%. Autocomplete not only saves typing effort - it helps people discover listings they didn't know existed, and guides them toward successful searches. Today, across 24 languages and 50+ country-language combinations, we have a pool of 125 million different queries ready to suggest to users. Our service, svc-suggestions, runs on Vespa and matches and ranks 4,700 queries per second at 31 ms P99.

## Risk-Based Data Quality Testing for Reliable Finance Pipelines

DevFeed: [Risk-Based Data Quality Testing for Reliable Finance Pipelines](<https://devfeed.tech/articles/test-smarter-not-harder-risk-based-data-quality-without-pipeline-paralysis-20446.md>)

Original publisher: [Read original article](<https://vinted.engineering//2026/03/11/risk-based-testing/>)

Author: Jeremy Chia

Published: 2026-03-11T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vinted](<https://devfeed.tech/sources/vinted.md>)

Topics: [Data Quality](<https://devfeed.tech/topics/data-quality.md>), [DataOps](<https://devfeed.tech/topics/dataops.md>), [Finance](<https://devfeed.tech/topics/finance.md>), [Testing](<https://devfeed.tech/topics/testing.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [data-quality](<https://devfeed.tech/tags/data-quality.md>), [finance](<https://devfeed.tech/tags/finance.md>), [migration](<https://devfeed.tech/tags/migration.md>), [parquet](<https://devfeed.tech/tags/parquet.md>), [pipeline](<https://devfeed.tech/tags/pipeline.md>), [pipelines](<https://devfeed.tech/tags/pipelines.md>), [quality](<https://devfeed.tech/tags/quality.md>), [reporting](<https://devfeed.tech/tags/reporting.md>), [schema](<https://devfeed.tech/tags/schema.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

This article explains how Vinted addressed frequent upstream schema and format changes affecting finance reporting pipelines. It describes shifting testing closer to the source, applying materiality-based checks, and balancing data quality with pipeline reliability and timely availability.

### Source excerpt

Upstream schema changes were breaking our finance pipelines daily. With monthly reporting deadlines looming, we needed to balance data quality with pipeline reliability. Here's how we solved it without compromising either.

## From Dagger to Metro

DevFeed: [From Dagger to Metro](<https://devfeed.tech/articles/from-dagger-to-metro-20445.md>)

Original publisher: [Read original article](<https://vinted.engineering//2026/02/12/from-dagger-to-metro/>)

Author: Andrius Semionovas

Published: 2026-02-12T00:00:00Z

Content type: article

Language: en

Sources: [Vinted](<https://devfeed.tech/sources/vinted.md>)

Topics: [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Android](<https://devfeed.tech/topics/android.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Dagger](<https://devfeed.tech/topics/dagger.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [modules](<https://devfeed.tech/topics/modules.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [compatibility](<https://devfeed.tech/tags/compatibility.md>), [compilation](<https://devfeed.tech/tags/compilation.md>), [dagger](<https://devfeed.tech/tags/dagger.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [migration](<https://devfeed.tech/tags/migration.md>), [modules](<https://devfeed.tech/tags/modules.md>)

### AI overview

Vinted's Android developers describe their migration from Dagger and related dependency-injection tools to Metro. The article covers their large, modular codebase, Anvil's maintenance status and K2 migration pressure, and Metro's interoperability with Dagger, Anvil, and kotlin-inject.

### Source excerpt

Metro - modern and kotlin injection framework created by Zac Sweers. And we, Android developers at Vinted, officially and fully migrated to it! It was quite a bumpy ride for our huge codebase. Our story begins...

## From Bash to Bliss: Scaling Vespa Operations with Temporal

DevFeed: [From Bash to Bliss: Scaling Vespa Operations with Temporal](<https://devfeed.tech/articles/from-bash-to-bliss-scaling-vespa-operations-with-temporal-20444.md>)

Original publisher: [Read original article](<https://vinted.engineering//2026/01/21/from-bash-to-bliss-scaling-vespa-operations-with-temporal/>)

Author: Martynas Jakimčikas

Published: 2026-01-21T00:00:00Z

Content type: article

Language: en

Sources: [Vinted](<https://devfeed.tech/sources/vinted.md>)

Topics: [Platform Engineering](<https://devfeed.tech/topics/platform-engineering.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>), [Scripting, bash](<https://devfeed.tech/topics/scripting-bash.md>), [Automation](<https://devfeed.tech/topics/automation.md>), [health checks](<https://devfeed.tech/topics/health-checks.md>), [upgrade](<https://devfeed.tech/topics/upgrade.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [commands](<https://devfeed.tech/tags/commands.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [health-checks](<https://devfeed.tech/tags/health-checks.md>), [maintenance](<https://devfeed.tech/tags/maintenance.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [platform](<https://devfeed.tech/tags/platform.md>), [scheduled](<https://devfeed.tech/tags/scheduled.md>), [script](<https://devfeed.tech/tags/script.md>), [self-service](<https://devfeed.tech/tags/self-service.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

This article describes how Vinted's platform team handled growing maintenance demands for its Vespa search infrastructure. As the environment expanded from hundreds to more than a thousand nodes and included many deployments, Bash scripts and Knife commands became difficult to manage. The team moved toward durable orchestration with Temporal, automated health checks, scheduled upgrades, and self-service guardrails.

### Source excerpt

Growing platform - Growing maintenance Keeping the Lights On (KTLO) is an essential, yet often taxing, part of a platform engineer's role. It represents the routine operational work required to keep the business running and the platform stable. For our team, this primarily involves maintenance on our search engine, Vespa - ranging from version upgrades and service restarts to draining traffic from nodes for hardware replacements.

## Building a Global, Event-Driven Platform: Our Ongoing Journey, Part 1

DevFeed: [Building a Global, Event-Driven Platform: Our Ongoing Journey, Part 1](<https://devfeed.tech/articles/building-a-global-event-driven-platform-our-ongoing-journey-part-1-20442.md>)

Original publisher: [Read original article](<https://vinted.engineering//2026/01/09/building-global-event-driven-platform-part-1/>)

Author: Dejan Menges

Published: 2026-01-09T00:00:00Z

Content type: article

Language: en

Sources: [Vinted](<https://devfeed.tech/sources/vinted.md>)

Topics: [event driven](<https://devfeed.tech/topics/event-driven.md>), [Domain-driven design (DDD)](<https://devfeed.tech/topics/domain-driven-design.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Software](<https://devfeed.tech/topics/software.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [ddd](<https://devfeed.tech/tags/ddd.md>), [development](<https://devfeed.tech/tags/development.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [domain-driven-design](<https://devfeed.tech/tags/domain-driven-design.md>), [event-driven](<https://devfeed.tech/tags/event-driven.md>), [latency](<https://devfeed.tech/tags/latency.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [scale](<https://devfeed.tech/tags/scale.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

Vinted describes why its growing platform outgrew a monolithic architecture, citing regional latency, unpredictable load, large failure domains, and tangled responsibilities. The article outlines the use of Domain-Driven Design to identify domains and guide team and architecture restructuring, followed by a move toward event-driven communication and sagas.

### Source excerpt

A few years ago, our platform reached a point where the way we'd always built software simply wasn't enough anymore. The monolith that powered our early success had served us well, but as the business expanded across the continent, it started showing real limits. Global growth forced us to confront problems we couldn't ignore: latency across regions, unpredictable load patterns, and an architecture that didn't match the scale of the company. We needed to rethink how the entire system worked, from the shape of our data to the boundaries between teams.

## Building a Global, Event-Driven Platform: Our Ongoing Journey, Part 2

DevFeed: [Building a Global, Event-Driven Platform: Our Ongoing Journey, Part 2](<https://devfeed.tech/articles/building-a-global-event-driven-platform-our-ongoing-journey-part-2-20443.md>)

Original publisher: [Read original article](<https://vinted.engineering//2026/01/09/building-global-event-driven-platform-part-2/>)

Author: Dejan Menges

Published: 2026-01-09T00:00:00Z

Content type: article

Language: en

Sources: [Vinted](<https://devfeed.tech/sources/vinted.md>)

Topics: [event driven](<https://devfeed.tech/topics/event-driven.md>), [Replication](<https://devfeed.tech/topics/replication.md>), [data](<https://devfeed.tech/topics/data.md>), [Domain-driven design (DDD)](<https://devfeed.tech/topics/domain-driven-design.md>), [Network](<https://devfeed.tech/topics/network.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [domain-driven-design](<https://devfeed.tech/tags/domain-driven-design.md>), [event-driven](<https://devfeed.tech/tags/event-driven.md>), [network](<https://devfeed.tech/tags/network.md>), [replication](<https://devfeed.tech/tags/replication.md>)

### AI overview

Part 2 of Vinted's engineering account describes operating an event-driven platform across continents. It explains the choice to centralize writes while replicating read-only projections globally, accepting eventual consistency to provide local reads and avoid the complexity and cost of multi-writer sharding. The article also discusses designing projections to tolerate replication delays and partial failures.

### Source excerpt

In the first part, we described how growth pushed us beyond the limits of the monolith and forced us to rethink our architecture from the ground up. We explored how Domain Driven Design helped us uncover clear boundaries, and how shifting from synchronous calls to events and sagas changed the way the system behaves under real distributed conditions. With that foundation in place, we can now focus on what it takes to run this platform reliably across continents.

## How Vinted Standardizes Large-Scale Decentralized Data Pipelines

DevFeed: [How Vinted Standardizes Large-Scale Decentralized Data Pipelines](<https://devfeed.tech/articles/orchestrating-success-20441.md>)

Original publisher: [Read original article](<https://vinted.engineering//2025/12/29/orchestrating-success/>)

Author: Oscar Ligthart

Published: 2025-12-29T00:00:00Z

Content type: article

Language: en

Sources: [Vinted](<https://devfeed.tech/sources/vinted.md>)

Topics: [Data Infrastructure](<https://devfeed.tech/topics/data-infrastructure.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>), [airflow](<https://devfeed.tech/topics/airflow.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>)

Tags: [airflow](<https://devfeed.tech/tags/airflow.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [data](<https://devfeed.tech/tags/data.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [domain](<https://devfeed.tech/tags/domain.md>), [gcp](<https://devfeed.tech/tags/gcp.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [pipelines](<https://devfeed.tech/tags/pipelines.md>), [scale](<https://devfeed.tech/tags/scale.md>)

### AI overview

Vinted describes its migration to cloud-based data infrastructure and the challenges of coordinating dependencies across decentralized teams and domains. The article explains why relying on teams to hand-craft Airflow DAGs would add unnecessary complexity, and discusses adapting the conventional dbt-with-Airflow approach to Vinted's scale and cost constraints.

### Source excerpt

TL;DR: How Vinted standardizes large-scale decentralized data pipelines.

## Dense Retrieval

DevFeed: [Dense Retrieval](<https://devfeed.tech/articles/dense-retrieval-20440.md>)

Original publisher: [Read original article](<https://vinted.engineering//2025/11/18/dense-retrieval/>)

Author: Laurynas Jasiukėnas

Published: 2025-11-18T00:00:00Z

Content type: article

Language: en

Sources: [Vinted](<https://devfeed.tech/sources/vinted.md>)

Topics: [Embeddings](<https://devfeed.tech/topics/embeddings.md>), [Machine learning](<https://devfeed.tech/topics/machine-learning.md>), [Fine-tuning](<https://devfeed.tech/topics/fine-tuning.md>), [rust-ai](<https://devfeed.tech/topics/rust-ai.md>)

Tags: [business](<https://devfeed.tech/tags/business.md>), [e-commerce](<https://devfeed.tech/tags/e-commerce.md>), [embedding](<https://devfeed.tech/tags/embedding.md>), [experimentation](<https://devfeed.tech/tags/experimentation.md>), [fine-tuning](<https://devfeed.tech/tags/fine-tuning.md>), [images](<https://devfeed.tech/tags/images.md>), [metrics](<https://devfeed.tech/tags/metrics.md>), [model](<https://devfeed.tech/tags/model.md>), [retrieval](<https://devfeed.tech/tags/retrieval.md>), [search](<https://devfeed.tech/tags/search.md>), [two-tower-model](<https://devfeed.tech/tags/two-tower-model.md>), [vector](<https://devfeed.tech/tags/vector.md>)

### AI overview

Vinted Engineering describes integrating dense embedding-based retrieval into its multilingual e-commerce search system. The approach uses a two-tower model with query and item embeddings, and the article covers experimentation, model improvements, and engineering work that led to full enablement after approximately 50 A/B tests.

### Source excerpt

TL;DR: integrating embedding-based retrieval into the e-commerce search application is a significant undertaking.

## Reducing Vespa Ranking-Feature Latency During Frequent Data Redistribution

DevFeed: [Reducing Vespa Ranking-Feature Latency During Frequent Data Redistribution](<https://devfeed.tech/articles/teaching-the-old-dog-a-new-trick-20439.md>)

Original publisher: [Read original article](<https://vinted.engineering//2025/11/06/vespa-match-features/>)

Author: Dainius Jocas

Published: 2025-11-06T00:00:00Z

Content type: article

Language: en

Sources: [Vinted](<https://devfeed.tech/sources/vinted.md>)

Topics: [Latency](<https://devfeed.tech/topics/latency.md>), [Redis](<https://devfeed.tech/topics/redis.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [data](<https://devfeed.tech/tags/data.md>), [latency](<https://devfeed.tech/tags/latency.md>), [logs](<https://devfeed.tech/tags/logs.md>), [network](<https://devfeed.tech/tags/network.md>), [redis](<https://devfeed.tech/tags/redis.md>)

### AI overview

Vinted describes using Vespa to store and retrieve ranking features after Redis became a bottleneck, then investigating p99 latency spikes after large feeding bursts. The article focuses on a Vespa optimization for data that is frequently redistributed.

### Source excerpt

TL:DR: When required data can be encoded with match-features, Vespa can apply a new optimisation, which can be a lifesaver when data is frequently redistributed.

## Investigation: Identical Servers, Different Performance

DevFeed: [Investigation: Identical Servers, Different Performance](<https://devfeed.tech/articles/investigation-identical-servers-different-performance-20438.md>)

Original publisher: [Read original article](<https://vinted.engineering//2025/07/15/clocksource-performance/>)

Author: Simonas Rupšys

Published: 2025-07-15T00:00:00Z

Content type: article

Language: en

Sources: [Vinted](<https://devfeed.tech/sources/vinted.md>)

Topics: [Redis](<https://devfeed.tech/topics/redis.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [benchmark](<https://devfeed.tech/tags/benchmark.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [latency](<https://devfeed.tech/tags/latency.md>), [linux](<https://devfeed.tech/tags/linux.md>), [performance](<https://devfeed.tech/tags/performance.md>), [redis](<https://devfeed.tech/tags/redis.md>), [servers](<https://devfeed.tech/tags/servers.md>), [technical](<https://devfeed.tech/tags/technical.md>)

### AI overview

The article investigates inconsistent Redis performance across otherwise identical servers. It finds that servers using the slower HPET Linux clocksource instead of TSC had higher Redis latency and CPU usage, and it explains how to detect and change the clocksource and prevent unintended changes.

### Source excerpt

Inconsistent Redis performance was observed across a fleet of otherwise identical servers. After investigation, we discovered that differences in Linux system clocksource settings - specifically, servers running the slower HPET clocksource instead of the default TSC - led to significant increases in Redis latency and CPU usage.