✓ Human-authored analysis; AI used for formatting and proofreading.
I'm a solo technical founder. No funding. The product I built competes with companies that have raised $100M+ and employ hundreds of engineers.
I don't compete on features or speed. I compete on architecture, structural decisions made before the first line of code that determine whether the product needs 50 engineers to maintain or one.
The methodology that produced those decisions is 80 years old. It's called TRIZ. The Theory of Inventive Problem Solving was developed by Genrikh Altshuller starting in 1946 from analyzing 40,000 patents. Extended by Darrell Mann into modern systems engineering. Used by Boeing, Samsung, Intel, and Procter & Gamble.
It was never applied to startup product architecture. Until now.
Here are the 11 steps. Each one is a TRIZ law applied as a startup decision. Together they produced a 1,030-line kernel that does what competitors need 11 components, a dashboard, an agent fleet, and a control plane to do.
Step 1: Define the ideal product before building it
TRIZ Law: Increasing Degree of Ideality
The ideal system performs its function while the system itself approaches non-existence. Maximum function, minimum mechanism.
Before writing code, define what the product would look like if it didn't exist but its function was still performed. Walk every parameter to zero:
- Mass → 0 (no infrastructure to deploy)
- Cost → 0 (no licensing, minimal compute)
- Energy → 0 (no idle state — runs and exits)
- Human involvement → 0 (declare intent once, system enforces)
- Harmful side effects → 0 (no new attack surface, no new failure mode)
- Useful function → ∞ (scales by adding data, not mechanism)
Then name the traps. The decisions that DECREASE ideality by adding mechanism:
| Trap | Why it kills ideality |
|---|---|
| Building a dashboard | You now maintain a web app. That's a second product. |
| Running a persistent service | You now operate infrastructure. That's a third product. |
| Requiring credentials | Your product can itself be compromised. That's a new risk. |
| Installing agents on customer hosts | Your agent is now the largest blast radius in their environment. |
| Building a plugin system | You now maintain an API, versioning, and a marketplace. |
Name the traps before you start. Every trap you avoid is a team you don't need to hire.
My result: Single static binary. No daemon, agent, dashboard, credentials or persistent state. Runs in milliseconds of CI compute. Doesn't exist between invocations. The product approaches non-existence. The function persists.
Step 2: Find the subsystem under pressure
TRIZ Law: Non-Uniform Evolution of Subsystems
Different subsystems evolve at different speeds. Innovation should target the lagging subsystem. The one under maximum tension. Improving the already-evolved parts wastes effort.
Map your market's subsystems and their evolution rates:
| Subsystem | Evolution rate | State |
|---|---|---|
| Mature subsystems | Already evolved | Dozens of competitors, commoditized |
| Lagging subsystem | Under-evolved, high tension | Nobody's there. Maximum pain. |
Every competitor in my market invested in the mature subsystems such as better dashboards, more compliance frameworks, runtime detection. These are commoditized. Adding features to commoditized subsystems produces incremental improvements that every competitor matches within a quarter.
The lagging subsystem is how security intent is declared, evaluated, and composed before deployment. The architectural gap lives in this space between them. Nobody evolves it because it requires structural change, not feature additions.
My result: Ignored dashboards, agents, and runtime monitoring. Invested everything in the lagging subsystem: declarative invariants, deterministic evaluation, compound composition.
Step 3: Operate one level above your competitors
TRIZ Law: Transition to a Higher-Level System
Innovation moves from the component level to the integration level. When failures originate in the INTERACTIONS between components rather than in any single component, the solution operates one level above.
Every competitor in my market checks attributes on individual resources: "is this bucket encrypted?" "does this role have admin?" These are component-level checks.
The breaches that happen are composition-level: three individually-correct settings that compose into a catastrophe. No component-level tool catches them. Because the danger exists in the INTERACTION, not in any individual setting.
My result: 585 compound chains that compose individual checks into multi-resource attack path assertions. The product operates one level above scanners. It finds what scanners structurally cannot.
Step 4: Question which side absorbs the complexity
TRIZ Law: Dynamization (and its inversion)
When a static thing collides with a dynamic environment, make the static thing dynamic. BUT: question WHICH thing should be static and which should be dynamic.
Every competitor made their controls dynamic, eg., continuous scanning, runtime agents, real-time detection. This produced non-determinism: same infrastructure, different results on different days.
I tried the same approach (a Kubernetes-style reconciliation loop). It was too complex. I cut it for the MVP. The resulting architecture has static controls and dynamic observations. It was accidentally better in every dimension: deterministic, reproducible, composable, provable.
The lesson for founders: the constraint that blocks the textbook path might be the signal that the inversion is correct. Don't assume the obvious architecture is right. The thing you couldn't build might be the thing you shouldn't build.
My result: Static invariants (YAML) evaluated against dynamic snapshots (JSON). Same input, same output, every time. The reconciliation loop I couldn't build was the reconciliation loop I didn't need.
Step 5: Be finer inside, coarser outside
TRIZ Law: Transition to the Micro-Level
Systems evolve toward finer internal mechanisms with coarser external interfaces. The user states macro intent. The system enforces micro detail.
The opposite of ship the MVP. An MVP is coarse inside AND outside with minimal mechanism and function. The TRIZ approach is fine inside, coarse outside with rich mechanism behind a simple interface.
My product has 109 per-asset-type schemas with up to 81 field paths each with finer internal resolution than any competitor.
My result: Finer than competitors internally (109 schemas, 18 predicate operators, sub-micro fact export). Coarser than competitors externally (one control ID, one sentence title, one finding). The complexity is inside. The simplicity is outside.
Step 6: Supply only the missing component
TRIZ Law: System Completeness
Every functioning system needs five components: engine, transmission, tool, interface, and control unit. A system missing one component requires a human to supply it. BUT: the five components don't have to be in one product.
The Bay Area playbook: build all five components into one product (vertical integration). This requires a large team, lots of funding, and produces a monolith.
The TRIZ approach: find which four components already exist in the customer's environment and supply only the missing fifth.
My customers already have: CI/CD (transmission), cloud APIs (tool), CLI/console (interface), collectors (sensing). What they're missing: deterministic evaluation that compares observed state to declared intent (the control unit).
My result: I supply one component, the comparator. The customer's existing stack supplies the other four. Same system completeness. Fraction of the mechanism. No dashboard to compete with their existing one. No agent to compete with their existing collectors. No control plane to compete with their existing CI/CD.
Step 7: Count the hops, then remove them
TRIZ Law: Shortening of the Energy Flow Path
Every hop between intent and result is a place where the signal degrades. Remove hops. Remove intermediaries. Remove conversions. Shorter path = more deterministic result.
The traditional workflow in my market: 9 hops, 4 human interpretations, days-to-weeks cycle time. My product: 3 hops, 0 human interpretations, milliseconds.
For any product: count the steps between what your customer WANTS and what they GET. Every step you remove eliminates a place where the signal degrades. Every human interpretation step you remove eliminates a place where the result becomes non-deterministic.
My result: Collect → evaluate → exit code. Three hops. The developer's intent (declared invariants) reaches the result (pass/fail exit code) without a dashboard to log into, a finding to triage, a ticket to file, or a sprint.
Step 8: Know your current maturity stage
TRIZ Law: Increasing Substance-Field Interactions (Su-Field)
Systems evolve through predictable maturity stages. They evolve from incomplete interactions to controlled to measured to self-correcting. Build for the NEXT stage, not the current one.
My market is at stage 3 (post-deploy scanning — detect after the fact). Stage 5 (pre-deploy validation) exists but checks individual attributes. The capability gap is at stage 6 (proof of correctness with compound composition).
Building for stage 3 (another scanner) is building for the present. Building for stage 6 (fixture-proven, composable, deterministic evaluation) is building for the future. The future has no competitors.
My result: 3,000+ controls with writeup and remediated fixtures (proof the checks work). 585 compound chains (composition, not just attributes). Deterministic evaluation (same input, same output). Stage 6 — two stages ahead of the market.
Step 9: Match your product's rhythm to your customer's workflow
TRIZ Law: Harmonization of Rhythms
Subsystems that operate at incompatible tempos produce drift, oscillation, and failure. Bind the slow rhythm to the fast rhythm through a shared artifact.
My customer deploys per-commit. Their security review happens per-quarter. The gap between those two rhythms is the exposure window.
My product binds to the deployment rhythm: evaluation runs on every commit, same clock as the deploy. The security review's rhythm doesn't need to match. The enforcement already matches.
My result: One exit code in the CI pipeline. The product's rhythm is the customer's rhythm. No separate dashboard to check. No weekly report to read. The evaluation fires when the code changes, at the same moment the risk changes.
Step 10: Make every claim testable
TRIZ Law: Increasing Controllability
Systems evolve to make control more precise, observable, and automatic. Every claim about the system should be testable, not just stated.
"Our product is secure" is a claim. "Our product imports no networking packages, enforced by TestNoBannedImportsInRuntime which fails the build" is a testable property.
Every property of my product such as offline operation, no credentials, determinism, no code execution from inputs is enforced by a CI test. The build refuses to ship without the test passing. The claim and the enforcement are the same artifact.
My result: Every architectural guarantee has a CI test. Every finding has a traceable evidence chain. Every evaluation can be independently verified by an external solver (Z3). The product doesn't just CLAIM controllability, it lets the customer VERIFY it.
Step 11: For every feature, ask THE question
TRIZ Law: Trimming
Remove the mechanism. Keep the function. Transfer the function to something that already exists.
Before building any feature, ask:
"Is this element delivering a core function, or compensating for a missing one?"
If it's compensating, delete it. Fix the root cause instead.
Dashboard? Compensating for findings not being in the CI pipeline. Fix: put findings in the CI pipeline. Delete the dashboard.
Agent? Compensating for not having a snapshot pipeline. Fix: use existing collectors. Delete the agent.
Plugin system? Compensating for the kernel not being data-driven. Fix: make controls YAML data. Delete the plugin system.
I deleted 11 components before writing code. Each deletion made the product more capable, because each deleted component was compensating for a design decision that should have been different.
My result: No daemon, agent, dashboard, control plane, network access, persistent state, credentials, plugins or reconciliation loop. 1,030-line kernel. 3,000+ controls as YAML data. One developer. Zero investors.
Addressing the Architeture
| Existing startup methodology | What it covers | Gap |
|---|---|---|
| Lean Startup | Build-measure-learn iteration | What to build in the first place |
| The Mom Test | Customer discovery | Product architecture |
| Zero to One | Market positioning | Engineering methodology |
| Shape Up | Project scoping | Structural innovation |
| Y Combinator advice | Market timing, team, growth | Why your product needs 50 engineers when it could need one |
None of them address the ARCHITECTURE of what you build. They tell you to iterate fast, talk to customers, find market fit. They don't tell you: here's how to make the structural decisions that determine whether you need a Series A or a laptop.
The 11 steps are the missing methodology for technical founders who want to compete on architecture, not on funding.
How long it takes
Step 1-2: 1-2 weeks (define ideal, find the lagging subsystem)
Step 3-5: 2-4 weeks (position, question assumptions, design internals)
Step 6-9: 2-4 weeks (architecture: what to supply, what to remove, rhythms)
Step 10-11: 1-2 weeks (testability, trimming)
Total: 2-3 months of thinking
Then: Code
I spent 4 months on steps 1-11. The code took 2 months. The kernel is 1,030 lines. The thinking produced the architecture. The architecture constrained the code. The code enforces the constraints.
The 4 months of thinking saved me from building 11 components I would have spent years maintaining. The methodology isn't slow. It's the fastest path to a product that doesn't need a team.
The methodology is free
TRIZ is published. Altshuller's books are available. Darrell Mann's "Hands-On Systematic Innovation" brings TRIZ to modern systems. The 40 inventive principles, the 76 standard solutions, the 8 laws of evolution are all documented and public.
What's hard is having the patience to apply it before writing code. Every instinct says "start building." The methodology says "start thinking." The thinking produces the architecture. The architecture produces the product. The product is the evidence.
I applied this methodology where nobody else had: to the architecture of a startup product. The 11 steps are Altshuller and Mann's laws, reframed as startup decisions. The credit goes to them. The application is mine. The patience took 4 months. The result is a product one person can maintain that competes with products built by hundreds.
How this relates to existing compliance mods
"One person competing with products built by hundreds" framing is true for the compositional-evaluation slice, not for cloud security overall. turbot/steampipe-mod-aws-compliance ships 540+ controls across 16+ frameworks built by Turbot plus a contributor community — that scale of framework breadth Turbot's team produces and is the right output for the framework-coverage slice. Stave's solo-maintainer cadence works because the slice is different: one domain-independent kernel + composable catalog content where new chains are YAML edits, not code. Two staffing models for two coverage shapes; neither replaces the other. The methodology section of this article applies to choosing the slice — different methodology, different slice, different sustainable team size. Comparison: aws-compliance-mod.
The product these 11 steps produced is Stave. It is an open-source cloud security platform. 1,030-line kernel. 3,000+ controls. No daemon, agent, dashboard or credentials. One developer. The methodology is the competitive advantage. The code is the proof. Try it: bash examples/demo-ai-security/run.sh
Top comments (0)