Kosto
Grocery price intelligence for Bulgarian consumers
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
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.”
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.”
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





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.