Most professionals maintain the same information in multiple places.
A personal website. A resume. A curriculum vitae. A publication list. A LinkedIn profile.
Over time, they drift.
A new role gets added to a resume but not the website. A publication appears in one location but not another. Skills are updated in one document while older versions continue to circulate elsewhere.
The problem is not a lack of information. It is duplicate maintenance.
As engineers, we encounter this pattern constantly. Whenever the same information is manually maintained in multiple places, synchronization eventually fails.
Over the years, my professional history has grown to include industry experience, publications, presentations, open-source work, and various technical projects. Keeping all of those records consistent across different formats was becoming increasingly tedious.
I recently rebuilt my CV site at https://naokitanaka.phd with a simple goal:
I wanted my professional record to behave like a maintained system rather than a collection of manually synchronized documents.

The website, CV, and resume are generated from the same underlying professional record.
The Problem
My professional history currently needs to exist in three distinct forms, each serving a different audience.
The Website is the most complete version. It can contain full detail, supporting links, publications, presentations, and project information without worrying about page limits.
The Academic CV serves as a comprehensive historical record, preserving publications, presentations, awards, reviews, memberships, coursework, and other professional activities.
The Resume serves yet another audience. It needs to remain concise, industry-focused, and fit within a strict two-page limit.
Each representation is useful. None can simply replace the others.
The challenge is that maintaining them independently creates unnecessary work and virtually guarantees that they will eventually drift out of sync.
A Single Source of Truth
The approach I settled on was straightforward.
Instead of maintaining separate documents, I maintain the underlying information once in a structured source file.
Professional experience, education, skills, publications, presentations, awards, and other records are stored in a single place.
Everything else is derived from that source.
The website is generated from it.
The full CV is generated from it.
The two-page resume is generated from it.
Each output presents the same underlying information, but in a form appropriate for its audience.
The website can include complete detail.
The CV can remain comprehensive.
The resume can selectively emphasize the most relevant information while staying within its page constraints.
The important part is not the tooling. The important part is that the information itself exists in only one place.
Adding a publication, updating a role description, or correcting a date happens once.
Every derived view updates automatically.
Separating Content from Presentation
A second design goal was to keep professional information independent from presentation.
The underlying data contains no assumptions about how it will eventually be displayed.
A publication is a publication.
A role is a role.
An accomplishment is an accomplishment.
Whether that information appears as a responsive section on a website, a detailed entry in a CV, or a condensed bullet on a resume is determined by the presentation layer rather than embedded directly into the data itself.
This separation allows the appearance of the site, the layout of the resume, and the formatting of the CV to evolve independently without rewriting the underlying information.
The content remains stable even when the presentation changes.
Designing for Different Constraints
The most interesting challenge turned out not to be generating documents, but handling the conflicting constraints of the different outputs.
A website can grow indefinitely.
A CV can become quite long.
A resume cannot.
The resume has a strict physical budget of two pages.
That means the system cannot simply render everything and hope it fits.
Instead, the build process applies additional selection rules. The resume automatically limits itself to the most relevant experience entries, caps the number of bullets per role, and presents a condensed publication list. These rules ensure that the generated document remains within its intended scope without requiring manual editing every time new information is added.
The result is that the website can continue to grow while the resume remains concise.
Both are generated from the same underlying record.
Inverting the Identity Model
Working on the site also changed how I think about external platforms such as LinkedIn.
For many professionals, LinkedIn effectively becomes the authoritative record of their career history. Other documents are often created by manually copying information from it.
I wanted to invert that relationship.
Rather than treating a third-party platform as the source of truth, I wanted to maintain my own authoritative professional record and publish outward from there.
In that model, the website becomes the primary reference.
The CV is a derived view.
The resume is a derived view.
LinkedIn becomes another publication target.
External platforms remain useful, but they consume information rather than define it.
A Familiar Engineering Pattern
While building this system, I kept noticing the same pattern I use elsewhere in infrastructure work.
Whether it is identity management, DNS, CI/CD pipelines, or configuration management, the goal is often remarkably similar: maintain information once, then generate the views and artifacts that consumers actually need.
An identity directory maintains a single record of users and groups while exposing different permissions and views to different systems.
DNS maintains authoritative records while distributing them to many consumers.
CI/CD pipelines transform a single source repository into multiple deployable artifacts.
The recurring pattern is simple:
Maintain information once.
Generate multiple derived views.
Publish automatically.
The CV site simply applies the same idea to personal publishing.
The Result
The website, CV, and resume are no longer separate projects.
They are simply different views of the same professional record.
Today, adding a new publication, presentation, or role requires updating a single structured record and rebuilding the site. The website, CV, and resume stay synchronized automatically.
The immediate benefit is practical.
Updating my professional history now requires a single change rather than updating multiple independent documents.
The longer-term benefit is confidence.
The website, CV, and resume remain consistent because they are generated from the same underlying record.
More importantly, the maintenance burden scales much more slowly as the amount of information grows.
Ultimately, the goal was not just to build a new website or produce cleaner PDFs.
It was to create a sustainable system for managing professional records over time.
Like many infrastructure projects, the most successful outcome is that it quietly removes work that no longer needs to be done.