Brian Hung
Prism
The media backend behind YapGPT and other apps: it describes, embeds and searches any photo or video.
Ways in and out
one per media itema hash seen before is linked, not redoneScrapeWorkflowa whole profileIngestWorkflowone URL, text or fileENRICH_Quploads, fair per ownerTransformWorkflowdedup-check, describe, embedD1 · R2 · Vectorizemedia rows and enrichment JSONbytes by sha256, 1408-dim vectorsPOST /v1/searchsimilar, places_likeGET /v1/placespins for a mapPOST /v1/chatRAG over an ownerGET /v1/r/{url}LLM-ready text
Enriching one media item
not yet enrichedLoad and hashsha256, mime, EXIFdedup-checkhash enriched before?Already enrichedlink the run, stoppersist-bytesR2 key by sha256, media rowdescribeGemini, image or videoembedVertex, best effortpersist-segmentswindows: FTS rows, vectorspersist-enrichmentenrichment JSON, vectorresolve placesGPS, or agentic if askedEach box is a checkpointed step. Steps hand on R2 keys, never bytes.
Pinning a place
matches, each with a gatepins onlyAgentic resolvermodel searches PlacesExtract and geocodefallback, and non-imagesVideo placesbackfill-video-places.tsenrichments.placesgate: auto, review or hiddena pin is auto, with a locationplaces_ftssearch by wordssegment_placesmoments to windowsPLACE_VECTORSPOST /v1/places/indexGET /v1/placespins for a map
Finding places for an answer
vectorwordsthree rankingsRetrieved windowseach post's best firstThe questiontext and its vectorsegment_placesplaces in those windowsrankByMeaningreorders, never addsplaces_ftsname, address, what was saidFuse by rankRRF, keeps the top 40Attach to postsplus up to 8 posts that did not rank