The personalization graph.
Marble turns the first signal into a living knowledge graph — relationships, inferences, predictions — that powers Vivo, Video, Music, and your product.
Three primitives. One layer.
A personalization engine with a small, composable surface. Each primitive is the input to the next.
Graph
Every user becomes a structured graph of entities, attributes, and weighted relationships. Not a vector. Not a row in a database.
Inference
Marble surfaces what's implied — the connections your users haven't told you yet, derived from the structure of their preferences.
Prediction
Score any candidate — story, song, video, product — against the live graph in milliseconds. Re-rank, re-route, regenerate.
In, core, out.
We don't share the algorithm. We share what goes in, what comes out, and the shape of what's between.
Any interaction, any modality. Marble normalizes the stream into typed events.
A live, per-user knowledge graph that updates with every signal and answers every query in milliseconds.
Plug into your ranker, your video pipeline, your CRM, your generative model.
Cold-start in seconds, not weeks.
One graph spans every modality.
Every prediction comes with the path.
The user's graph stays the user's graph.
An afternoon, not a sprint.
A single endpoint. Send a signal, get a score, read the path. Everything else is just calling the API.
1import { Marble } from "@timesmarble/marble"; 2 3const marble = new Marble({ apiKey: process.env.MARBLE_KEY }); 4 5// 1. send a signal 6await marble.signal({ 7 userId: "u_42", 8 type: "play", 9 entity: {10 kind: "song",11 id: "song_abc",12 attrs: { genre: "post-rock", year: 2014 },13 },14});15 16// 2. score candidates against the live graph17const scored = await marble.score({18 userId: "u_42",19 candidates: nextUpQueue,20});21 22// 3. read the inference path (explainability)23const why = await marble.explain({24 userId: "u_42",25 candidateId: scored[0].id,26});Three products. One graph.
Each subdomain is a different surface of the same engine. The graph underneath is shared.
Vivo
Daily AI video briefings, personalized.
From a graph of your interests to a 60-second world update — delivered every morning.
Video
Personalized video at the moment of play.
Marble selects, sequences, and re-edits to fit the viewer. One pipeline, every audience.
Music
Recommendations built on a taste graph.
Beyond genre, beyond similarity — into the structure of what you actually listen for.