brightspark.bonsung.me, design

Why

Bonsung is applying for an AI Led Software Engineer role through BrightSpark Recruitment. In that role most of the code is written by AI agents, and the engineer's value is in framing the problem, specifying the work, deciding when it is ready and proving the result is correct. His cover letter explains how he works that way: work starts from a written spec, checks that give the same answer every time keep the agents within bounds, hooks stop them committing straight onto main, and nothing reaches production until he merges it. A letter can only claim that. This site shows it.

The site does two things. It is the digital version of his CV. It shows how he works with coding agents, step by step, on the work that built the site itself. Each step comes with one real thing from that build, such as a rule the agents follow, a problem a review caught, or a decision an agent wrote down.

Goals

Non-goals

Anti-goals (a failure even if it works)

Decisions

  1. Show the agent workflow by building this site with it.

  2. The workflow as a showcase. The page closes with How this page was built: the rules the work rests on, then the workflow in seven steps, each with one real piece of evidence from building this site, kept short enough to read in full.

  3. The site is the digital CV. The CV's text is on the page. The cover letter points to the site as the digital CV that also shows how he works with agents.

  4. The working documents are published. The spec, the plan, the agents' rules and the lessons are pages of the site.

  5. The hero's look: the hero's light slate background and ink text, a medium-weight headline with tight line spacing, the role line in teal, and a teal button. The dark slate serves the showcase and the footer.

  6. Hero copy, a play on the role's title. The role is AI Led Software Engineer. The hero reads:

    Kia ora, AI-led code. Engineer-led AI. Bonsung Koo AI Led Software Engineer Hire (a button)

    The headline turns the title around: the agents lead the code, and an engineer leads the agents. His name sits on its own line above the role line, and the role line is the title as written. Nothing moves. Hire is a teal button that opens an email to developer@bonsung.me. The share card shows the same hero, his name above the role line too, and the link's description is its greeting and headline together.

  7. A plain footer with his name and contact links.

  8. Address brightspark.bonsung.me.

  9. The tab shows a BK monogram, drawn in code for this site.

  10. Each section shows how it was built, beside it. On a wide screen a column on the left holds the rules and the seven step titles and, level with each CV section, that section's card: what happened at each of the seven steps while that section was built, faded where nothing did. The cards are written from the build record and kept true by tests. On a phone each CV section ends with the same card, closed, and the rules and the seven steps stay after Education.

Look

Token Value Use here
ink #0f172a body text, headings on light bands
hero #e8eef5 hero background
mist #f1f5f9 the rail, light sections
line #e2e8f0 rules and borders
paper #f8fafc alternate light sections
white #ffffff cards, white sections
slate #1e293b the showcase
night #0f172a footer
fog #e2e8f0 text on slate
snow #f8fafc titles on slate
teal #0f766e the Hire button, links, the role line

The page, top to bottom

  1. Hero (Decision 6).
  2. Introduction: the CV summary, in his own first-person words.
  3. Key strengths: the CV's five strengths, which hold the claims about agent-driven work that this site sets out to prove.
  4. Experience: airie, Shopl and Company, PJ FACTORY, with the CV's job titles and dates. airie is always lowercase.
  5. Projects: Sentinel, with its two public links.
  6. Education.
  7. How this page was built: the showcase (below).
  8. Footer: his name, GitHub and an email address.

On a wide screen the rail (below) sits beside sections 1 to 6.

The text of sections 2 to 6 is the CV's text. It is not rewritten for the site.

How this page was built

A dark slate section after Education. It opens with one line:

How I work with coding agents, shown on the page you are reading.

Then the rules, numbered 0 under a small caption, Before every session, since they are in place from the start of every agent session rather than a step of their own. Then seven numbered steps. The rules and each step have a title, one sentence, and one short piece of evidence set apart from the text, under a small label naming where it comes from.

Refined, not exhaustive. The showcase is meant to be read in full, so it shows one clear piece of evidence per step. The full spec and plan are one link away for a reader who wants them.

The showcase's Read the rules, Read the spec, Read the plan and Read the lessons open the rules, the spec, the plan and the list of lessons from the top.

Every word in the Title, Says, Label and Evidence columns is the page's copy, as written. Typographic quotation marks and apostrophes on the page are fine. Code names (main, docs/spec.md) are set as code.

# Title Says Label Evidence Checked against
0 Keep the rules in the repository. Hooks stop the agents committing or pushing to main, and merging. The agent hook "Agents never merge pull requests. Bonsung merges." Read the rules (a link) the agent hook's own output for a merge command
1 Agree the spec first. I talk each change through with the agent until we agree a written spec. From AGENTS.md "A change to what the page does starts as a change to docs/spec.md." Read the spec (a link) the line in AGENTS.md
2 Plan small tasks, with their tests. Each task names its tests before any code exists, and Context7 keeps the plan on current library documentation. From the plan "every experience line is the CV's text" Read the plan (a link) the test name in the CV's task in docs/plan.md and in the content tests
3 One agent builds, another reviews. A fresh agent checks each task against the spec. From a review A review found the CV check would still pass a bullet cut in half. Each section is now also checked against the PDF's length, and deliberate cuts fail. the length check in tests/cv.test.ts
4 Write down judgement calls. Each one records what was decided, why, and what it costs if wrong. From the decision log White on teal reaches about 5.5 to 1, so every colour pair meets the stricter contrast rule and no exception for large text was kept. TEXT_PAIRS in src/content/theme.ts holds white on teal, and no large-text list exists
5 Checks decide, and I merge. Every pull request passes checks that give the same answer every time, and only I merge into main. On every pull request Build, test, lint, typecheck, history the job names in the CI workflow
6 Review the whole at the end. A more capable model reviews the finished site at once. From the final review It found a card describing a judgement call that was never made. That step now says None needed. the Key Strengths card's quiet step 4 in docs/spec.md
7 Write down what was learnt. Compound Engineering writes the lessons from solved problems into docs/solutions/, where the agents look when they plan. From docs/solutions Tests that could not fail Read the lessons (a link) the title of that file in docs/solutions/

