Inspiration
Many of us spend hours trying to find that perfect track or podcast episode for the drive into work or back home.
Professionals value the podcast format for its ability to keep them ahead on markets, wary of trends, and rapidly exposed to the things they missed that may matter in that next meeting. Commercially available podcasts are generic or cover wide-ranging topics to attract a broader audience. As a result, decision paralysis plagues drive-time entertainment and we never end up finding an experience that completely fulfills our appetite. So we keep scrolling endlessly or settle.
Nomenclature is an agentic personal podcast where the listener dictates what topics are covered through a relationship built over text.
Meet the hosts: Jamie Ross, a veteran investment professional, and Adena Specter, a Gen-Z financial educator.
How Nomenclature works
A prospective listener doesn't discover the show as much as they make it.
To start, the listener texts "Hi" to (323)-870-9799 (not active yet for production use), then an agent responds and introduces himself as Jamie (the show's host). In 3 to 4 exchanges, Jamie's goal is to onboard the user over text by learning about what they do, what sectors, companies, people, etc. matter to them the most, when the best time to listen is for them, and how long each episode should be to fit into their day.
Once Jamie has a coherent idea of the listener, he schedules recording an episode that is delivered the next day. Jamie sends the listener a RSS feed link, which deep links into the user's default podcast app. Organizing the Nomenclature podcast within their existing podcast apparatus.
The next day, the listener receives a text from Jamie saying the newest episode covering the latest is live. The listener can listen to the episode hosted by Jamie and Adena on their native podcast app. Once they're done, they can fine tune the next episode and state explicit preferences and feedback over text to Jamie, which will be saved and incorporated for the next episode. Rinse and repeat.
Nomenclature is a daily service where its distribution strength stems from the fact that the listener doesn't need to install a new app, discover a new show, or grapple with adding a new thing to their day. It plugs right into their already existing routine and allows them the ability to personalize content however they prefer.
How I built it
Nomenclature is powered by Codex app-server. The Codex app-server runs in a stateless Cloudflare sandbox, which triggers starts when a text is received from the listener or from cron job invocation.
Inside the sandbox, the app-server has a workspace folder with a set of pre-defined tasks detailed in markdown files. When the sandbox is initiated, a one line start/steer turn request is passed in through to direct the Codex app server instance to start on a task.
The Codex app-server is equipped with the Exa MCP to source grounded information. And a handful of tools to complete tasks.
Tools:
- textMessage: allows app-server to reply to or text the listener
- completeOnboarding: marks the listener ready to receive new episodes
- createFeed: creates a RSS feed to house the listener's personalized episodes
- publishEpisode: ability to publish an episode after generating it
Tasks:
- onboard-user.md: instructions on what details to capture during the listener's onboarding
- produce-episode.md: directs the app-server to write an episode script based on the preferences captured
- generate-episode.md: sends a POST request to a TTS model to start audio generation
- publish-episode.md: finalizes by publishing the episode and making it available via RSS
For the audio generation, I leveraged Fish Audio's S2 Pro. Which allows for duplex text-to-speech generation given a script, a few voice cloning samples, and a transcript of those samples. This allows for a consistent voice and personality throughout the episodes. The TTS model is hosted on Modal and is accessed by the Codex app-server via API.
This implementation is completely serverless.
Challenges I ran into
A few challenges were experienced that weren't obvious.
1) I started with Codex non-interactive mode, but it proved a poor fit due its inability to steer during a task and the fact that it shuts down after its done disqualified it for production. When I thought all was lost, I found out about Codex app-server :)
2) The codex app-server writes a script that sounds like a word salad and needs to be taught how to write more engaging material. Part of this challenge stems from using gpt-5.6-luna, which is a strong instruction following model, but it is a poor fit when writing a script due to no fault of its own. It's just a small model. A potential immediate fix is to upgrade to terra or sol. Pending experimentation.
Accomplishments that we're proud of
I'm proud of the personalities, background stories, and character intents I developed for Jamie and Adena. Having a consistent backstory gives the podcast life and initiates potential for the listener to bond with these hosts.
What I learned
I learned about app-server. It seems to be a very useful general-purpose harness that will be widely touted in the next few months, I hope. It completely negates the need for me to write my own harness and tinker with prompts or tool definitions, app-server provides a launch pad for a rapid development experience. And fun too.
What's next for Nomenclature: Agentic Podcast
I'm planning on finishing up this MVP with cron scheduling and leveraging Twillio for production use.
I intend on reaching out to the ICP I built this for: professionals working in the finance industry. Specifically private equity associates and portfolio managers at small to mid size firms. Primarily through LinkedIn in my network. I went to the Kelley School of Business and a lot of my network is in the finance industry.
Then if I can prove that people like this in a specific niche I intend on expanding to other professionals like consultants in Democratic politics. Who tend to feel the need to stay informed at all times.
Built With
- cloudflare
- codex
- exa
- modal
- rss
- typescript

Log in or sign up for Devpost to join the conversation.