Schbang · AI Software Engineer · Nov 2025 to May 2026
Finding the right brand photo by describing it
Visual search and on-brand content for an agency’s brand teams. Describe the asset you need in plain English and AssetMind finds it by what it looks like, not what it is called. Each brand has its own workspace, library and rule for what AI may change.
The problem
Brand teams dig through nested Drive folders for the right photo, and a name like IMG_4832 says nothing about what is in it. Once the photo is found, every client has different rules about what can be done to it.
What I built
- Plain-English visual search: Gemini multimodal embeddings, query rewriting with a small LLM, a fast recall on 768-dimension vectors then a precise pass on the full 3072, Cohere reranking with an LLM fallback, and MMR so the top results are not near-duplicates.
- Each search step, and the model’s reasoning about the query, streams to the browser over SSE. A search assistant can also split a creative brief into several searches and check the candidates with a vision model.
- Ingestion in an ARQ worker: Google Drive sync on push notifications, drag-and-drop upload, thumbnails, perceptual-hash dedup, and a caption, tags, OCR text and colour palette for every asset so keyword search works too.
- Per-brand workspaces with members and roles, sign-in through Logto, and an admin page.
- The Concept Engine: agents that draft a month of content ideas from a brand’s pillars, then expand one into a production brief.
- The image side of the Creative Studio: a brand kit learned from approved creatives, image generation that follows the brand’s asset policy, a region editor that changes only the masked area, and logo and disclaimer rules proposed from past work and placed without a model once approved.
- The Docker images and per-service deployment guides for Dokploy.
Two clients, two rules
A luxury hotel group with 14 properties. Each property is its own workspace, its photo library loaded in bulk from folders, so the team can find a property photo by describing it. The group runs on the strict policy, which is the default: photos are never recoloured, cropped or given a new background, and AI may only add text, a logo and the layout around them. The policy goes into every prompt the Creative Studio writes, and logos and disclaimers are composited by plain code, so the same rules give the same result every time.
A national FMCG food brand. The flexible policy was shaped around this brand. Product shots must come from the real library and stay true to the product, while backgrounds and scenes can be generated. Prompts go bolder on setting, light and atmosphere, but the product in the frame is the real one.
What changed
A brand team can find an asset by describing it instead of browsing folders, and a post generated for a client follows that client’s rule about what AI may touch.