Keel

Overview

Founding designer at a pre-seed CI/CD startup. I joined with no brand, no product, and a flow decision I'd later have to reverse, and learned to defend my thinking before shipping it.

Services

Product Design

Product Design

Year

2026

What Monk CI is, and what I had to learn

What Monk CI is, and what I had to learn

When engineers push code, automated checks run to confirm nothing broke. Those checks run on machines called runners, and they cost time and money. Monk CI builds fast runners and a dashboard for the teams using them: developers watch which checks failed and why, managers watch speed and cost.


I had never worked in this domain. Before I designed a screen, I had to learn what a run is, what failure looks like, and how developers live inside GitHub. I read docs, watched competitor walkthroughs, and worked through the system with the founder until I understood it well enough to design for it. And well enough to catch a problem the team had missed.

When engineers push code, automated checks run to confirm nothing broke. Those checks run on machines called runners, and they cost time and money. Monk CI builds fast runners and a dashboard for the teams using them: developers watch which checks failed and why, managers watch speed and cost.


I had never worked in this domain. Before I designed a screen, I had to learn what a run is, what failure looks like, and how developers live inside GitHub. I read docs, watched competitor walkthroughs, and worked through the system with the founder until I understood it well enough to design for it. And well enough to catch a problem the team had missed.

When engineers push code, automated checks run to confirm nothing broke. Those checks run on machines called runners, and they cost time and money. Monk CI builds fast runners and a dashboard for the teams using them: developers watch which checks failed and why, managers watch speed and cost.


I had never worked in this domain. Before I designed a screen, I had to learn what a run is, what failure looks like, and how developers live inside GitHub. I read docs, watched competitor walkthroughs, and worked through the system with the founder until I understood it well enough to design for it. And well enough to catch a problem the team had missed.

The decision that taught me the rest

The decision that taught me the rest

The first flow connected your GitHub account, had you create a project, then connect your org from inside it. I argued the org was in the wrong place. Repos, permissions, and runner options all come from the org, so putting it last meant building an empty project until you connected the thing it should have been built on. I was right, but couldn't yet make the reason legible, so it shipped that way and we reversed it weeks later. A decision is only as good as your ability to defend it.

The first flow connected your GitHub account, had you create a project, then connect your org from inside it. I argued the org was in the wrong place. Repos, permissions, and runner options all come from the org, so putting it last meant building an empty project until you connected the thing it should have been built on. I was right, but couldn't yet make the reason legible, so it shipped that way and we reversed it weeks later. A decision is only as good as your ability to defend it.

The first flow connected your GitHub account, had you create a project, then connect your org from inside it. I argued the org was in the wrong place. Repos, permissions, and runner options all come from the org, so putting it last meant building an empty project until you connected the thing it should have been built on. I was right, but couldn't yet make the reason legible, so it shipped that way and we reversed it weeks later. A decision is only as good as your ability to defend it.

Why the org had to come first

Why the org had to come first

The org is Monk CI's source of truth. Repos sync from it, permissions inherit from it, runner options unlock from it. A project connected to nothing is a project that can do nothing, which is exactly what the old order produced. Connect the org first, and the project inherits everything the moment it exists.

The org is Monk CI's source of truth. Repos sync from it, permissions inherit from it, runner options unlock from it. A project connected to nothing is a project that can do nothing, which is exactly what the old order produced. Connect the org first, and the project inherits everything the moment it exists.

The org is Monk CI's source of truth. Repos sync from it, permissions inherit from it, runner options unlock from it. A project connected to nothing is a project that can do nothing, which is exactly what the old order produced. Connect the org first, and the project inherits everything the moment it exists.

Brand, before the product existed

Brand, before the product existed

The founder needed a site for an investor meeting within days, so I started with the brand. Logo, color, type: Instrument Sans for display, Geist for body and interface, a green built to feel fast without being cold. I planned Lottie animations for the feature sections; free-plan limits forced a fallback to SVG. The site shipped on time. The launch video was built in After Effects but never released, because the launch kept slipping.

