Inspiration
Most video feeds optimize for one more click, not for the limited time and attention a viewer has right now. I built Curator OS to turn a real goal into a small, intentional viewing session instead of another infinite feed.
What it does
A user describes what they want to learn or explore, then chooses a mode, language, recency window, and time budget. GPT-5.6 turns that intent into a concise session thesis and a bounded set of search queries, each with a visible reason.
Curator OS keeps control in deterministic code. It sanitizes queries, reapplies hard exclusions, down-ranks fatigued topics, limits recall, rejects irrelevant candidates before saving, and stops honestly when bounded search cannot find a good result. Leaving the goal blank preserves the original discovery flow with no planner call.
How I built it
Before Build Week, Curator OS already had explicit preferences, evidence-aware video analysis, deterministic scoring, a finite queue, feedback, and diagnostics. During Build Week, I added the goal-driven Discover flow: GPT-5.6 session planning, visible thesis and query reasons, English and Simplified Chinese states, deterministic pre-persistence relevance checks, and bounded recall for niche searches.
The app uses Next.js, React, TypeScript, Zod, Prisma, PostgreSQL, Tailwind CSS, and the YouTube Data API. A dedicated OpenAI Responses API call uses GPT-5.6 for structured session planning, while GPT-5.6 Terra handles evidence-aware video analysis. Safety, relevance, ranking, duplicate suppression, and fallback behavior remain code-owned.
I used Codex through Raft.build to audit the existing system, implement the extension in gated slices, generate regression coverage, compare models, inspect failure paths, and support independent recommendation-quality and release QA. Humans reviewed and approved every gate.
Challenges I ran into
The hardest problem was improving recall without drifting away from the user's goal. An early Arctic-trip dogfood run returned zero or unrelated candidates. Broad retries could fill a page with plausible but irrelevant videos, so I designed a bounded ladder: planned queries first, one concise retry, one disclosed one-year check when needed, then an honest empty state.
I also added phrase-aware English and Chinese exclusions, meaningful goal-anchor matching, duplicate-retry suppression, and pre-persistence relevance checks. At the same time, I protected the original blank-goal behavior, kept provider failures calm and bounded, and maintained a responsive hierarchy in both languages.
Accomplishments that I am proud of
The submitted build passes 364 automated tests, TypeScript checks, Prisma validation, and a 22-route production build. It includes real English and Chinese dogfood evidence, responsive mobile QA, explainable query reasons, deterministic safety boundaries, a public MIT-licensed repository, and a narrated two-minute demo built around an authentic product interaction.
I am especially proud that the final system does not hide uncertainty: it shows the plan, records the searches actually used, and returns an honest empty state instead of padding the session with unrelated videos.
What I learned
The most useful AI boundary was: let the model propose intent, but let deterministic software decide what is safe, relevant, bounded, and persistent. Visible plans and reasons make model behavior easier to trust and debug. Independent dogfood and failure-path review also caught issues that happy-path tests did not.
What's next for Curator OS
Next, I would carry the planned session thesis into stored queues, expand controlled evaluation cases, improve provider-dependent language and transcript coverage, and add authenticated, rate-limited hosted access. I will keep improving recall without weakening relevance, transparency, or user control.
Demo: https://youtu.be/_tBL2nDKyEc
Public repository: https://github.com/julimi/mi-curator
Built With
- codex
- data
- gpt-5.6
- next.js
- openai-api
- postgresql
- prisma
- react
- tailwind-css
- typescript
- vitest
- youtube
- zod
Log in or sign up for Devpost to join the conversation.