CO Catalogue Orchestrator ↗ github.com/barmoshe/catalogue-orchestrator

Local-first · domain-agnostic · open source

The AI plans the edit.
The compiler renders it.

Point Catalogue Orchestrator at a folder of media and an intent. It indexes everything into rich cards, retrieves the right moments with RAG, and an AI authors a schema-validated Edit Decision List — which a deterministic ffmpeg compiler turns into a finished MP4.

Runs with no API keys Two modes · one engine

The problem

Every media pipeline is a one-off.

You can hand-build a bespoke render pipeline for one job. But there is no generic engine that takes an arbitrary catalogue of media plus an intent and produces a finished cut. Catalogue Orchestrator is that engine: retrieval-driven, catalogue-first, domain-agnostic.

01

Catalogue-first

The unit of value is an indexed library of rich cards, not a single input file. A flat filename list is not a catalogue.

02

Retrieval-driven

What goes into a cut is selected by RAG, not hard-coded by a template. Domain-agnostic falls out of this.

03

Local-first

Heavy ingest and render run on your machine. No upload requirement, no hosted vector DB, no accounts.

The rule that makes it work

AI proposes. The compiler disposes.

The single most important boundary in the system. It keeps output reproducible and the model's mistakes bounded.

The AI side

Emits only a validated EDL

The model never writes ffmpeg. It authors one structured Edit Decision List, validated with zod on the way out. If validation fails, it is re-prompted with the error, never hand-patched.

The deterministic side

Owns 100% of ffmpeg

One compiler turns any valid EDL into arg arrays and renders the MP4. Pure and unit-tested, so the same EDL always yields the same cut. No hallucinated filtergraphs.

The pipeline

Six stages, one vertical engine.

Ingest and index are shared. Only retrieval and the orchestrator's prompt switch per mode.

Ingest
Probe → cards
ffprobe, scene-detect, frame captions, transcript, signals
Index
Embed
segments into a local vector store (LanceDB)
Retrieve
Hybrid RAG
semantic + keyword + structured filters
Orchestrate
Author EDL
Claude plans a schema-validated edit
Compile
Auto-cut
deterministic ffmpeg → MP4
Refine
Preview
accept or regenerate with feedback

The contract

One structured artifact: the EDL.

It is the only thing the model produces and the only thing the compiler consumes — validated in both directions.

// the AI authors this — nothing else
EDL = {
  title: "...", mode: "highlights" | "assembly",
  target: { aspect: "9:16", width: 1080, height: 1920, fps: 30 },
  clips: [{
    segmentId: "<must exist in the catalogue>",
    sourceIn: 4.2, sourceOut: 9.0,
    layout: "fit" | "fill" | "blurpad",
    captions: [{ text: "...", startSec: 0, endSec: 2.5 }]
  }],
  rationale: "why these clips, in this order"
}

Two modes, one engine

Highlights and assembly share everything.

Mode A

Long-form → highlights

Ingest one long recording, score the salient moments, and auto-cut the best of them into short vertical clips that land on coherent beats.

recording → segment → rank → cut → 9:16 clips
Mode B

Brief → assembled reel

A text brief plus a catalogue. RAG retrieves the relevant assets across the library, the orchestrator orders them, and the compiler assembles a finished reel.

brief → retrieve → order → assemble → reel

They differ only in the orchestrator's planning prompt and which retrieval runs. One codebase, not two.

No keys required

The whole pipeline runs offline.

Every AI seam sits behind an interface with a deterministic local implementation: hashed embeddings, stub captions, a heuristic planner. With no keys, the engine still ingests, retrieves, plans, and renders a real MP4 — in CI and offline.

local tier · default

Deterministic, no network

Runs the full catalogue → cut loop with zero accounts. Perfect for tests, demos, and an offline machine.

real tier · drop in a key

Whisper · vision · Claude

Add keys to .env and the same interfaces swap to real transcription, captions, embeddings, and EDL authoring. No code change.

Built on

A small, sharp local stack.

Next 16
React 19 · TypeScript · Electron desktop shell
ffmpeg
bundled static binaries · deterministic compiler
LanceDB
embedded local vector store · hybrid RAG
zod
schema-validated AI output, both directions

See the engine.

catalogue + intent → AI-planned EDL → deterministic ffmpeg cut · built by Bar Moshe