Four weeks · 4 chapters

A book that knows you're reading it

It started as a boast that you could build an app with just a phone. ChatGPT, Codex and Claude turned it into a book.

Dark cover. On the left, the book-and-eye logo and the title "A book that knows you're reading it", above the line "ChatGPT, Codex and Claude, counted from the logs." On the right, a screenshot of selfawarewriting.com: a sidebar lists Chapters One to Four, with Chapter Five locked, beside the opening page of Chapter One, "You Are Here".

Self-Aware Writing, Chapter One, as it reads today. Image and book: Edgaras Neverdauskas.

Download
Alt text · 338 characters

Dark cover. On the left, the book-and-eye logo and the title "A book that knows you're reading it", above the line "ChatGPT, Codex and Claude, counted from the logs." On the right, a screenshot of selfawarewriting.com: a sidebar lists Chapters One to Four, with Chapter Five locked, beside the opening page of Chapter One, "You Are Here".

One afternoon in August I told my girlfriend that you no longer need a computer to make an app. A phone is enough. Then I had to prove it. I opened ChatGPT on my phone and asked for a book. Not an app about books: a book that talks about itself, and about you, while you read it. That afternoon it was live on the web, and it has been growing ever since.

This is the honest account of how it got there. As with J.A.R.V.I.S., I went back through the session logs and the full git history, so the numbers are counted, not remembered. One part could not be counted: the ChatGPT conversation on my phone is not stored on my PC. For that part the evidence is what ChatGPT left behind in git.

What Self-Aware Writing is

A free web book at selfawarewriting.com, published a chapter at a time. The narrator is the book itself. It talks about the act of reading while it happens: where your attention is, the page you just turned, what you remember, what you expect next.

"You are now reading the first paragraph of this book," it begins. In Chapter Two it asks you not to scroll back up. If you do, it says: "You went back. I specifically asked you not to."

Four chapters are published: You Are Here, A Moment Ago, Not Yet and Still Here. A fifth, Says Who?, sits locked in the list of chapters. The book may never end, so its last chapter is always one that doesn't exist yet.

It installs as an app, works offline, remembers the page you stopped on, and keeps all of that in your browser. There are no accounts, no tracking and no analytics.

How it happened

Wednesday 19 August, afternoon: the phone. The GitHub repository was created at 15:33. The first commit landed two minutes later: a single HTML page holding Chapter One. A stylesheet and a small script followed within a minute. Over the next three and a half hours ChatGPT made 40 commits. Each one changed exactly one file, and each reached GitHub within a second of being made, often a few seconds after the last. That is what a chat assistant writing through GitHub's connector looks like.

By 19:09 the book had a favicon, a social card, a sitemap, a 404 page, an offline mode, an install button, a two-panel design for desktop, and Chapter Two, A Moment Ago. The very first script already contained the line "You came back. I noticed."

The boast held. The deploy did not, at first: the first build failed because GitHub Pages wasn't switched on yet. A re-run twelve minutes later worked, and the site has deployed cleanly ever since.

Wednesday evening: the computer. Three minutes after ChatGPT's last commit I opened Claude Code on my PC. My first message explained that I had started with ChatGPT, and that its version didn't quite match the desktop design I wanted. I asked whether the project needed a proper framework, "maybe next js but not sure if necessary".

We chose Astro with TypeScript. Chapters became plain Markdown files, and everything else is derived from them: the chapter list, the URLs, the page dots, the sitemap. Adding a chapter means adding one file. The rebuild was merged at 20:41, together with ChatGPT's last three commits, which my local copy had missed. The logo came out of the rebuild wrong, and I asked for the old one back: "no the logo still bad, ok revert".

Thursday 20 August: the busiest day. I sent 47 messages in about seven hours. Most of the day went into one question: is the book telling the truth?

A book that makes claims about its reader can be checked by that reader. Chapter One announced what "the third sentence" would do, and it was the wrong sentence. It counted the letters in "breathing" and got eight. It made jokes about the reader having bought the book, but, as I put it, "it is not on sale it is website". Each of these was fixed. Then the countable claims became a script, check-book, that runs on every push. It checks that the letter counts are right, that a line promised for the first page really is on the first page, and that Chapter Two quotes Chapter One word for word.

