Active focus

Capture Live (b): Review Frontend Phase 1

Capture now, make sense later.

Capture Live (a) closed 13-05-2026 (M1's "frictionless input + raw data collection" thesis validated at a real event 10-05-2026; URL channel relocated to m2c). M2b is now active. The interim review-view scaffold at `app.remoir.app/review` (RPC + minimal HTML page built during (a)) is live but deliberately rough — m2b's job is to land the real review frontend: stack chosen, deployment URL chosen, auth model chosen, list view + detail view + filters, no editing in Phase 1. See `project-management/decisions.md` 10-05-2026 ("Pending open decisions from ADR-003") for the three open decisions m2b resolves.

Active milestone

Capture Live (b) — Review Frontend Phase 1

4/7 tasks · 57%

What's next

  • Capture Live (c) — Multi-Modal Capture (now includes URL channel, relocated from (a) 13-05-2026)
  • AI Enrichment (prototype) — scoped 12-05-2026, replaces former "Automated Loop"

Previous milestone

Capture Live (a) — Photos only (complete 13-05-2026)

Tracks · Owner

Capture Freek

Milestone timeline

Ten named moments where something demonstrably works. Numbered for ordering, not for ranking — they can be reordered, inserted, or deferred without renaming anything else.

m1
Manual Loop
Complete
m2a
Capture Live (a) — Photos only
Active
Capture
m2b
Capture Live (b) — Review Frontend Phase 1
Queued
Capture
m2c
Capture Live (c) — Multi-Modal Capture
Queued
Capture
m3
AI Enrichment (prototype)
Future
AI Enrichment · Raw Data
m4
WhatsApp Pipeline
Retired
Capture · Data Pipeline
m5
Website Live
Deferred
Knowledge Graph
m6
AI Parsing
Future
AI Enrichment · Raw Data
m7
Organisation Layer
Future
Knowledge Graph
m8
Multi-User
Future
Knowledge Graph · Data Pipeline
m9
Platform Convergence
Future
All tracks
m10
Sovereignty
Future
Sovereignty

Recent updates

What landed in the past few sessions. Pulled live from STATUS.md.

14-05-2026
Three non-build sessions, no milestone shift. (1) Morning — processed cowork-brief-2026-05-13-object-model-four-layer-reframing.md: object model reframed into four layers (Plumbing / Structural / Emergent / Deliberate), Thread promoted from "deferred" to first-class Emergent, Tag elevated to first-class object, core count 8 → 10. Six new entries in decisions.md 13-05-2026 (object model brainstorm), two new candidate principles, new §5.5 in north-star.md. (2) Afternoon — principles review on the C6 + C7 + U5 cluster (three-axis data architecture; digital cell = private row; epistemic character is orthogonal): gates 1–3 of the source doc's 5-gate ratification path passed; gates 4 + 5 deferred; cluster ratification paused. F3 axis-label flag resolved (Freek confirmed typo; C6's original scope/stage/character labels stand). Cluster status preserved at docs/candidate-principles/data-layers-matrix.md. (3) Late afternoon — docs/remoir-snapshot.md retired as redundant with primary source docs (north-star, working-vision-phase-1, object-model, principles, STATUS, milestones). File moved to archive/remoir-snapshot-retired-14-05-2026.md; five CLAUDE.md references removed; lessonsFrederic.md #17 (vision-and-snapshot-drift) postscripted with the snapshot half rendered moot. Details in projectlog.md 14-05-2026 entries.
13-05-2026
Original tasks 6 + 9 closed plus processing-transparency track (m2a tasks 10–13). Photo-mode provenance fix (deploy a3ecb7b3) — library imports now write (external, user_enriched), camera-mode captures (Person/Slide) keep (device, device). Migration 005 added processing_state (NOT NULL, 5-value CHECK) + processing_notes (nullable); pre-existing rows backfilled to 'processed'; Capture App (deploy 1d64ccdf) emits processing_state: 'unprocessed' on every new insert. Real-capture validation by Freek confirmed 3 new captures land as unprocessed while pre-existing rows remain processed. Tasks 7 + 8 marked stale per the 10-05 Capacities-as-provisional decision. Two new friction-log entries (Photo-mode iOS-action-sheet residual edge + captured_at send-time design choice); one new maybelater.md entry (reconcile status vs processing_state at m3 kickoff).
10-05-2026 evening
Calendar integration refined (task 9 spec partial) — multi-calendar selection landed so reads/writes scope to a user-chosen calendar (typically a dedicated "Remoir Events" calendar) instead of primary. Overlap handling added: when multiple events overlap, banner picks the shortest-duration one (handles all-day / multi-day broader-context events losing to specific sessions) and shows a ·N badge with a tap-to-switch picker. Banner picks up the chosen calendar's color as a left-border accent; gear icon in the banner re-opens the calendar picker. OAuth scope calendar.events + calendar.readonly; storage key gcal_token_v3 → v4 so existing users see one fresh consent prompt on next visit. Init-render bug found and fixed during deploy verification (authState initialised to null so first setAuthState always renders). Live at app.remoir.app deploy b2f3f17f. See decisions.md and lessonsClaude.md 10-05-2026; full diff in projectlog.md.
10-05-2026
Capture Live task 5 ✅ — Freek used the Capture App at a real event ("in the wild"). M1's core "frictionless input + raw data collection" thesis is validated against real use. Moving to task 6: verify provenance fields are correctly populated across capture paths (device capture, external import, manual enrichment).
09-05-2026 later still still
Calendar integration hardened against the three dominant PWA failure modes — backgrounded-app polling stalls (added visibilitychange/focus resume), reactive-only token refresh (added proactive 2-min-before-expiry refresh), and unbounded retry on the async GIS script loader (capped at 20 attempts, clean fallback to connect prompt with a console.warn). No schema changes. See decisions.md and lessonsClaude.md 09-05-2026.
09-05-2026 later still
Capture modes restructured to Photo / Person / Slide (Photo is the new default, Note removed). The colored type label below each tile is now a tap target — cycles photo → person → slide → photo, clearing subjectName on leave-Person. The + button is mode-aware: Photo mode opens the library picker, Person/Slide open the camera. Schema: migration 004 added 'photo' to the raw_inputs.type CHECK constraint ('note' retained for backward compatibility). See decisions.md 09-05-2026 (later still).

