← Writing

10 April 202612 min read

Building a Vanta competitor in 21 days with Claude Code

A precise account of how TraceLayer was built in three weeks using Claude Code as the primary development environment. Not a tutorial. A report from the field.

Agentic devClaude CodeCase studyLLM systems

The premise

Three weeks. One developer. A compliance automation SaaS with eleven framework integrations, 120+ data source connectors, a multi-agent LLM backend, and Stripe billing.

This is not a thought experiment. TraceLayer shipped. It has paying customers. It competes in demos against Drata and Vanta.

This post is an account of how it was built — specifically, how Claude Code changed what was possible in three weeks for a solo developer.

What Claude Code actually does

Claude Code is not a code autocomplete tool. It is closer to a second engineer who has read everything, forgets nothing within a session, and can hold an entire codebase in working memory while reasoning about a change.

The practical difference: with a traditional IDE and autocomplete, you are still the one holding the architecture in your head. You write the code; the IDE helps you write it faster. With Claude Code, you describe what you want to build, provide the relevant constraints, and the system produces implementations that are syntactically correct, semantically coherent, and consistent with the rest of the codebase.

This shifts the bottleneck from implementation to design. The question is no longer "how do I write this?" but "what exactly do I want?"

"The bottleneck moved from implementation to design. This sounds like an improvement. It is, but it requires a different discipline."

The 21-day build

Days 1–3: Architecture only, no code.

The agent graph was designed before the first function was written. Which agents needed to exist? What was their interface? What state did they share? What were the failure modes?

Claude Code contributed here through critique. I would describe a proposed architecture and the system would surface failure modes I had not considered, ask clarifying questions about edge cases, and suggest alternative approaches. This is different from code generation — it is design reasoning.

Days 4–10: Core agent logic and integrations.

This was the highest-velocity phase. The framework agents — each specialized for one compliance framework — followed a consistent pattern. I wrote the first one (SOC 2) in detail, then described the pattern to Claude Code and generated the remaining ten agents as variations. They were not identical — each needed framework-specific knowledge — but the structure was the same.

The 120+ integrations were the second major workload. AWS, GCP, Azure, GitHub, Jira, Okta, Slack — each integration needed an evidence collector that understood the specific API, knew which data points were relevant for compliance, and normalized output into the common evidence schema.

I wrote five integrations by hand, established the pattern, then used Claude Code to generate the remaining ones. Each generated integration required review and adjustment, but the starting point was correct enough that the review time was a fraction of the write-from-scratch time.

Days 11–15: Product layer.

The dashboard, the gap analysis report generator, the remediation guidance system. These are standard Next.js features, but the volume of components required would have taken three weeks on their own in a traditional workflow. With Claude Code, component scaffolding is near-instant; the time goes into making them correct and making them good.

Days 16–21: Billing, testing, and production hardening.

Stripe Checkout with usage-based billing. The billing system was built on day 16 and has never had an incident. The test suite covers the evidence normalization layer exhaustively — this was the one area where I wrote tests first and let Claude Code generate implementations to match them.

The productivity multiplier

Attempting to quantify the productivity gain is tempting but misleading. It is not the case that Claude Code made me three times faster. It is the case that Claude Code changed the feasibility frontier.

A solo developer cannot reasonably build and ship a compliance SaaS in three weeks without a tool that compresses the implementation layer. Complexity that would require a team to manage becomes manageable for one person when the implementation bottleneck is reduced.

The more accurate framing: Claude Code expanded the scope of what a solo developer can attempt seriously. The 21-day TraceLayer build was not three weeks of normal developer time compressed. It was work that would not have been attempted without the tool.

What went wrong

The first week was slower than it should have been. The architecture design phase — which should have been three days — extended because I was also learning to use Claude Code effectively.

Using Claude Code well requires discipline in how you describe tasks. Vague descriptions produce plausible but subtly wrong implementations. Precise descriptions — including constraints, edge cases, and what to avoid — produce implementations you can ship. This is a skill. It takes practice.

The second mistake: I did not establish the evidence normalization schema precisely enough before generating integrations. Several integrations required refactoring when the schema was clarified. The lesson: the data contracts between components deserve more time than the implementations of those components.

The bottom line

21 days. One developer. A production SaaS with paying customers.

Claude Code was the enabling factor. Not the only factor — domain knowledge, architectural discipline, and the ability to evaluate generated code critically are all necessary — but the enabling one.

This is not a workflow for teams that have solved their engineering velocity problems. It is a workflow for founders, solo builders, and contract developers who need to move faster than a team because they do not have one.

← All writingWork with me →