Platform·MMXXV — MMXXVI
Compusof Tools
A field log that works without signal
- Year
- MMXXV — MMXXVI
- Role
- Design & engineering
- Live
- cst.dotmot.dev
I·Context
Technicians reported incidents over WhatsApp, often from inside sites with no signal. Photos got lost in the chat and every report was rewritten by hand.
II·What I did
- I
A real database inside the browser, so nothing depends on the network.
- II
An assistant that works with any AI provider, or with none at all.
- III
Reports shared to WhatsApp through templates each technician can tune.
How it is built
- SQLite in the browser
- SQLite compiled to WebAssembly, stored in the browser's private file system (OPFS) and running in a Worker, so a query never freezes the screen on a mid-range phone.
- Live queries
- Each query knows which tables it reads and reruns when they change. Notifications wait for the commit, so a rolled-back transaction never touches the UI.
- A lossless migration
- The app started on IndexedDB. The migration copies page by page, only ever reads the old database, resumes if the phone dies and isn't marked done until the row counts match.
- On-device AI
- OpenAI, Gemini, Claude, Groq or Chrome's built-in AI. With none of them, an open model runs on the phone's GPU through WebGPU and nothing the technician types leaves the device.
- Hybrid search
- Technical knowledge is searched by full text and by vectors inside the same SQLite, merged by rank fusion. Text answers from the first moment; vectors arrive later and only raise the quality.
- Photos and caching
- ImageMagick in WebAssembly shrinks every photo on the phone. The service worker never caches AI responses and only fetches the model runtime the first time it is needed.
III·What I learned
“The first time I built for the people right next to me.”
Tools
Vue 3·
Next work
Akelarre
Legal paperwork, from intake to signature