Building a POS App For a Cuban
No electricity, internet, no card payments
This week I’ve built a simple Android POS app for my wife’s Niece from Cuba. She sells jewellery and trinkets at various markets around Havana to make a living.
She was visiting us in the UK this month and naturally the conversation turned to how she runs a business with all the constraints and problems created and imposed by the corrupt socialist regime.
Between the lack of electricity (blackouts lasting over 30h now), almost no (or heavily censored) internet and no access to any of the latest devices or software from the App stores iOS or Android the answer is: “It’s difficult”.
Right now, her entire business runs on pen and paper, then gets copied by hand into a spreadsheet on her PC. That means she loses sales data and valuable insights – which, in an already difficult situation, is a serious problem.
I can’t solve most of the challenges she faces. But I can help with one small thing: replacing her pen-and-paper inventory tracking and cash-only calculations with a simple POS app she can use on her old Android phone.
Max tier AI for zero internet world
Sitting in front of my Apple Studio Display connected to MacBook Pro I fired up Conductor to run a few of the frontier coding agents in parallel – Fable 5, GPT5.5 and Composer 2.5 (Jul, 2026). The world’s most advanced AI is about to build the world’s most off-line ready, legacy supporting mobile app.
Requirements and the tech stack
Requirements
The app needs to run offline.
It needs to run and be easily distributed to older Android phones via USB or WhatsApp
There needs to be a way to “sync” the database across multiple devices
Inventory & sales should be easily exportable into an excel spreadsheet
The app should convert prices into all 3 currencies used in Cuba at checkout
Tech stack
I went with a tried and tested cross-platform stack that is well supported on older devices – Expo+React Native and a local SQLite for the database. Using expo let’s me iterate quickly and build for a variety of legacy platforms.
To synchronise the database across multiple devices (or back it up) I'm implementing a simple import/export functionality via a JSON file. This means no cloud sync or account is needed – she can simply plug the phone to a computer via USB.
Distribution without app stores
Android has a big advantage over the Apple here. To install an app you simply build the APK file and send it to the phone (can be via USB or Whatsapp or something else). Without access to AppleIDs or ability to register a developer device, this is a life-saver.
The app
I had to screenshot the app on my iPhone… but the Android version looks pretty similar
Albeit lacking in visual polish the resulting app ended up quite complex and rich in features.
The sell page is where users can use it at the point of sale to quickly add items to a cart, add discounts, convert into multiple currencies at once (CUC, CUP and Dollar in Cuba). The app lets them quickly type in cash received and calculated the change.
Orders page provides users with a way to review and refund any of the orders.
Inventory is where all of the products inventory, variants and costs are managed. Users can add names, photos, define prices and specify their cost of goods (used to calculate profit later).
Reports is where users can see at a glance the takings on a specific day, see best sellers and biggest profit makers.
The whole database can be exported (and imported) via a tap on a button in the menu, making it easy to back up or transfer to another phone.
Musings Beyond the Build
The chasm
The gap between what I built and what I used in order to build it is enormous. And so is the gap between what I’ve got access to and she doesn’t. Whilst our socio-political system allows us to pretty much freely build, sell and distribute anything as well as setup businesses – that just isn’t the case in a lot of places.
Personal software
One of the massive benefits of coding agents is that we can make this kind of “personal software”. I’ve built many small apps in the last year for an audience of just one user. Small and very specific – the kind that would never be built by enterprises looking for profit. I’d like to talk about how they democratise software development but as easy as these tools are to use, they do require an equally curious and technical mindset with quite a bit of imagination. I don’t think “anyone can just build them” but boy does it feel good when they make a change in someone’s life.
Just because we can, doesn’t mean we should
A lot of the time we build solutions that use the latest frameworks and assume a perfectly connected world on flagship devices. Best intelligence, maximum tokens. That need not to be the case. I would argue that sometimes working with more constraints can actually help us design and build better products.
Years ago when I used to help my wife (who runs Dogsnug) at outdoor dog-fairs I remember so clearly the connectivity issues we experienced. Latest iPhones, updated version of iZettle POS app and brand new readers – none could help. And all we needed was an offline-capable app that could help us track inventory and take cash payments.
Closing thoughts
Building this app took a weekend. For her, it might save months of frustration and lost revenue. That gap – in access, in effort, in impact – doesn't get smaller the more I think about it. Personal software, built for an audience of one, in a weekend, for someone on the other side of the world with an old Android phone. That's not a small thing.