We build and run software people use every day.
Specvista is a small software company. We make Ubriot, release infrastructure for React Native apps, and we design and build platforms for clients, including the one ServicePilot NG runs on in Lagos.


Our product
Ubriot
Release infrastructure for React Native apps. Build, sign, submit and update iOS and Android apps from one place, with a way back when a release goes wrong.

- What it does
- Builds signed iOS and Android apps, submits them to TestFlight and Google Play, publishes over-the-air updates to channels and sends push notifications through APNs and FCM.
- When a release breaks
- Reads the failed build log and points to a likely cause using the app's own release history. Warns before an over-the-air update that would not match the runtime people are on, and offers a rollback when backend health drops after a release.
- Who it is for
- Teams shipping React Native apps, Expo or bare, who want builds, store submission and updates in one place.
- How you use it
- A web dashboard, the ubriot command line tool, an MCP server for AI coding agents, and SDKs for updates and push.
Client work
Built for ServicePilot NG
ServicePilot NG sends vetted service professionals to homes and businesses across Lagos, with a written scope and a price agreed before work starts. We built the software it runs on.

- Client
- ServicePilot NG, a home and office services company operating across Lagos.
- Scope
- The customer website, the customer mobile app, the operations admin the team runs jobs from, and the API behind all three.
- What it handles
- Service requests, written quotes, scheduled visits, recurring contracts, invoices that customers pay by bank transfer or card from a link, and the records of every visit.
- Status
- The website and operations admin are live. The mobile app is in testing ahead of release.
Things you can check yourself
No download counts and no logos. Each line below links to the thing itself.
Ubriot is live
Sign-up, pricing and documentation are public.
ubriot.dev/docsUbriot's tools are on npm
The ubriot command line tool, ubriot-mcp, ubriot-updates-rn and @ubriot/notify-rn.
npmjs.com/package/ubriotWe publish open source
expo-video-encoder turns JPEG frames into an H.264 MP4 in Expo and React Native apps. MIT licensed.
npmjs.com/package/expo-video-encoderServicePilot NG runs on what we built
The public site and its payment pages are live in Lagos.
servicepilot.ngWe write down what we learn
Release engineering notes from running Ubriot, published on its blog.
ubriot.dev/blog
How we work
Three habits from running our own releases.
Every release has a way back
Updates go out on channels, the last artifact we still trust is kept, and an over-the-air update is never served to a binary that was built after it. Rolling back is one click, not a weekend.
Checked before and after every deploy
Each site has a smoke test that runs against the real address before a change ships and again once it is live. If either run fails, the change stops there.
Tools that do not depend on one person
Credentials, alerts and runbooks belong to the team account, not to someone's laptop. In Ubriot, Apple signing credentials are stored once for a team and cover every app on it.
Latest writing
We write up what breaks and what we changed, on the Ubriot blog.
An OTA update should never be older than the binary it runs on
Why a fresh native build can be hidden by an older over-the-air bundle, and the ordering rule we now apply on the update server.
Know the last artifact you still trust
Recovery gets slower and riskier when a team knows it should roll back but cannot name the last good build.
A faster first pass through failed mobile builds
How Ubriot turns failed build output into a likely cause and a checkable next step, without hiding the raw log.
Partnerships, client work, or a hard problem worth solving.
hello@specvista.comWe hire rarely, and carefully.
If you build software you would put your name to, introduce yourself at careers@specvista.com.