← Back to projects

Kosto

Grocery price intelligence for Bulgarian consumers

In Development
B2CConsumerMobile

The Problem

In 2024, Bulgaria began its transition from the Lev to the Euro. As with previous Euro adoptions across Europe, this transition created uncertainty around pricing. Consumers worried about price speculation, retailers faced pressure to justify their pricing, and the government scrambled to provide transparency.

The Bulgarian government released price monitoring data, attempting to address these concerns. But the data was:

  • Poorly structured with inconsistent product naming across retailers
  • Difficult to navigate without technical knowledge
  • Practically unusable for everyday consumers making shopping decisions

Groceries represent the largest recurring household expense for most families. In a period of currency transition and economic uncertainty, having clear visibility into price changes isn't just convenience. It's financial self-defense.

Market Position

The competitive landscape presented a clear opportunity:

  • Government data exists but is essentially raw data dumps, not a consumer product
  • No direct competition in the Bulgarian market for consumer-friendly price comparison
  • Existing alternatives fail because they either require manual research or don't cover enough retailers
  • First-mover advantage in a market of 7 million people facing a major economic transition

This was a rare case of genuine market whitespace combined with urgent consumer need.

Users

M

Maria

Budget-Conscious Mother

Pain Points

  • Shops weekly across multiple stores for family of 4
  • No single store consistently has the best prices
  • Willing to travel for savings but needs to know where

Goal

Minimize grocery spend while maintaining quality

I drive past three supermarkets to get home. If I knew which one had better prices today, I'd stop there.

S

Stefan

Young Urban Professional

Pain Points

  • Digitally savvy but prefers physical stores
  • Wants quick price comparisons without extensive research
  • Values time alongside savings

Goal

Make informed decisions without extensive research

I don't want to spend an hour comparing prices. Just tell me if I'm getting ripped off.

E

Elena

New Parent

Pain Points

  • Baby products have huge price spreads between stores
  • Most price-sensitive category for family budget
  • Needs reliability on essential items

Goal

Find best prices on essential baby items

Diapers at one store cost nearly double what they cost at another. That adds up fast.

Approach

The core challenge wasn't data collection. It was data normalization. Different retailers use different product naming conventions, descriptions, and categorization schemes. A "1L Whole Milk" at one store might be "Whole Milk 1000ml" at another and "Fresh Milk (Full Fat) 1L" at a third.

I evaluated several approaches for product matching:

Exact matching was too rigid. Minor variations in spelling, spacing, or format would create false negatives, missing obvious matches.

Manual categorization wouldn't scale. With thousands of products across multiple retailers, maintaining manual mappings would become a full-time job.

AI-based semantic matching introduced consistency concerns. Similar products might get different similarity scores on different runs, making trend analysis unreliable.

I settled on fuzzy matching algorithms that could handle variations while remaining deterministic. The approach uses string similarity metrics combined with product attribute parsing (brand, size, unit) to create reliable product groupings. The same input always produces the same match, making price trend analysis trustworthy.

What We Built (MVP)

The solution spans three platforms to meet users where they are:

  • Interactive map with 520 store locations across Sofia
  • Click any store pin to see tracked prices for that location
  • User-contributed price updates with gamified contribution system
  • Anti-abuse rules to maintain data quality from user submissions
  • Basket builder with customizable distance radius for optimized shopping
  • 25,000+ unique products tracked across all major retailers

Key technical decisions:

  • Building a robust product normalization pipeline that handles format variations
  • Designing the matching algorithm to be transparent, so users can understand why products are grouped together
  • Creating a price history system that tracks changes over time
  • Optimizing for mobile performance, recognizing that most users check prices while shopping

The Product

Kosto interactive map
Interactive map showing 520+ store locations across Sofia with real-time status indicators
Store information popup
Store popup with distance, open/closed status, and quick actions to view products or contribute prices
Store product listings
Store-level product view with community-verified prices, last confirmed dates, and voting system for data quality
Product catalog for basket building
Unified product catalog for building shopping baskets across all retailers
Basket checkout with distance slider
Basket checkout with adjustable distance radius to find the cheapest store nearby

Early Validation

Pre-launch feedback gathered from users presented with the project concept, UI/UX designs, and prototype has been positive and instructive:

  • Confirmed real savings: Users responded positively to the ability to find meaningful price differences between stores they'd assumed were similar
  • Most requested feature: Price drop alerts and notifications for tracked products
  • Key insight: "Why keep using if Store X always wins?" - validates core value but highlights retention challenge

We're addressing the retention concern by expanding categories (some stores win on different product types) and adding features that provide ongoing value beyond initial price discovery.

Roadmap

Phase 1: Sofia MVP

Complete
  • 520 store locations mapped and searchable
  • 25,000+ products tracked across major retailers
  • Core price comparison functionality
  • User contribution system with quality controls
  • Data pipeline and gamification system built

Phase 2: Geographic + Feature Expansion

In Progress
  • Launch web, iOS, and Android apps to users
  • Price alerts and notifications for tracked products
  • Expand to top 5 Bulgarian cities (Plovdiv, Varna, Burgas, Ruse)
  • Enhanced basket optimization algorithms
  • Retailer API integrations for real-time accuracy

Phase 3: New Verticals

Planned
  • Pharmacy stores (biggest price discrepancies observed!)
  • Gas stations with real-time pricing
  • Electronics and appliance pricing
  • Unlocks new user segments beyond grocery shoppers

What I've Learned

Key Learnings

  • Data quality IS the product. The matching algorithm is only as good as the data it receives. Investing in robust data cleaning has paid dividends.
  • Gamification needs careful anti-abuse thinking. User contributions are valuable but require validation rules to prevent gaming or sabotage.
  • User retention requires ongoing value, not just initial discovery. Once users find their cheapest store, they need reasons to return.
  • Baby products insight: highest pain = highest engagement. Categories with the biggest price spreads drive the most active users.
  • Platform decisions matter: web for research at home, mobile for in-store decisions. Each context has different UX requirements.

Impact

520

Store Locations

Sofia metropolitan area

25,000+

Products Tracked

Across major retailers

1.3M

Population Covered

Sofia metro coverage

3

Platforms

Web, iOS, Android

Expansion to additional Bulgarian cities is planned for the next phase. The core hypothesis - that consumers need and want accessible price transparency - is yet to be validated by an even larger sample size of early users.