The rail

On screens 1024 px wide and wider, a light slate column, the rail, runs down the left of the page and scrolls with it. It is 26rem wide, and its steps are set at the size of the CV's body text, with each card's title one step larger. It holds two things.

On narrower screens there is no rail. Each CV section ends with a closed How this section was built that opens to the same card. The showcase itself stays after Education on every screen.

A keyboard reader meets a Skip to the CV link first, so the rail's links never stand between them and the CV. The footer lines up with the CV beside the rail.

The cards' copy is written from the build record when the rail is built, and kept here, one table per card, word for word. A step marked quiet is one where nothing happened for that section, and it is shown faded.

Hero

# Step What happened Quiet
1 Spec “Hero copy, a play on the role's title.”
2 Plan Task 3, with the Hire button writes to developer@bonsung.me named first
3 Built and reviewed The review found a contrast test that checked an empty list, so it could never fail. The list and the test were removed.
4 Judgement call The icon is built once with the site, since the static export refuses an icon made on request.
5 Checks and merge Pull request #2, five checks passed, merged by me.
6 Final review It found no name on the first screen. The name now sits above the role line.
7 Lesson Tests that could not fail

Introduction

# Step What happened Quiet
1 Spec “the CV summary, in his own first-person words”
2 Plan Task 4, with the introduction is the CV summary named first
3 Built and reviewed The review found a shortened introduction would still pass. Its length is now checked against the PDF.
4 Judgement call None needed. quiet
5 Checks and merge Pull request #3, five checks passed, merged by me.
6 Final review It found step 4 described a rule, not a decision. It now says None needed.
7 Lesson A CV check that passed cut and added text

Key Strengths & Achievements

# Step What happened Quiet
1 Spec “the CV's five strengths, which hold the claims about agent-driven work”
2 Plan Task 4, with every key strength is the CV's text named first
3 Built and reviewed The review found the last strength could be cut short and still pass. Each section's length now has to match the PDF.
4 Judgement call None needed. quiet
5 Checks and merge Pull request #3, five checks passed, merged by me.
6 Final review It found step 4 described a decision that was never made. It now says None needed.
7 Lesson A CV check that passed cut and added text

Work Experience

# Step What happened Quiet
1 Spec “airie, Shopl and Company, PJ FACTORY, with the CV's job titles and dates”
2 Plan Task 4, with every experience line is the CV's text named first
3 Built and reviewed The review found a bullet cut in half would still pass. The check now also measures each section against the PDF.
4 Judgement call The PDF lists some job headings after Education, so Work Experience, Selected Projects and Education are measured together.
5 Checks and merge Pull request #3, five checks passed, merged by me.
6 Final review It added an unmarked sentence here and every test still passed. Each section's whole text is now compared with the PDF.
7 Lesson A CV check that passed cut and added text

Selected Projects

# Step What happened Quiet
1 Spec “Sentinel, with its two public links”
2 Plan Task 4, with every project line is the CV's text and every external link is on the allowed list
3 Built and reviewed The review noted its links are checked against the allowed list, not against their link text.
4 Judgement call None needed. quiet
5 Checks and merge Pull request #3, five checks passed, merged by me.
6 Final review It found step 3 made the review sound fuller than it was. It now says what the review noted.
7 Lesson A CV check that passed cut and added text

Education

# Step What happened Quiet
1 Spec “The text of sections 2 to 6 is the CV's text.”
2 Plan Task 4, with every education line is the CV's text named first
3 Built and reviewed The review found a dropped entry would still pass. The number of lines is now counted too.
4 Judgement call None needed. quiet
5 Checks and merge Pull request #3, five checks passed, merged by me.
6 Final review Nothing for this section. quiet
7 Lesson A CV check that passed cut and added text

The published documents (/built)

Plain pages in the site's style, reached from the links on the page, not from the main navigation. Each page's header links back to the page, then to the rules, the spec, the plan and the lessons, in the order the showcase gives them.

How the repository works

The repository uses the workflow the letter describes.

Checks

At least these, run in CI and locally:

Deploy

Verification before the link is shared

  1. CI is green on main.
  2. https://brightspark.bonsung.me opens in a real browser with a valid certificate.
  3. The showcase reads well on a desktop and a phone width, and its links open the rules, the spec, the plan and the list of lessons.
  4. Nothing in the hero moves.
  5. The share card shows when the link is pasted into a chat or a social site.
  6. On a desktop each card sits beside its section and shows all seven steps. On a phone the rail is gone and each section's note opens.

Out of scope

A contact form, a blog, other languages, a CMS, a CV download, and any page other than this one and its published documents.