Skip to content

Process

How I built this site

This portfolio is a piece of work in its own right. I designed it and built it in code with AI, and it is still in progress.

The site is the proof

A portfolio is a product with one job: let someone judge the work, fast. I design AI products, so the site has an assistant in it, it is built in code, and it holds itself to the standards I hold the products I ship.

Rules before prompts

I started in Figma and Paper, then wrote the rules down: a DESIGN.md with the tokens, type and spacing, and one content file with every fact I am allowed to claim. Claude Code builds against both, so it works inside my system instead of inventing one.

app/globals.css
--color-ink: #f4f4f5;
/* Both greys clear WCAG AAA (7:1) on every dark ground the site
   uses: muted is 11.2:1 on the page and 7.2:1 on the strongest
   hover wash, faint is 9.4:1 on the page and 7.4:1 on surface-2.
   Don't darken either, they carry small text. */
--color-ink-muted: #b9bebc;
--color-ink-faint: #a7afab;

Designed in the real thing

Most of the design happened in the browser. I reviewed every change on a laptop and a phone, then pushed it further or threw it out. Here is Home at each turn.

  1. Sept 2026First version: a pixel-art hero of Dubai, with greetings in five languages floating over it.
    The first version of Home: a pixelated Burj Khalifa in pink and teal, with greetings in Arabic, English and Bengali floating over it.
  2. Late SeptA hiring-manager review. I cut every claim the work could not back up, and gave each case a thirty-second read.
  3. OctRebuilt around a left rail, like documentation, so every case is one click away.
    Home in October: the same artwork hero, now with a left navigation rail listing every case study.
  4. Early NovHome, the nav and the case pages reworked, and the site went dark only.
    Home in early November: the rail regrouped into Selected work and Before AI, with a short bio over the artwork.
  5. NovBojji arrived, Home became his landing, and a light mode went in.
    Home now: a headline reading Explore Vrishti's design work, four project cards, and Bojji asleep on the chat bar.

Bojji

Bojji is my real cat, a lynx-point Siamese. On the site he is the way in: ask him about the work instead of hunting through pages.

Every frame is generated from code on a 41 by 45 pixel grid. His answers are scripted from facts already on the site, so he cannot make anything up. A live model comes next, held to the same facts.

  • AsleepCurled up on the chat bar on Home
  • WakingThe first click or keystroke
  • IdleSitting on every other page
  • WavingWhen you hover on him
  • TypingWhile you type a question
  • ThinkingBefore the answer arrives
  • TalkingWhile he answers
  • ListeningBetween turns
{{TODO: Bojji's design iterations from Paper and Figma, as screenshots}}

Easy to use, on purpose

Home fits on one screen. Each project leads with its impact. One button copies my email. There is no contact form, no splash screen and nothing that hijacks the scroll.

No slop

Both themes meet WCAG AAA contrast. These are the site's own colours, with the ratios worked out from the same values the CSS uses.

A script also reads every built page before it ships. It fails the build on an em dash or a placeholder number, and a missing fact shows up as a visible gap rather than something made up.

Dark mode

  • Body text19.1:1AAA
  • Secondary text11.2:1AAA
  • Labels9.4:1AAA
  • Labels on the nav rail7.8:1AAA
  • Links and accents11.9:1AAA
  • Bojji's chat bubble15.0:1AAA

Light mode

  • Body text17.7:1AAA
  • Secondary text9.6:1AAA
  • Labels8.6:1AAA
  • Labels on the nav rail7.8:1AAA
  • Links and accents12.5:1AAA
  • Bojji's chat bubble15.0:1AAA
npm run build
check-content: 12 pages, 0 errors, 52 open markers.

Still in progress

This is not the final version. I am still building it, and this page will change with it.