AI & ML
RecallAI
A visual memory assistant
Helping AI remember where you last saw things.
- Role
- Temporal Memory and backend integration.
- Status
- Hackathon prototype
- Year
- 2026
- Team
- Built at Cal Hacks 13.0 in Berkeley with Kentstar Harsono, jgsam and Chawin.

01
The problem
"Where did I leave my keys?" is a memory problem. A camera that only detects objects can say what it sees now, but not what it saw twenty minutes ago, or when.
RecallAI watches through an ordinary webcam, recognises your own belongings rather than generic objects, and remembers where each one was last seen, with a photo as proof.
02
My contribution
I built the Temporal Memory layer: last-seen retrieval, historical observations, elapsed-time computation and the grounded, time-aware answers the assistant gives, plus backend integration.
Every answer is computed from stored sighting rows, never guessed. The camera and vision pipeline, the Grok-powered assistant, the live dashboard and the sync layer were built by the team.
- Python
- FastAPI
- YOLO
- DINOv2
- SQLite
03
How it works
Register
Show the camera an item from three angles. There is no training step.
Detect and recognise
YOLO finds objects in each frame, then DINOv2 compares each one with your reference photos. A similarity of 0.70 or more means it is yours.
Remember
A sighting snapshot is saved at most every 15 seconds while an item is in view, and another 5 seconds after it leaves.
Answer
Time-aware retrieval turns the stored sightings into a grounded answer with links to the snapshots it used.
04
Engineering details
Observed, not inferred
A sighting is where an item was. Nothing in the memory layer says where it is now. The last-seen time is the newest sighting, never the moment the item went missing.
Defensive time handling
Timestamps are stored as UTC ISO strings, naive values are read as UTC, small clock jitter is clamped, and a stale 'seen' row means recording stopped, not that the item left.
Read-only and per user
Looking an item up never creates a sighting or resets its age, and every query is scoped to the signed-in user's own rows.
Recognition by example
The team picked DINOv2 over CLIP after it separated 'my bottle' from 'a bottle' 3 to 4 times better on their own frames, and set the 0.70 threshold from measurements.
05
Results & limitations
It works end to end on a laptop: register an item, watch it move around a room, and ask where it was last seen. The memory layer's answers are traceable to stored sightings, which is the property I cared about most.
3 to 4x
better separation than CLIP
DINOv2 vs CLIP on the team's own frames, telling your item from a similar one.
0.77 to 0.95
similarity, same item
Other objects scored 0.64 or lower, which is why the match threshold is 0.70.
250+
backend tests
With the assistant mocked, and CI running on every push.
Limitations and honest caveats
- A hackathon prototype tested on a handful of items in one venue.
- Sightings are where an item was seen, not a live location. It does not do continuous perfect tracking.
- The conversational assistant needs an xAI API key. Without one, everything except the assistant still works.
- Setup is Windows-first, and the repository belongs to a teammate.