Systems / Research · 2026
Movement Language Discovery System
How might communities correct machine-labelled, culturally specific movement?
Home page
The Brief
General-purpose computer vision systems label culturally specific movement using datasets built without that culture in mind — the result is technically accurate labels that are culturally empty, and no mechanism for the people whose movement it is to correct the record. Movement Language Discovery System is a pilot testing what community-governed movement archiving could look like instead: visitors submit movement on video, a machine model auto-tags it, and a human reviewer — not the algorithm — decides what enters the permanent community record. Approved submissions feed The Repository, a companion offline knowledge system running entirely on a Raspberry Pi, so the archive answers to the community that built it rather than to a cloud platform.
Approach
The system is built as a Next.js web installation (hosted on Vercel) backed by Firestore and Google Cloud Storage, with Google Video Intelligence handling automatic labeling. Its actual design work is the gap it deliberately leaves open: every submission shows machine-generated tags next to a blank "Community says" column, making the absence of cultural context visible rather than papering over it with a synthetic label. A password-gated reviewer dashboard turns that gap into a decision point — full clip playback, existing annotations, and a three-state action (Approve/Restrict/Reject) with a required reason field, so nothing enters the public record unread. The visual language reinforces the same tension: Fraunces for archival/editorial content, DM Mono explicitly for anything machine-generated, and a water-refraction motion motif standing in for how meaning distorts when it passes through a system not built to hold it. The companion system, The Repository, is the payoff — approved knowledge lives on a Raspberry Pi with no internet connection, no cloud vendor, and no third-party platform between the community and its own archive.
Getting There
- —Reviewed critiques of Laban Movement Analysis (LMA) as a taxonomy — including its origin in European concert dance and challenges to its claimed universality — before deciding to use it anyway, explicitly as a placeholder classification backbone rather than a claim of correctness
- —Made the schema-level decision to store physical description separate from cultural meaning, so the same movement can carry contested or multiple interpretations without the database forcing a single 'truth'
- —Confronted a sourcing problem directly: pulling cultural movement data from research sites or scraped web content would replicate the exact extraction-without-consent problem the project argues against, so used publicly self-documented sources and clearly-labelled synthetic data instead
- —Visitor records or uploads a movement video, required to name themselves and describe the movement's meaning before submitting
- —Video uploads to Google Cloud Storage via a Next.js server-side API route — chosen over Firebase Storage after discovering Video Intelligence requires gs:// URIs rather than HTTPS URLs, removing an unnecessary abstraction layer
- —Google Video Intelligence auto-tags the video with generic, scene-level labels; a Firestore record tracks status at each pipeline stage
- —Visitor receives a QR-coded permanent link to their submission, with an empty 'Community says' column left for the reviewer — the gap made visible rather than hidden
- —A human reviewer reads the submission, adds up to five cultural annotations, and decides Approve, Restrict, or Reject; every decision is logged and timestamped
- —Approved submissions are exported as markdown and ingested into The Repository — an offline RAG system (LangChain, ChromaDB, Llama 3.1 8B via Ollama) running on a Raspberry Pi, with zero cloud dependency
- —Deliberately kept the web pilot and the offline RAG device as separate systems with separate repos, rather than merging them via a Firebase-coupled path that was considered and rejected
- —Measured actual performance on the Pi rather than assuming it would be fast enough for a design-show demo
The Result
The pilot is live and functional end-to-end: upload → auto-tag → human review → offline archive, with an audit trail on every decision. It also has real, stated limitations rather than hidden ones — the export from web app to Raspberry Pi is still a manual transfer, not an automated pipeline; all content so far is self-recorded or pre-existing footage, since no actual community partnership or consent framework has been established yet; and data-science work like embedding optimization, retrieval tuning, and model evaluation is explicitly out of scope for this pass. The project positions itself as a proof of concept for the governance architecture, not a finished cultural archive — the next layer is pairing this system with skeletal pose estimation and a dataset actually built and governed by the communities it's meant to serve.
Stack
- —Next.js 15, React, CSS custom properties frontend
- —Framer Motion, CSS keyframes, ambient canvas animation
- —Vercel hosting
- —Google Cloud Storage video storage
- —Firestore (Firebase) database
- —Google Video Intelligence API v1 auto-tagging — the generic classifier this project's review layer exists to correct
- —Password-based (facilitator + reviewer) authentication
- —The Repository — offline RAG archive, Raspberry Pi companion system. See separate case study for full stack
Skills & Tools
More Projects