AI Lifestyle & Shopping June 10, 2026

Agora.AI

Shopping list priced across 13 supermarkets

Task

Version 3 of the iOS and Android app over a real-time shopping list and a matching and pricing API, with voice input, price comparison, a store finder, digital flyers and family sharing

  • Strategy

    Reads stream live from the database and every change is a command to the pricing API, with an optimistic interface that hides the round trip

  • Design

    Tonal scales around brand blue #006EAC, a bundled RobotoFlex variable type scale, fully bilingual Greek and English

  • Client

    SMART SHOPPING IKE

Agora.AI

Transforming Grocery & Household Shopping with Voice AI and IoT. Write your list. See where it’s cheapest.

Agora.ai is a grocery-savings app for the Greek market. Users write their shopping list the way they would on paper, or simply say it out loud: “2 packs of pasta no.6“. The platform turns every line into real products across 13 Greek supermarket chains, pre-selects the cheapest match, and prices the whole list two ways: as a combined basket, with each item bought where it’s cheapest, and as a per-store basket, with the entire list bought at one chain. Before leaving the house, the shopper knows what to buy, where, and what it will cost. We built Version 3 of the app, one Flutter codebase live on the App Store and Google Play as “Agora“.

The Problem

Thirteen supermarkets, and none of them on your list

Shoppers who want to save money compare flyers, apps and shelf prices by hand, chain by chain. A shopping list is a few loose words, like “pasta” or “milk”, while a price belongs to one specific product at one specific chain. Bridging the two by hand is exactly the job nobody has time for.

The app had to accept messy human input, typed or spoken, match it to real products at every chain, and price it in several ways at once. It also had to feel as instant as writing on paper, even though every single line needs a trip to the server and back.

What we built

A list that prices itself

The list lives in Cloud Firestore and streams to the phone in real time. Every change the user makes (add, swap, quantity, tick, complete, share) is sent as a command to the Agora AI REST API. The API does the matching, the price ranking and the per-store lists on the server and writes the results back into the stream. Around that loop sit the discovery features: a live offers feed, a supermarket map, a digital flyer reader, favourites, the government Household Basket browser and personal spending analytics.

Getting started takes seconds: email, Google or Sign in with Apple. Account setup is transactional. If any step of provisioning fails, the sign-in is rolled back, so nobody ends up with a half-made account. A nine-step interactive tutorial then walks new users through the list, using demo items added through the real API so they see real prices.

Agora AI-Figma Design-Mobile App

Type it, or just say it

One input bar handles both typing and push-to-talk voice, in Greek or English. The raw phrase goes to the server, which works out the quantity and can return several items from a single sentence. The moment the user submits, a placeholder row appears at half opacity. It becomes the real, priced row in the same frame the data arrives, with no flicker and no duplicates. If nothing matches, the row fades out with a clear message.

One basket, or one store

The default view is the combined basket. Each line shows the product picked, the logo of the chain where it’s cheapest, and the user’s original words underneath. A strip of chips shows the combined total first, then the price of the entire list at each chain. Tap a chip and the list switches to that chain’s version, with its own product picks. A toggle groups everything by supermarket, with subtotals and item counts, and a “notebook” mode hides prices for a plain paper-style list.

Every alternative, side by side

Tapping a line opens every matching product across all chains. A smart price assistant picks four standouts: cheapest product, lowest price per kilo or litre, biggest discount and customer favourite. Further tabs show only products on offer, and multipacks that work out cheaper. Store and brand filters show a live result count. Choosing an alternative swaps it into the list in one tap, and every total updates.

In the aisle

In the shop, a cart button ticks items off: they’re struck through and sink to the bottom of the list. Quantity taps respond instantly. When every item for a store is ticked, the app offers to complete that store’s list. The whole list can also be exported and shared as text.

Offers, flyers and the nearest branch

The offers feed shows the 300 biggest current discounts, with personal keyword tabs such as γάλα or coffee that ignore Greek accents. A map finds every branch of every chain within 3 km and hands off to Apple Maps or Google Maps for directions. The flyer library shows each chain’s current promotional flyers, flags new ones, and opens them in a zoomable reader. Users can choose which chains to follow and get a notification when a new flyer comes out.

Shopping for a household

Users can invite other Agora users by email to share their list. Members appear in real time. Tapping a family member switches the active list, and everyone with access can add, swap and tick items. The app also includes the Greek Ministry of Development’s Household Basket price-cap programme, browsable chain by chain, and a spending view broken down by category.

The architecture

Instant, even though the server decides

The app separates reading from writing. Firestore snapshots handle every read, and every write is a REST command to the domain API, which owns the matching, pricing and list building. The main list and each store’s list stream in parallel, are combined on the device, and are debounced by 500 ms, so a burst of server writes becomes one smooth update.

The optimistic layer is what makes the app feel instant. Placeholder rows are never removed when the HTTP call returns, only when their real counterpart appears in the stream, and that swap happens inside the stream listener, in a single frame. Quantity taps are applied locally, collected per item for two seconds and sent as one request, with an automatic rollback if the server says no. On every change, a totals engine recalculates the combined total, each chain’s share of the combined basket, and the whole list priced at every chain.

The client follows MVVM with a separate use-case layer, so list behaviour is plain, testable Dart. Widgets rebuild at row level, so changing one item repaints one row, not the whole list. The dependency graph is scoped to the signed-in user and rebuilt on account switch, so nothing leaks between accounts. A typed error model tells “the server said no” apart from “we never reached the server”. A single store-name normaliser resolves every way the data sources spell a chain (Greek, Latin, accents, abbreviations) to one code and one logo. The codebase also supports white-label builds, each bound to its own Firebase project.

Team and scope

Version 3, rebuilt from the list up

Mobile was ours from the ground up: a full refactor to MVVM with use cases in February 2026, then a performance and stability pass in September 2026, which included bundled fonts, bounded caches, listener-leak fixes, typed errors and a shared HTTP client with timeouts. A team of 15.

Fully bilingual, with around 660 strings in each of Greek and English and full parity between them. Switching language also switches the speech-recognition language. Account deletion is built into the app, as both stores require. The current release is 3.0.2 (build 343).

Technologies

Stack

Download mobile app

Agora AI

Back
Preloader image