Why I rebuilt it
The first edgarasneverdauskas.com went up in 2021. It was a small Vue 2 site with landscape galleries, a menu of icons and an About page that began "Hello World!". Its git history is 20 commits between April and August 2021, and 16 of them are called "update" or "updated". Then nobody touched it for five years.
By 2026 it no longer said anything true about my work. So at 20:32 on Sunday 16 August I pasted a long brief into Claude. The first lines were plain: "This is a full rebuild, not a small redesign." The site had one job: to help me get senior engineering work. One section of the brief was headed "CONTENT ACCURACY" and began "This is critical." It listed what not to invent: revenue, traffic, users, dates, responsibilities. If something could not be verified, it should be left out or flagged.
That section turned out to be the real subject of the next five weeks. Building the site took an evening. Making it say only true things took most of the rest.
As with J.A.R.V.I.S. and CSS 3D Lab, I went back through the session logs and the full git history, so the numbers here are counted, not remembered. My own messages are quoted as I typed them, typos and all.
What the site is
A portfolio for a product engineer. Eight case studies under Selected work, each with what the product is, what I owned and what was hard. An Advisory section, "How I can help", for people who want a second opinion on a product. Experience, as a rail of three chapters. About, Contact, and a CV to download.
It is built with Next.js, React and TypeScript as a static export, hosted on GitHub Pages, with a light and a dark theme. It installs as an app on a phone. The desktop hero has a dotted globe with my location on it, and you can grab it and throw it.
The part I care about most is invisible. The CV, the share image and my LinkedIn cover are all generated from the same content file as the site. So a fact lives in one place, and changing it there changes it everywhere once the files are regenerated. The code is open source under AGPL-3.0; the words, the CV and the images stay mine.
How it happened
Sunday 16 August, evening: the rebuild. Claude Sonnet 5 read the old repository, scaffolded the new site and pushed the first commit at 20:56, 24 minutes after my first message. Then came my first round of small calls. I wanted navigation at the bottom on phones, like an app, and the site installable. I wanted the "EN." initials as a logo and favicon. I asked for a floating illustration in the hero, and at 22:06 asked for it to go: "it looks dumb". The dot in the logo became a square, and when it landed in the wrong place I wrote "ok you didnt udnerstand me". A light theme went in at 22:35. At 22:51 I switched the domain's DNS, and three minutes later the old Firebase hosting was gone from the repo. Eleven commits by 23:13.
Monday 17 August: logos, a globe and a second path. The morning was icons. The case logos came from the live products, and I asked for their borders and wrappers to go, so each logo sat the same size as the others. At 08:25 I asked Sonnet whether I should switch to Opus. It said this kind of work didn't need it. I switched at 09:02 anyway, and two minutes later asked for a spinning globe of dots in the empty right side of the hero, to say I work remotely. The first map was drawn by hand and "a bit off". Claude replaced it with real coastline data. The globe was mirrored at first, then fixed, with a blinking dot where I live. On phones it became a faded backdrop behind the text, and when I said it was too faint it went up to 32%.
At 10:07 I asked Claude to summarise the site so I could take it to another assistant, because I was thinking of a new direction. I came back at 10:40 with a handoff brief, and at 10:56 pasted a revised version. Its core line: evolve, do not redesign. The site would keep its look and gain a second path, advice for people building products. The Advisory section went live at 11:23. In the afternoon I sent a clarification of what it should mean. The services should come from problems worth thinking through, not from my tech stack. The rewrite also dropped a "format" field, because every value in it promised an engagement structure I had not decided on.
The CV was still a PDF I edited by hand. That afternoon Codex changed its profile paragraph for me. I asked whether the new text matched the rest. It didn't: the paragraph was 8.8pt Georgia, and the text around it was 9pt Noto Serif.
19 and 20 August: a new case, and a first check against a repo. I added the Self-Aware Writing case. The next evening I asked Claude to check it against the book's repository, which had moved on. My last note that night: the sentences in each point were now much longer than in the other cases. Then Claude's session limit hit, at 23:11.
Tuesday 1 September: the audit. I made one repository public and asked for its Source link. While checking how the others were linked, Claude found that a case's Source button pointed at a private repository, so every visitor got a 404. GitHub shows an owner their private repositories when signed in, so from my side the link worked.
That started a full audit. I asked which of my repositories should be public and got a list of twelve, with a reason for each. Then I asked for every claim on the site to be checked against the code it describes. One case claimed 120+ tests, and the repository has 75. Another listed no language at all, and never mentioned its smart contract. A third described a dashboard that had since grown an analytics layer.
Then I noticed a problem with myself. The work section was titled "Products I've built and shipped", and it included a DeFi ecosystem where, in my own words, "i was jsut part of it jsut a frotnend". So those two products moved to Experience, split into the two separate products they are, with their frontend-only scope stated plainly. A case that was only a boilerplate was dropped. An unfinished product came off the list until it ships. Dates stopped rotting: a case now says "Since 2022" instead of a range ending this year, which would read as abandoned every January. I didn't remember when one engagement started, so Claude checked the commit history instead of guessing. My location moved to Kampot, globe marker included.
At 18:42 the CV stopped being a hand-made PDF. npm run cv now renders it from the site's content file. The old PDF still said Phnom Penh, still merged two products into one, and its earliest date was 2022, under a summary claiming 10+ years. The generated one puts my earlier career back and shows eleven years on the page.
That night Claude also made the globe grabbable. It shipped at 23:50 with tests that passed. At 23:55 I wrote: "i am not able to itneract with the globe". A style meant for phones blocked the pointer on every screen size. The tests passed because the globe's idle spin alone satisfied them. Claude rewrote them so they fail against the broken version, and fixed it at 00:08.
Wednesday 2 September: one word, and a card that had drifted. I dropped "Senior" from my title. Doing it showed that the share image had its own hand-typed copy of my details, and it still said Phnom Penh. Now the share card reads my name, title and description from the content file, and says "Working globally" instead of a city. A picture file goes stale on the next move. Then I asked for a new LinkedIn cover, because the one ChatGPT had drawn had a poor globe. Claude wrote a script that renders the site's own globe at a single frame.
7 September: a page that broke the deploy. An audit offer for founders shipping with AI agents was committed at 14:45. None of my logs record who wrote it. The deploy failed on a lint error, and I sent Codex a screenshot. It found the problem, fixed it, committed at 15:00 and checked the deploy passed.
12 to 19 September: new cases, and one more drift. J.A.R.V.I.S. became the first case in Selected work. Its logo took four commits in eight minutes, until the triangle held on the light theme too. On 13 September Claude Fable 5.1 added it to the CV and trimmed every product to two lines, so the CV stays at two pages. I opened the CV and wrote "i dotn see the CV chagnes". Claude compared the file the site serves with the committed one. They matched byte for byte, so the old one was a cached copy in my browser. Then Experience was redesigned. Seven markers all ending in 2026 read as seven jobs at once. Now they are three chapters with the roles inside them, on the site and the CV alike.
At 03:47 on 19 September, CSS 3D Lab joined Selected work while the lab was still being built that night. It had 125 models then, and the case said 125. Seven hours later the lab had 135, and the case kept saying 125 for eight days, until I corrected it on 27 September while writing this.
Truthful over friendly, applied to my own site
"Truthful over friendly" is a rule I give Claude on every project now. When a number, a label or a status could either tell the truth or spare an awkward result, it tells the truth. It was easy to apply to an app. It was harder to apply to a page about myself, where every word is a small temptation.
On this site it turned into a few plain rules:
- A Source link only when the repository is public. And the check is made signed out. Signed in, my own GitHub view shows every repository, so the broken link was invisible to me.
- "Built and shipped" means built and shipped. Work I did inside someone else's product sits in Experience, with the scope stated.
- A date that stays true. "Since 2022" doesn't go stale. A range ending this year does.
- One source for every fact. The site, the CV, the share card and the LinkedIn cover read the same content file. But three of them are committed files, so an edit only reaches them when they are regenerated. That is its own trap. And the content file itself goes stale when a product moves on, which is what happened to the CSS 3D Lab count.
- A test proves what it claims. The globe tests proved only that something moved. They now fail against the broken build.
None of this was hard to build. Each rule came from finding something false that I had published.
What we got wrong
- The first hero illustration. It was removed 38 minutes after it went in.
- The globe's first map was hand-drawn and inaccurate, and the globe was mirrored.
- A Source link pointed at a private repository, so it showed a 404 to every visitor for 13 days.
- The work section claimed products I had only worked on.
- One case claimed 120+ tests. There are 75.
- The CV was a hand-edited PDF, so it drifted from the site: old city, merged products, missing years.
- The share image kept an old city in its own hand-typed copy of my details.
- The globe was made grabbable, the tests passed, and it still couldn't be grabbed.
- A new page was pushed with a lint error, so the deploy failed and it did not go live until the fix.
- The CSS 3D Lab case said 125 models for eight days after the lab reached 135.
Most of these were found the same way. I asked Claude to check what the site says against the thing it describes: a repository, a live product, a file on the server.
Who did what
Claude Code did the building. Claude Sonnet 5 ran the first evening and the next morning, 14 commits. Claude Opus 5 took over on 17 August and made 35. Claude Fable 5.1 made 3. In the sessions that were about this site, Claude replied 1,801 times and made 1,808 tool calls: 890 commands, 258 file edits and 385 actions in a browser. That was about 15 and a half hours of active work. No helper agents were used. Eleven of those commits were made from sessions about other projects, J.A.R.V.I.S., CSS 3D Lab and a dependency sweep, and those sessions are counted in their own stories, not here.
Codex had two short visits: about 21 minutes, 8 messages, 101 tool calls. It edited the CV's profile paragraph as a PDF, and fixed the lint error that broke the deploy. It made one commit.
ChatGPT had a hand too. It wrote the new CV profile wording that Codex applied, and it drew the first LinkedIn cover, the one with the poor globe. Those chats are not on disk, so ChatGPT is not counted here.