The founder needed a site for an investor meeting within days, so I started with the brand. Logo, color, type: Instrument Sans for display, Geist for body and interface, a green built to feel fast without being cold. I planned Lottie animations for the feature sections; free-plan limits forced a fallback to SVG. The site shipped on time. The launch video was built in After Effects but never released, because the launch kept slipping.

The founder needed a site for an investor meeting within days, so I started with the brand. Logo, color, type: Instrument Sans for display, Geist for body and interface, a green built to feel fast without being cold. I planned Lottie animations for the feature sections; free-plan limits forced a fallback to SVG. The site shipped on time. The launch video was built in After Effects but never released, because the launch kept slipping.

A dashboard for two people who want different things

A dashboard for two people who want different things

Developers live in Run History and Cache. Managers live in Analytics and Billing. Every screen had to answer three questions: where am I, what is this page for, what do I do first. Three decisions show how I defended the rest.

Developers live in Run History and Cache. Managers live in Analytics and Billing. Every screen had to answer three questions: where am I, what is this page for, what do I do first. Three decisions show how I defended the rest.

  • Defended by page-job

Analytics started as five charts at equal weight showing current numbers. I rebuilt it around one question: is this failing more than usual? Run History has no concept of normal. Analytics is entirely about deviation from it. Failure rate became the hero, total time moved to Billing, and every chart earned its place against that single job.

Analytics started as five charts at equal weight showing current numbers. I rebuilt it around one question: is this failing more than usual? Run History has no concept of normal. Analytics is entirely about deviation from it. Failure rate became the hero, total time moved to Billing, and every chart earned its place against that single job.

  • Defended by reference

I confirmed which fields a cache entry should show by checking GitHub Actions docs, Blacksmith, and Depot, and cut the ones no user makes a decision from. Version was the clearest cut: an internal integrity hash that lives in the database, not in anyone's mental model. The same check killed a left-border status accent on Run History, no CI tool in the set uses it.

I confirmed which fields a cache entry should show by checking GitHub Actions docs, Blacksmith, and Depot, and cut the ones no user makes a decision from. Version was the clearest cut: an internal integrity hash that lives in the database, not in anyone's mental model. The same check killed a left-border status accent on Run History, no CI tool in the set uses it.

  • Defended by arithmetic

8vCPU runners are 40% of minutes but 57% of spend, because they cost double per minute. That inversion is why the cost story lives in Billing, not Analytics: it is the only place in the product where minutes resolve into money. Every figure reconciles, repo and runner spend both sum to $3,628.

8vCPU runners are 40% of minutes but 57% of spend, because they cost double per minute. That inversion is why the cost story lives in Billing, not Analytics: it is the only place in the product where minutes resolve into money. Every figure reconciles, repo and runner spend both sum to $3,628.

What I would do differently

What I would do differently

A defensible decision is one whose reasoning is portable: a constraint, a reference, or arithmetic. The defense stays the same. What changes is the decision itself. The onboarding flow would have survived if I had defended it that way the first time. That is the habit I left with.

A defensible decision is one whose reasoning is portable: a constraint, a reference, or arithmetic. The defense stays the same. What changes is the decision itself. The onboarding flow would have survived if I had defended it that way the first time. That is the habit I left with.

Also built

Also built

Pitch deck, sales deck, LinkedIn outreach automation, and the docs infrastructure. I introduced Fumadocs and prototyped the base the team adopted.

Pitch deck, sales deck, LinkedIn outreach automation, and the docs infrastructure. I introduced Fumadocs and prototyped the base the team adopted.

Got a hard problem? Let's figure it out together.

Copy component

Copied

madebyhx@gmail.com

Harshit Singh

© 2026 Harshit.

Got a hard problem? Let's figure it out together.

Copy component

Copied

madebyhx@gmail.com

Harshit Singh

© 2026 Harshit.

Got a hard problem? Let's figure it out together.

Copy component

Copied

madebyhx@gmail.com

Harshit Singh

© 2026 Harshit.

Create a free website with Framer, the website builder loved by startups, designers and agencies.