The situation
The QVAC programme runs AI locally, on the user's own device, with no cloud. I built chat-style AI interfaces and worked on the QVAC Converter, an app, not yet released, that converts files on the device.
What made it hard?
The app had to work on desktop and on mobile. For that we used Electron, Pear, separately running Bare processes, and Expo on Android and iOS. Files had to be processed on the device, and the AI could not send a request to any outside server.
What was I responsible for?
- I worked on the app and on how its different runtime environments connect, so that the privacy requirements hold even without internet.
- I converted files with LibreOfficeKit, MuPDF and PyMuPDF, in separate Bare subprocesses.
- On mobile, users could cancel file processing or resume it after a restart. The app could also handle several converted files at once.
- I used Maestro to test that more than 20 different tasks can be completed in the mobile app. I checked the desktop version with Playwright and recorded the compatibility results in tables.
Key decisions
Alternative
File conversion in the same process as the interface
Choice
A separate process for file conversion
Consequence
If a converter crashes, it does not take the interface down with it.
Alternative
One codebase for Pear and Electron, with features switched on or off
Choice
Pear and Electron in separate code paths
Consequence
The two environments can fail differently, so I handled them separately.
Results
- The same interface worked on Electron, Pear and Expo.
- In the handover material I also wrote down how to check the Android release and the basic behaviour of the iOS version.
When this matters to you
- If customer data, or health or legal data, has to stay on the device, I know how to make AI run on it without a cloud.
- If you need both a computer version and a mobile version, you do not end up with two separate products.