In the afternoon I added a choice between paged and continuous reading. I changed my mind about the default twice in twelve minutes. Continuous won. In the evening came browser tests that read the book the way a reader would.

At 22:12 Claude drafted Chapter Three, Not Yet. The brief came from the book itself: Chapter Two ends by pointing at the future and refusing to go there. Claude also named the next chapter, Still Here, and added a check that the book always ends on a chapter that is locked and empty. I had asked it earlier not to commit before I liked something, so the chapter waited for my read. It was committed at 22:35 and live a few minutes later. At 23:19 I told Codex I had hit my Claude Code usage limit.

Friday 21 August: the morning after. Claude and I started early, with the phone layout. After a chapter change the page navigation dropped below the screen, because the reading area was a fixed box that couldn't scroll. Then the book turned out to be set entirely in italics: when we self-hosted the fonts, the italic file was saved under the roman's name. Nothing failed, so nothing warned us. We also wrote a LinkedIn post, with about 10,000 tokens left before my Claude limit.

In between, I asked Codex how the book knows how far you have read, and what happens if you clear your browser. That became a small feature, finished in Claude: every chapter has a tick, grey until you've read it all and gold once you have, with a ring around it showing how far in you are.

1 and 2 September: the icon. I wanted the tab icon to lose the plate behind it. I stopped Claude halfway: "you messed up the logo itself and i only need the background change so revert everything". The second try was right.

7 September: the editor. I finished reading the book as a reader and liked it. So I asked Codex, now on GPT-6, to read all three chapters and discuss the writing style. For twenty minutes we went back and forth. It suggested restructuring the paragraphs, and I said no: "it felt conversational". It split a passage in two, and I said the break came too quickly. Then: "i actually dont know what to do what would you suggest?"

Where we landed: the book was built "for us as an experiment anyway and it worked, just need some polishing". Codex tightened all three chapters and added small optional choices, so the reader can answer the book in every chapter, not only in Chapter Two. It hit its own usage limit mid-task. The change still reached the book at 16:58 and was live by 17:03.

8 September: Chapter Four. At 22:30 I wrote one sentence: it is time for the fourth chapter, with the fifth still locked. Six minutes later Codex had published Still Here: seven pages, with a reader choice and a test of its own. It also rewrote the end of Chapter Three to lead into it, and added Says Who? as the next locked chapter.

12 and 15 September: polish. A coffee link for anyone who wants to support the book. Then a small evening of fixes: a button that covered the page number on phones, scrollbars that looked fine on a Mac and bad on Windows, and a copyright year that said 2025. I also removed two things. The install button went, because browsers offer that on their own. So did "You came back. I noticed.", the line that had been in the book since its first hour. I decided it was unnecessary.

The rule about what a book may claim

The most useful idea in the project is written in its README. A book that tells you what is on your screen has to be right on every screen. Two traps:

  • Don't point at the furniture. The chapter list is a sidebar on a wide window and a closed drawer on a phone. "One line below this one" is false for half the readers, so the book names the thing, not where it sits.
  • Don't rely on a page being hidden. Paged reading hides what you haven't reached. Continuous reading shows everything, so "you cannot see what comes next" is only sometimes true.

The script catches what can be counted. These two need a person reading the book on real screens.

What we got wrong

  • The book claimed things about itself that weren't true: the wrong "third sentence" and a nine-letter word counted as eight.
  • It assumed the reader had paid for it. It is free.
  • The whole book was set in italics because two font files had swapped names.
  • The first draft of Chapter Three said flatly that there is no Chapter Four. We had just decided the book would keep going, so the line never shipped.
  • On phones, switching chapters pushed the page navigation off the screen.
  • On phones, the button for scrolling back to the top covered the page number.
  • Chapter Three said Chapter Four was "one line below this one, with a small lock on it". On a phone the chapter list is a closed drawer, so there was nothing below. It now says "in the list of chapters".

Who did what