Six development tracks

Tracks are permanent parallel workstreams. They apply across the whole platform and never finish — they mature over time. A single milestone typically advances two or three tracks at once.

Capture

Making input as frictionless as possible. WhatsApp, email, Apple Shortcuts, free-form text, voice. The moment of capture is the highest-friction point and the most important to solve. If capture feels like work, nothing else matters.

Knowledge Graph

The structured collection layer. Objects, links, templates, Capacities (for Remoir Events), Supabase schemas (for Remoir Family). Where user value is created through organisation and retrieval.

Data Pipeline

The backend plumbing. Webhooks, automation (Make, n8n, custom), OCR, geocoding, storage, error handling. What moves data from capture to knowledge graph reliably.

Raw Data

Storing all inputs in their original unprocessed form with full metadata from day one. The foundation for AI parsing and the user's personal data asset. User-owned and controlled from the first line of code. Non-negotiable.

AI Enrichment

Parsing, tagging, linking, summarising using AI. Reduces manual effort. Eventually replaces structured input entirely with free-form natural language. Trained on the Raw Data track. m3 (AI Enrichment prototype, scoped 12-05-2026) lands first on this track — a lightweight Claude-API prototype over raw inputs that generates the empirical signal needed to scope m6 (AI Parsing, production-grade).

Sovereignty

User ownership and control of all data and metadata. Group governance. Selective sharing with commercial parties on user terms. Long-term vision — informs architecture decisions now without being built now. Includes the federated ownership layer (see vision/future-layers.md).