Why Was This Project Created in the First Place?
I used to do a lot of work for the prepress industry and was therefore constantly dealing with fonts, graphics, and PDF files. Decades ago, FreeHand, Illustrator, and Acrobat were among the tools I worked with, alongside my main occupation as a software developer.
PDF files had to be generated again and again. In recent years, this increasingly meant purchasing commercial licenses for appropriate software or libraries whenever standards-compliant documents had to be created.
At some point, I therefore asked myself: Why not develop a solution myself?
I have been interested in the technical foundations for a long time. Over the years, I have read older standards and books about PostScript, including Die PostScript- & PDF-Bibel. For this project, I also obtained current documentation, specifications, and drafts. Customers for whom this project was originally created purchased additional standards that were still missing — and some of these are anything but inexpensive.
Another motivation was something I kept hearing whenever the subject of AI came up:
"I tried that with AI before. Nothing useful comes out of it."
I wanted to prove otherwise.
With the support of Claude, I therefore built this project. So far, this has involved approximately 138 hours of my own time in front of the computer. During the same period, Claude worked for approximately 288 hours over 14 days — including times when I was not sitting in front of the computer myself.
The following token volumes were processed while working with Claude:
| Main Session | Subagents (266) | Total | |
|---|---|---|---|
| Input | 26,814 | 60,257 | 87,071 |
| Output | 9,512,741 | 1,760,798 | 11,273,539 |
| Cache Creation | 49,337,132 | 51,450,366 | 100,787,498 |
| Cache Hits | 4,316,519,144 | 1,854,820,557 | 6,171,339,701 |
| Total | 4,375,395,831 | 1,908,091,978 | 6,283,487,809 |
Claude estimates that developing the project without AI assistance would have required approximately 38 to 58 person-weeks, or roughly nine to fourteen months of full-time work.
A calculation based on the amount of code produced results in an even higher estimate. Assuming approximately 150 to 250 lines of finished and tested library code per working day, the project would represent around 300 to 500 working days — approximately one and a half to two and a half years.
I therefore consider one to two years of development time a realistic estimate for a single developer implementing a comparable project without AI assistance.
What Does This Project Show About Working With AI?
This project provides a good example of what AI can achieve in software development — and, just as importantly, what it cannot.
The project started practically from zero. Its technical foundation consists of standards, RFCs, specifications, and other sources that are also documented in the manual. The AI was given clear rules: do nothing illegal, conceal nothing, respect licenses, follow the relevant rules and standards, and document decisions and results.
In my experience, it is not enough to simply experiment with an AI for a while and ask it to generate some code. That approach is unlikely to produce a larger project that remains reliable and maintainable over time.
The key is to provide the AI with a clearly defined working environment.
For tclpdf, this environment now consists of a large number of Markdown files containing technical descriptions, architectural decisions, and binding requirements. These are supplemented by the relevant standards and specifications, as well as agents, hooks, and skills. There are explicit rules defining how code should be generated, which structures should be used, and which stylistic and technical requirements the code must follow.
Regular code reviews are equally important — both by the AI and by myself. I follow one simple rule:
I do not accept code that I do not understand myself.
Above all, the human developer still has to maintain an overview of the entire project, verify the results, identify errors, and deliberately guide the AI in the direction in which the project is supposed to evolve.
When working this way, AI can produce results that can actually be used in production.
On the other hand, if the person operating the AI neither knows how to program nor understands the subject matter, this approach will not work reliably. AI can take over a substantial amount of work and significantly accelerate development, but it does not replace domain knowledge or experience — and, most importantly, it does not replace the ability to judge the quality and correctness of its results.
Costs
In addition to the development time mentioned above, the direct costs of the project so far amount to approximately €1,480:
- €200 for one month of Claude Max 20x
- approximately €80 in additional usage charges that I incurred at the beginning before realizing that I had exceeded the included limits
- approximately €1,200 for the required standards and specifications
Compared with the estimated development effort of one to two years without AI assistance, these direct costs are relatively small. The much larger investment remains the developer's own time, technical knowledge, experience, and responsibility for verifying that the resulting implementation is actually correct.
One last thing, and it is the one I would tell anyone starting out: you have to check the AI constantly, because for the time being it suffers from dementia. It forgets what was decided an hour ago, it re-opens questions that were settled, and it will confidently rebuild something it already built — unless the project itself remembers for it. That is what the Markdown files, the rules, the hooks and the memory notes in this repository are for: they are not documentation of the work, they are the memory the AI does not have. And here is the part that is easy to miss, because it is one level up: the AI also forgets that this is its memory. It does not reach for those files on its own. It will answer from what happens to be in front of it, confidently, without ever noticing that the answer was written down somewhere three days ago — which is why this project has hooks that push the notes back in after every context loss, and why the reminder to read them has to be repeated by hand often enough to be tiresome. Writing things down is only half of it; making sure they are read again is the other half, and that half stays with the human. Everything that matters has to be written down at the moment it is decided, and everything the AI reports has to be measured again before it is believed. Do that, and it is a remarkable colleague. Skip it, and you get exactly the outcome the sceptics keep predicting.