KEEPSMEDIA-NATIVE PRODUCT ANALYTICS
FIELD MANUAL — GENERATIVE MEDIA ANALYTICSASSET ANALYSIS 001A working record of what people create, choose, and reuse.
SUBJECT:
GENERATIVE MEDIA PRODUCTS
MEDIUM:
SERVER-SIDE EVENT CAPTURE
UNITS:
ASSETS · ACTIONS · EVIDENCE
IDENTITY:
EXACT ASSET REFERENCES
REV:
EARLY ACCESS
generation → assets → actions

Know what people make—and what they choose.

Keeps connects generation inputs, every output asset, exact product actions, customer annotations, and what the media itself contains. Compare models, workflows, and user cohorts with the evidence in view.

Python + TypeScript server SDKs · thumbnails only · fail-open capture
app.keeps.dev — product surface representative result
ANALYSIS / ACTION CONTENTWhat visual themes over-index among downloaded assets?example Postgres result · counts and evidence attached
storybook airship
storybook airshipshared
editorial portrait
editorial portraitdownloaded
product still life
product still liferemixed
PLATE I — REPRESENTATIVE EVIDENCE · REPOSITORY-OWNED DEMO MEDIASCALE 1:2.2
§ 01 · THE BLIND SPOTPROVIDER TELEMETRY VS PRODUCT EVIDENCE

Your provider knows what ran. It does not know what the media meant.

MEASURED BY PROVIDER LOGS

latency

request status

provider spend

ANSWERED BY KEEPS

what people created

which assets they acted on

which themes over-indexed

A generation request is only context. The useful unit is each output asset: the image, video, or audio that can be downloaded, remixed, approved, reported, or used as a source later.

Keeps records those observations once, enriches bounded thumbnails, and lets every analysis point back to counts and representative assets. It does not invent a universal quality score.

§ 02 · THE UNIT OF ANALYSISONE REQUEST · ZERO, ONE, OR MANY ASSETS

One generation can produce a whole contact sheet.

Every output gets its own stable external ID, timeline, media metadata, product actions, visual description, and vector. A click on one output never gets smeared across its siblings.

01GENERATIONmodel · input · workflow · user
02ASSETS × Nexact IDs · thumbnails · content
03ACTIONSyour product vocabulary, verbatim
§ 03 · METHOD OF OPERATIONTHREE MOVES · ONE PUBLIC SDK PATH

Capture the request. Register every asset. Track the action.

1 — REQUEST CONTEXT

The exact provider input stays together. Product annotations stay in properties.

const gen = keeps.generation({
  model, input, userId, sessionId,
  properties: { feature: "canvas" }
});
2 — FIRST-CLASS OUTPUTS

Register zero, one, or many outputs. URLs are fetch references, never identity.

gen.complete({ assets: [{
  externalId: "render_a", url,
  mediaType: "image"
}] });
3 — PRODUCT ACTIONS

Use the verbs your application already owns, attached to the exact asset.

keeps.track("downloaded", {
  asset: "render_a",
  userId, sessionId
});
§ 04 · CAPABILITIESTABLE I — WHAT THE RECORD CAN ANSWER
F-01

Browse the media, not only the requests.

Filter assets by time, model, action, workflow, user context, or semantic meaning. Open an asset for exact generation, sibling, source, and action context.

F-02

Search what the media contains.

Text and asset-neighbor search use multimodal embeddings. Identity still uses only a Keeps ID or stable customer external ID.

F-03

Compare content with product behavior.

Ask which themes over-index among downloads, how action rates differ by model, or what one user cohort creates—with denominators and examples.

F-04

Save questions, not frozen claims.

Notebooks keep an inspectable analysis plan and rerun it against current Postgres data whenever they open.

F-05

Give agents a narrow, documented surface.

CLI and MCP diagnostics share the same scoped APIs. No browser capture, provider wrappers, or arbitrary model-generated SQL.

§ 05 · SPECIFICATIONSBORING WHERE IT COUNTS

Built to observe without becoming part of the critical path.

HL-01

The SDK fails open.

Bounded queues, short timeouts, jittered retries, and a bounded flush. Capture failures never change customer generation behavior.

HL-02

Identity is exact.

Asset joins use a Keeps ID or one stable external ID. URLs, hashes, prompts, and vectors never guess identity.

HL-03

The evidence stays visible.

Semantic labels, comparisons, and charts are transparent query results. Full-resolution media remains customer-owned; Keeps stores thumbnails only.

START WITH ONE WORKSPACE

See what your product is actually producing.

Capture generations and actions today. Ask the first media-native question against your own rows.