Five weeks, counted from git and the session logs: Claude Code, Codex and me, and how the site got to where it is.
Alt text · 458 characters
The portfolio rebuild by the numbers, 16 Aug – 19 Sep 2026: 55 commits in 2026 after 20 in 2021, 24 min from first message to first commit, 11 days with commits, and one content file behind the site, the CV, the share card and the LinkedIn cover. Claude Code: 52 commits (14 Sonnet 5, 35 Opus 5, 3 Fable 5.1), 1,801 replies, 1,808 tool calls, about 15½ hours. Codex: 8 messages, 101 tool calls, 1 commit. Me: 131 messages, typically 17 words, 16 screenshots.
My part was deciding. I sent 131 messages, and a typical one was 17 words. I sent 16 screenshots and stopped Claude twice. I decided what the site is for, and what it may claim. I said what looked wrong, from a mirrored globe to a sentence that ran too long. And I kept asking the question that found most of the mistakes: does this match the repository?
Two commits came from no Claude or Codex session on record: a small content update on 20 August and the audit page. Treat the numbers as a record, not a benchmark. The models worked on different days and different jobs.
What it cost
The site costs nothing to host beyond the domain. GitHub Pages hosts it, the domain was already mine, and I deleted the old Firebase project by hand that first night.
The cost was the subscriptions. In these sessions Claude's session limit hit three times: at 23:11 on 20 August, and at 18:08 and 23:38 on 1 September. The first of those two waits was 33 minutes. The last one was two. That allowance was shared with everything else I built those weeks, so I can't put a price on this site alone.
What I would tell someone starting
- Write down what not to claim before you write anything. My brief's accuracy section did more work than its design section.
- Check your site signed out. That is what your visitors see.
- Put every fact in one file. Then generate the CV, the share card and the cover from it, and regenerate them every time it changes.
- Say what you did, not what the team did. Scope stated plainly reads as more senior, not less.
- Prefer dates that don't expire. "Since" beats a range ending this year.
- Make a test fail before you trust it. A test that passes against the broken version proves nothing.
- Ask for an audit, not a redesign. Most of what was wrong was words, not layout.
In one paragraph
In five weeks, one person, Claude and a little Codex turned a 2021 photography site into a portfolio, an advisory page and a CV generated from the same facts, in 55 commits. The build took one evening. The rest went into making it true: a link that 404'd, a test count that was too high, a work section that claimed too much, a CV that had drifted, a globe that couldn't be grabbed. Claude wrote almost every line. What the site may say about me stayed my decision.
See it at edgarasneverdauskas.com. The code is open source under AGPL-3.0 at github.com/Evirtual/edgarasneverdauskas.com. Built with Claude Code, Claude Sonnet 5, Claude Opus 5 and Claude Fable 5.1, with two short visits from OpenAI Codex and some help from ChatGPT, which is not on disk and not counted.
