Inspiration

I started BookGuide because I kept running into the same problem while reading The Count of Monte Cristo. Some passages depended on historical or cultural context I did not have, while others described rooms and places in so much detail that I struggled to picture them.

Searching online broke the rhythm of reading and sometimes revealed spoilers. I did not want an AI to summarize the book or read it for me. I wanted something that could quietly help me understand the page I was already on.

What it does

BookGuide is a native iPhone reader for difficult books and classics.

Important passages can contain short, precomputed annotations that explain historical references, unfamiliar terms, or details the reader might otherwise miss. If the explanation is not enough, the reader can use Ask More to receive a focused answer directly inside the book.

The flagship feature is Visualize Scene. A reader can select descriptive prose and turn it into an illustration based only on that passage and everything they have read before it. Finished scenes can be saved to a personal gallery and reopened alongside their source passages.

Both explanations and images are designed to be spoiler-safe.

How I built it

The iOS application is written in SwiftUI. It includes onboarding, a private-library interface, the reading experience, inline annotations, Ask More, scene generation, credits, and a gallery for saved illustrations.

The backend is a NestJS service deployed on Railway. Each book is prepared as a trusted bundle with stable paragraph IDs, reading positions, and precomputed annotations.

When the reader asks a question, the app sends the selected paragraph and current reading position. The server removes every paragraph that appears later in the book before calling GPT-5.6. This means future events are absent from the model’s context instead of relying only on a prompt that says “do not spoil anything.”

Scene generation uses the same bounded context. GPT-5.6 first converts the passage into a structured scene brief containing the setting, characters, composition, lighting, known details, unknown details, evidence IDs, and exclusions. The server validates that brief before GPT Image 2 creates the final illustration.

I used Codex throughout Build Week as an engineering and design collaborator. We began with a rough interface and explored an engraved, nineteenth-century fox as the product’s visual identity. After seeing that direction in mockups and motion experiments, I decided it did not fit the experience I wanted. We changed direction completely and built BookGuide as an ancient, luxurious portable library.

Codex helped turn those decisions into SwiftUI, implement the backend pipeline, debug navigation and persistence problems, write tests, and repeatedly refine the reading and visualization experiences.

Challenges

The biggest challenge was spoiler safety. A prompt alone was not enough, so I had to make it part of the system’s architecture through position-based context filtering and evidence validation.

Scene generation also introduced difficult state-management problems. A generation can take time, so the reader must be able to return to the book while it continues. The result then needs to persist, appear in the gallery, and reopen without starting the generation process again.

The visual design was another major challenge. It was easy to make the app feel like a generic AI reader with decorative styling. Reaching the private-library direction required removing ideas that were not working and treating typography, spacing, book covers, loading states, and transitions as parts of one experience.

What I learned

I learned that AI can improve reading without replacing it. The most useful assistance is often small, contextual, and available without pulling the reader away from the book.

I also learned that reliable generative features need more than clever prompts. Restricting the available evidence, producing an intermediate structured representation, validating it, and preserving state were just as important as the model call itself.

Finally, working with Codex showed me that it is most valuable as an iterative collaborator. It accelerated implementation, but the project improved most when I kept reviewing the result, rejecting directions that did not feel right, and making the final product decisions myself.

Built With

Share this project:

Updates