Summary: SafeStream is the UGC gate: an upload is one row. Audio comes off the file. Whisper writes a transcript. Gemini (or a small UDF) flags language. Frames at 1 fps get visual labels. A parent UDF folds both into risk_level. You do not buy a mystery NSFW API and a review queue as two vendors. You declare the graph. pip install pixeltable.
The Product#
- Ingest a creator clip with
upload_id - Speech path: extract audio → transcribe → flag the text
- Vision path: 1 fps frames with a short visual label
- One parent column:
ok/review/high
The kitchen-sink tutorial is video intelligence — frames plus audio, not a risk rollup. If you need a real ordered aggregate across frames, that pattern is PixelGolf UDA aggregation. This post’s fold is a UDF on the parent, not a fake classifier name.
The Stitch You Delete#
Object store. A speech job. A vision job. A spreadsheet of scores you reconcile in ops. Pixeltable is the video, the transcript, the frame labels, and the fold. Insert the MP4. The gate follows.
The Receipt#
risk_level is the parent fold: transcript flags plus a video-level visual summary. Frames is the audit trail — one label per sampled second — not a second vendor. A UDF that greps high / review is honest about what it is. Ordered sport metrics across frames are PixelGolf. Same app.py on Cloud: db → schema → service.
What This Is Not#
Not a hosted trust-and-safety suite. Not a named NSFW model we do not ship. Not legal advice. Your policy text goes in the prompts; the catalog stores the evidence. Human review still exists — that is the review bucket.
People Also Ask#
Why not aggregate frame labels into the parent? Cross-table rollup is the PixelGolf post. SafeStream keeps the fold as a UDF on signals the parent already has, plus a view you can inspect.
Can I swap Gemini for a local UDF? Yes. Keep the column names. Change the function.
How do I go to Cloud? Same file. PIXELTABLE_API_KEY, pxt://org:db, then pxt db update → pxt schema update → pxt service update.
Two Signals, One Gate#
Declare the upload. Extract audio. Label frames. Fold the risk. Keep the evidence. Delete the mystery API.
- Pixeltable on GitHub:
pip install pixeltable - ClipFinder — NL video moments
- CallSense — sales-call auditor
- DocuVision — PDF Q&A
- SnapCatalog — shop-the-look
- ClaimBot — claims triage
- PixelGolf UDA aggregation — when the fold must be an ordered aggregate
- Pixeltable documentation



