How to use Codex to build a newsletter archive
Simon Willison used Codex voice mode to build Django newsletter imports and searchable archives, then reviewed a pull request and corrected private-repo access.
Original prompt
Shared by the source author. See source notes for context.
The other thing is that I want them searchable, uh the Substack ones are not searchable,
Reach people exploring AI agents
See placements →What happened
Archive deployed on author's blog.
Reported by Simon Willison on BlogHow the agent did it
- Opened local checkout and development preview.
- Spoke model, migration, archive and import requirements while cooking.
- Codex built RSS/API/GitHub imports and opened a PR.
Where a person stepped in
Author reviewed PR, created private-repo API key, requested display/import changes and landed PR.
Simon Willison added a newsletter archive to his existing Django blog using Codex voice mode while cooking dinner. He first opened the local checkout, started its development server and displayed a browser preview. That gave his spoken requests a concrete page to refer to.
Codex created a newsletter model, database migration, admin configuration and public archive pages. Imports gathered recent Substack items through RSS, older items through an API, published monthly newsletters from GitHub and a private sponsors-only newsletter. Willison specified where the new content should appear: date archives could include it, while tags and the homepage should not. Archived monthly newsletters also needed search integration.
The feature still required keyboard work. After Codex opened a pull request, Willison reviewed the code and replaced a Git subprocess import with GitHub API access for the private repository. He supplied the necessary credential and requested display changes before landing the PR.
The archive went live, but Willison describes voice as useful for multitasking rather than his preferred interface for detailed edits.
Prompt
Original prompt
Source: Blog · Simon Willison
Frequently asked questions
What did Codex import?
Substack newsletters through RSS and an API, plus published and private monthly newsletters from GitHub repositories.
Why did the import need review?
One import used Git in a subprocess. Willison requested GitHub API access for the private repository and supplied a credential.
Did voice handle the whole release?
No. Willison switched to typed prompts for import and display corrections before landing the pull request.
More details
Remaining steps
- Replaced subprocess Git import with API import during review.
About this account
Codex created Django models, imports, views and templates from spoken requirements, researched import pagination and revised the implementation after review.
Primary first-person account opened and checked on 2026-10-14. Voice suited broad changes; detailed finishing used typed prompts. Outcomes and test claims are attributed to the source and were not independently reproduced. Original prompt excerpt: reproduced verbatim from the first-person account.
Credit: Simon Willison on Blog
Source published 9 Oct 2026
Source checked 14 Oct 2026
Tools and topics
Codex · ChatGPT desktop · Django · GitHub · Substack
Newsletters · Django · Voice coding
Editorial completeness: 100/100. Measures documented fields, not agent performance or verified outcomes.