← Back to blog

Proof of Concept Design: From Key Assumptions to Actionable Conclusions

A PoC is not about building a working system — it is about falsifying or validating the most dangerous assumptions at minimum cost. This article covers the PoC design framework, scope control, evaluation criteria, and three common pitfalls. Includes a one-page PoC report template. [See the PoC design framework →]

The Bottom Line: A PoC Is Not About “Building It” — It Is About “Knowing If It Works”

PoC is the most misunderstood tool in technical decision-making. The most common failure is turning a PoC into “half a system” — investing significant time without answering the critical question.


1. Step 1: Identify Key Assumptions

Before starting a PoC, list all assumptions where being wrong would be most expensive. These are what the PoC should validate.

Typical Key Assumption Types

TypeExample
Performance”This database can handle 100K writes/second”
Compatibility”This SDK supports our Linux kernel version”
Reliability”This protocol survives 1% packet loss without disconnection”
Integration cost”This API auth flow can integrate with our unified auth”
Learning curve”The team can be productive with this framework in 2 weeks”

Key vs Non-Key

A key assumption: if this is wrong, the approach must change. If yes, it must be PoC’d. If the answer is “we can work around it,” skip the PoC and handle it during development.


2. Step 2: Define Pass/Fail Criteria

Each key assumption maps to one clear criterion:

Under [condition], [metric] reaches [threshold]

Good criteria:

  • “On a 10-node 4C8G K8s cluster, single-node write throughput reaches 50K points/second, P99 latency < 50ms”
  • “Under 1% random packet loss, 50ms latency, the connection auto-recovers within 30 seconds with zero data loss”

Bad criteria:

  • “Performance must be good enough” (not measurable)
  • “The system must be stable” (no quantitative standard)
  • “Must integrate with our system” (not specific)

3. Step 3: Scope Control

Minimum Viable PoC

For each key assumption, ask: What is the least work needed to validate this?

Example — validating “Kafka can handle 100M messages/day”:

  • ❌ Wrong scope: Full Kafka cluster + producers + consumers + monitoring + data pipeline
  • ✅ Right scope: 3-node Kafka cluster, a simple producer load test script, verify throughput and latency

Warning Signs of Scope Creep

  1. Discussing “should we add this feature” — you are building, not validating
  2. Writing documentation — only write what the validation needs
  3. Discussing UI / interaction — technical PoCs need no interface
  4. Handling error cases — PoCs validate the happy path

4. Step 4: Execution and Recording

Execution Principles

  • One assumption at a time: testing multiple assumptions simultaneously means you cannot isolate the cause of failure
  • Record all conditions: hardware config, software versions, parameters — reproducibility depends on this
  • Failure is a valid conclusion: document the failure and its conditions — this is more valuable than a “success”

Output Format

PoC Report

Assumption: Single-node write throughput reaches 50K points/second on 10 4C8G nodes
Method: 3-node cluster + load test script (see git tag poc-v1)
Result: 62K points/second, P99 latency 32ms ✅
Conclusion: Assumption validated, approach feasible
Risk: Happy path only, failure scenarios not tested

5. Three Common Pitfalls

Pitfall 1: PoC Becomes Development

Halfway through, someone says “we have already built half of it, let us finish it.” This is the most expensive trap. A PoC validates assumptions, not delivers features. A finished PoC is not a product — it is an over-invested validation.

Pitfall 2: Avoiding Bad News

When PoC results are not ideal, the tendency is to “tweak parameters and try again” until the result looks good. This is confirmation bias. Let the data speak. If three attempts all fail, the conclusion is “this approach is not viable under these conditions.”

Pitfall 3: Starting Without Criteria

“Let us just run it and see” is the most common PoC starting point. A PoC without pass/fail criteria has no end — you will never know when validation is complete. Set criteria first, then execute.


Summary

PhaseCore ActionDeliverable
Identify assumptionsList “most expensive to be wrong” assumptionsKey assumption list
Set criteriaOne measurable pass/fail per assumptionCriteria table
Control scopeMinimum work for single assumptionScope document
ExecuteRecord conditions, results, conclusionsPoC report
DecideGo / switch / abandon based on conclusionsDecision record

A good PoC is not measured by what it built — it is measured by what it saved you from. The greatest value of a well-executed PoC is stopping you from investing significant resources in the wrong direction.

Need feasibility verification or solution consulting? Contact us — tell us your evaluation goal and constraints, feasibility within 24 hours.

FAQ

What is the difference between PoC and Prototype?

A PoC (Proof of Concept) answers "will this work?" — e.g., "can this database handle 100K writes/second?" A prototype answers "is this usable?" — e.g., a clickable UI for user testing. PoC validates technical feasibility; Prototype validates user experience. They can be chained: PoC first, then Prototype.

How do you prevent a PoC from turning into "half a system"?

The most effective control: list all key assumptions upfront, each with a pass/fail criterion, then do only the minimum work needed to validate those assumptions. If the scope starts expanding, you have stopped validating and started building. Stop, re-list the assumptions, and cut anything outside the verification scope.

How should PoC evaluation criteria be set?

Each key assumption maps to one clear pass/fail criterion in the format: "Under [condition], [metric] reaches [threshold]." Example: "On a 10-node 4C8G Kubernetes cluster, single-node write throughput reaches 50K points/second with P99 latency < 50ms." Criteria must be objectively measurable, not subjective like "good performance."

What if the PoC concludes "it does not work"?

A "no" is just as valuable — it prevents a wrong decision. Three options: ① Switch — if the current approach fails a core constraint, try a different stack; ② Compromise — if the constraint can be relaxed (e.g., latency from 10ms to 50ms), the approach may still work; ③ Accept — if the constraint is non-negotiable and no alternative exists, the direction is not viable now. Wait for technology maturation or redefine requirements.

This article comes from AI Enable Harness front-line delivery practice. Need a similar system or optimization service?

Subscribe to Updates

Get notified when new articles are published. No spam, occasional updates only.

Subscribe →