Abhinav◗
← All work

2026

FieldMind

Offline-first memory for field technicians. Search in a millisecond, answer from local notes, sync when a link exists

Built with
PythonQdrant EdgeONNXSQLiteDockerWhisper
Code
Repository →
FieldMind

A technician records what they see and do. The device remembers it, searches it in about a millisecond with no network, answers questions from it, decides by itself what is safe to share, and syncs with the rest of the fleet through Qdrant Server whenever a connection exists. Built on Qdrant Edge with Team Compilers.

Record notes offline, search and ask, reconnect, resolve a conflict
Record notes offline, search and ask, reconnect, resolve a conflict
Private notes stay in the local shard; the replica is a disposable copy of the cloud
Private notes stay in the local shard; the replica is a disposable copy of the cloud

On the device

  • Two Qdrant Edge shards inside the app process, a third for photos. No database server on the device. Private text is sealed on disk with a device key.
  • Dense vectors from bge-small on CPU plus Qdrant's built-in BM25. About 1 ms per search.
  • A 3B language model phrases answers from the notes search found, with citations. Every number, asset tag and verdict is checked against the note it cites. If it does not match, the device quotes the notes instead.

Deciding what leaves the device

A policy engine classifies every note in about 20 ms: pattern detectors for credentials and contact details, a quantised BERT model for names, and a semantic classifier that reuses the search embeddings. Private notes stay. Useful notes are shared. Notes that mix both go out with names masked. When a technician overrides a decision, the device keeps the vector and the chosen scope, never the text, and later notes at least 88% similar follow that choice.

A trainee's shared notes wait for a supervisor, which works offline
A trainee's shared notes wait for a supervisor, which works offline

Sync that survives bad signal

Every change goes to a durable outbox first. Uploads are compare-and-swap writes. A device that is far behind restores its replica from a Qdrant shard snapshot instead of pulling a diff. Concurrent edits merge field by field, true clashes wait for a person, and nothing is overwritten.

What I'd do differently

Start with the conflict model, not the search. Search was the easy part. Deciding what happens when two devices edit the same note offline shaped everything else, and I found that out late.

Next: FieldProof → Building something like it? Get in touch →