Machine learning · 2026
Ichne
Every shift, proven.
Cleaning work leaves almost no record of itself. Ichne reads the traces it does leave: 8 hours of wrist-worn inertial data, uploaded at the dock, resolved into an activity timeline, a trajectory with honest per-point uncertainty, a per-floor vector map that sharpens across shifts, and a written report in which every number has been machine-checked against its computed source.
- Status
- Flagship
- Domain
- Sensor fusion · Multimodal ML
- Role
- Architecture, modelling, pipeline, brand
- Year
- 2026
Stack
- PyTorch
- Lightning
- GTSAM
- Hydra
- DVC
- Qwen2.5 · QLoRA
- llama.cpp
- FastAPI
- Supabase
- Next.js
A wrist-IMU intelligence platform that reconstructs what happened during an eight-hour shift — the activity timeline, the trajectory, the floor map — from a single inertial stream and a fixed dock.
The shape of the problem
The name is Greek — íchnos, a footprint, a trace.
That is the entire brief. An inertial measurement unit on the wrist produces a dense, low-semantic signal: acceleration and angular velocity, nothing else. From it the system must recover activity (what was being done), geometry (where), and narrative (what it means) — three problems with three different error characteristics, which is why they are solved by three different mechanisms rather than one model asked to do everything.
Aligned encoders around a small language spine
The architecture is a hub of small pretrained modality encoders joined through lightweight projection heads into a compact instruction-tuned language model, tuned with QLoRA.
The shape follows the data economics rather than fashion: contrastive alignment of the CLIP class consumed hundreds of millions of pairs, and no realistic labelling study for this domain produces that. Small trainable surface area over strong pretrained encoders is the only honest option, so the plan builds self-supervised pretraining first and treats supervised labels as the scarce resource they are.
Geometry is computed, not generated
Trajectory is recovered by a factor-graph smoother — learned heteroscedastic odometry, robust magnetic heading factors, barometric floor factors for multi-storey sites, dock priors, and inter-shift landmark factors.
The dock is load-bearing: every band departs from and returns to one fixed, known location, which gives a known origin, a known initial heading, at least one guaranteed loop closure per shift, and free stationary recalibration windows. The language model never emits a coordinate. It annotates a map whose geometry was computed, and every figure it writes is validated against the source before it reaches a reader.
Canonicalisation as a correctness requirement
Two device classes in the same corpus did not agree on what acceleration means — one logging raw counts with gravity present, the other logging gravity-removed user acceleration in g.
A per-device profile layer that reconstructs or extracts gravity depending on provenance is therefore not hygiene, it is the difference between a working model and one that silently learns the sensor rather than the task. Sampling-integrity gates sit alongside it: segments below an effective-rate threshold are flagged and the model abstains rather than interpolating across a hole.
Heading is the binding constraint, not compute
A gyroscope integrated over an eight-hour shift accumulates unbounded heading error — even at a good bias figure the drift over a full shift is measured in hundreds of degrees, which is enough to fold a floor plan in half.
Compute is not the constraint here; observability is. The design therefore treats heading as something that must be repeatedly re-observed rather than integrated: robust magnetic factors where the magnetic environment is trustworthy, phase-gated map matching once a floor estimate exists, and dock closure as the hard anchor at both ends of every shift.
The map sharpens rather than being drawn
A single shift produces a noisy trajectory.
The value is in accumulation: inter-shift landmark factors tie repeated passes through the same corridor to a common structure, so the per-floor estimate tightens roughly as the square root of the number of shifts. The output is a layered vector map rendered deterministically from a validated schema — not a bitmap, and not a drawing produced by a model. The language layer is allowed to annotate that geometry with names and observations, and nothing else.
Batch, not real time
Shifts upload at the dock and are processed overnight, which removes latency from the requirement list entirely and changes the serving decision.
Quantised weights running on CPU-capable inference are sufficient, which in turn removes a GPU dependency from the production path. The heavy machinery — training sweeps, alignment, fine-tuning — runs on burst capacity and is versioned alongside the datasets, so any published figure can be traced to the exact data and configuration that produced it.
Pipeline
Shift to report
Stage Can reject
-
01
Dock upload
8h inertial stream
-
02
Canonicalise
Device-normalised signal
Per-device gravity semantics
-
03
Rate gate
Verified segments
Below threshold → abstain
-
04
Encoders
Aligned embeddings
-
05
Factor graph
Trajectory + covariance
-
06
Vector map
Layered floor plan
-
07
LLM + check
Validated report
Every figure re-checked
Skills exercised
What the build
actually demanded.
Against the corpus · 15 systems
This system Corpus median
Modelling
- Self-supervised pretraining on unlabelled inertial corpora
- Contrastive alignment through lightweight projection heads
- QLoRA fine-tuning of a small instruction-tuned spine
- Human activity recognition with calibrated confidence
Estimation
- Factor-graph smoothing over learned odometry
- Heteroscedastic uncertainty regression
- Loop closure and dock-anchored priors
- Barometric floor separation for multi-storey sites
Systems
- Per-device canonicalisation and sensor-provenance modelling
- Sweep-native configuration and dataset versioning
- Batch inference on CPU-capable quantised weights
- Deterministic vector rendering from a validated schema
What it establishes
-
Four artifacts per shift
Timeline · trajectory · vector map · narrative report
-
Small trainable surface
Projection heads and LoRA over frozen pretrained encoders
-
Abstention by design
Below-threshold input is flagged, not interpolated
-
Map sharpens as 1/√N
Every additional shift tightens the floor estimate
-
No GPU in production
Overnight batch runs on quantised CPU inference
-
Every figure traceable
Datasets and configs versioned with the model