Capture
The entry point of knowledge into DARXI, and the only bounded context that can be run end to end today.
Capture is the entry point of knowledge into DARXI. Its responsibility is single: turn external inputs into knowledge objects and publish events. It does not decide, reason, plan, or execute.
It does not matter what gets shared —a video, a thread, a document, a loose idea written at 3am—. There are no “videos” and no “articles”: everything ends up being the same kind of thing.
What separates it from a summarizer is the second question. A summarizer answers what is this about. Capture also answers why did this arrive here: it analyzes the content plus the message that came with it, the project it points at, and what already exists on the subject. That accompanying sentence is the first thing any conventional system throws away.
Six stages, in this order. Each stores its output as an artifact with language and producer declared, so the next run can reuse it instead of paying for it again.
- metadataThe URL is resolved and whatever the platform declares about the content is read.
- captionsHuman captions are looked for first. They beat any automatic transcript, and they are free.
- transcriptIf no usable captions exist, the audio gets transcribed. It is the most expensive stage of the run.
- transcript_esIf the text is not in the user’s language, it gets translated. The decision uses the declared language, not a guess.
- knowledgeThe text becomes a summary, key ideas, and tags, always through the Router. No part of the code names a model.
- dashboardThe card shows up in the Inbox from the first state and fills in as you watch.
Capture is the input shape; the product the user actually uses is the Inbox. The card appears instantly, empty, and fills itself in: it starts paying off from the first second instead of waiting to be complete.
The state is not a technical label: it is the promise in progress. “Transcribing” means “I am listening to the video for you”, and the Inbox says it in those terms.
Every stage stores its output as an artifact with its language and producer declared. The next run reuses them instead of paying for them again — but only if they still apply.
That check matters more than it looks. A transcript stored in Arabic is not reusable for a video declaring itself in English, and without the check the system translated the wrong text and stored it as if it were right. The defect existed, was reproduced, and was closed.
The hierarchy is by quality, not convenience: human captions first, then platform-generated ones, and audio transcription only last. Every choice is recorded with the score that produced it, so it can be argued about later.
Audio transcription runs locally. It is the slowest stage and the only one that scales with video length, which is why this version’s scope is limited to short pieces and measured rather than assumed.
The sprint comes from the git record, not from a constant written here: this page cannot keep announcing one the tree has already left behind.
- Merged sprint
- S4.2
- measured on · today
- Services
- 3
- measured on · today
- Migrations
- 5
- measured on · today
- Commits
- 21
- measured on · today
Said before anyone asks. A product that shows only what works does not inform: it forces you to discover the rest by surprise.
- Two weeks of real use without writing code. It is the only phase that answers the MVP’s question, and it has not happened.
- The latest translation and hierarchy sprint is not merged. Three rounds of independent review declared it unmergeable, each closing what it was asked to and breaking something new.
- Capture’s ADRs are still proposed, unsigned. Under them, this version is a product-validation instrument, not the bounded context: its code is disposable by design, and if it works, the product gets rewritten on DARXI’s architecture.
- All knowledge depends on the Router, whose authorization posture changes on its own. The endpoint actually used gets checked before each start, never the health one.