ChatGPT (on the phone) made the first version: 40 commits in three and a half hours, 1,719 lines added. It wrote Chapters One and Two, set up hosting on GitHub Pages, and made the book work offline. By 17:30 its README said it was live at selfawarewriting.com. I can't count its messages. Its conversation is in my ChatGPT account, not on my PC.

Claude Code did most of the engineering: 30 commits and 5,916 lines added. That covers the Astro rebuild, the book checks, the reading modes, the browser tests, the fonts and the icon. It also wrote Chapter Three. Across the logged sessions I sent 124 messages and 28 screenshots, and Claude replied 1,386 times with 1,411 tool calls: 577 commands, 321 file edits and 403 actions in a browser. That was about 14 hours of active work. Every logged reply came from Claude Opus 5. The three commits of 12 September came from sessions these counts don't include, and two of them were made by Claude Fable 5.1.

Codex was the editor and the second writer. I sent it 31 messages, and it made 118 tool calls and 2 commits. It tightened Chapters One to Three, added the reader choices, wrote Chapter Four and drafted a LinkedIn post. It used GPT-5.6 in August and GPT-6 in September.

Self-Aware Writing by the numbers, 19 Aug to 15 Sep 2026: 4 chapters published, 72 commits, 192 browser tests. ChatGPT, on the phone: 40 commits, the first version and Chapters One and Two. Claude Code: 30 commits, about 14 active hours, 1,411 tool calls, most of the code and Chapter Three. Codex: 2 commits, about 2.7 active hours, edited Chapters One to Three and wrote Chapter Four. Me: 154 counted messages, typically 18 words, and 32 screenshots.

Four weeks, counted from git and the session logs: ChatGPT, Claude Code, Codex and me, side by side.

Download
Alt text · 452 characters

Self-Aware Writing by the numbers, 19 Aug to 15 Sep 2026: 4 chapters published, 72 commits, 192 browser tests. ChatGPT, on the phone: 40 commits, the first version and Chapters One and Two. Claude Code: 30 commits, about 14 active hours, 1,411 tool calls, most of the code and Chapter Three. Codex: 2 commits, about 2.7 active hours, edited Chapters One to Three and wrote Chapter Four. Me: 154 counted messages, typically 18 words, and 32 screenshots.

So the writing was mostly OpenAI's: ChatGPT wrote the first two chapters, and Codex wrote the fourth and edited the three before it. Claude wrote one chapter, the third. The code was mostly Claude's, once ChatGPT had laid down the first version.

My part was the same as with JARVIS: deciding. 154 counted messages, a typical one 18 words long, plus the ChatGPT chat. I read the book as a reader, noticed what felt wrong, and said no. I changed my mind often, and the logs show it.

Treat the numbers as a record, not a benchmark. The three tools worked on different days, on different jobs, and log their work differently.

What it cost

The book costs nothing to host: GitHub Pages serves it for free. The cost was in the subscriptions, and both ran out at the wrong moment. On my busiest day I hit Claude Code's limit and finished the evening in Codex. Codex's limit hit in the middle of publishing the edited chapters, and the change went out anyway.

What I would tell someone starting

  • A phone really is enough to start. A first version, live on its own domain, in one afternoon.
  • Move to a computer when the work gets technical. Tests, frameworks and browsers on three devices are easier where you can see them.
  • You don't have to pick one tool. In my case the OpenAI models did most of the writing and Claude most of the engineering, and the repository held it all together.
  • Anything a book says about its reader should be true. If it can be counted, make it a check.
  • Read your own work as a user. The best fixes came from reading the book, not from reviewing it.
  • Don't commit before you like it. Especially when the thing is writing.
  • It's fine not to know. "What would you suggest?" was one of my most useful messages.

In one paragraph

It began as a boast to my girlfriend and a chat on my phone, and one afternoon later it was a live book. Four weeks, three AI tools, about 17 counted hours at a computer plus that first afternoon, and 72 commits later, it is a four-chapter book that works offline, checks its own claims and waits for its fifth chapter. The tools wrote almost every word and every line. What they couldn't do was read it the way I did, and decide what it should be.

Read it at selfawarewriting.com. Built with ChatGPT, OpenAI Codex, Claude Code, Claude Opus 5 and Claude Fable 5.1.