Skip to main content

Repo-native product graph tooling for Outcome Engineering.

Project description

Outcome Engineering

Outcome Engineering is a framework for helping humans continuously challenge product thinking and invent valuable solutions that users and customers actually want, use, and pay for, in ways that work for the business.

The core claim:

Product development should be modeled as a living intent graph where every product bet can be traced upward to its strategic purpose, downward to implementation, and sideways to the evidence and learning that shaped it.

Traceability is the mechanism. Better product judgment and better product outcomes are the point.

The graph provides structure for product work and gives agents a way to understand, organize, and challenge what is happening.

The framework connects product vision, strategy, OKRs, outcomes, opportunity solution trees, assumptions, experiments, PRDs, user stories, acceptance criteria, code, tests, and evidence into one coherent system.

It is not a replacement for human product judgment. Humans still set direction, talk to users, interpret nuance, and make decisions. Agentic engineering can help maintain structure, reframe opportunities, analyze assumptions, challenge output-thinking, expose what is known and unknown, generate options, implement code, run tests, and preserve traceability across the system.

Agents can generate plausible opportunities, solutions, assumptions, stories, and analyses, but plausibility is not grounding. Synthetic artifacts remain hypotheses until supported by real customer, user, market, business, or technical evidence.

The Problem

Most organizations lose intent as work moves through the product development process.

A compelling product vision becomes a strategy deck. Strategy becomes OKRs. OKRs become roadmap items. Roadmap items become tickets. Tickets become code. Code ships. Somewhere along the way, the original customer need, business intent, assumptions, and evidence are often lost.

The result is delivery without memory:

  • Teams ship outputs without knowing which outcome they serve.
  • Discovery evidence lives separately from delivery work.
  • User stories lose their connection to customer opportunities.
  • Code becomes hard to explain in product terms.
  • Learning arrives too late, or never updates the underlying product model.

Outcome Engineering treats this as a structural problem.

The Model

At the highest level:

Vision
  -> Strategy
    -> OKRs
      -> Outcomes
        -> Opportunity Solution Trees
          -> Opportunities
            -> Solutions
              -> Assumptions
                -> Experiments
                  -> Decisions
                    -> PRDs
                      -> User Stories
                        -> Acceptance Criteria
                          -> Code
                            -> Tests
                              -> Released Product

But this is not a one-way waterfall.

Evidence and learning can happen throughout the graph:

Any product belief
  -> Evidence
    -> Learning
      -> Update the graph

Evidence can come from user interviews, customer conversations, sales calls, support conversations, analytics, prototype tests, assumption tests, usability sessions, technical spikes, experiments, production telemetry, and market observation.

Quantitative data can show what is happening. Human discovery is needed to understand why it is happening.

Repository Structure

CLI

The Python package is outcome-engineering. The command is oe.

Real product repositories should store the graph at:

product/

Install the bundled agent skill with Playwright-style project-local commands:

uv run oe install --skills --force
uv run oe install --skills=agents --force

Inspect a product graph:

uv run oe validate product
uv run oe tree product
uv run oe list outcomes --root product
uv run oe list opportunities --root product
uv run oe list solutions --root product

Trace product intent before editing a product artifact or implementing from a PRD:

uv run oe trace solution.agent-central --root product
uv run oe context solution.agent-central --root product

Read a node's canonical marker file:

uv run oe show outcome.delegation-confidence --root product
uv run oe show opportunity.agents-lack-safe-access --root product
uv run oe show prd.agent-central-mvp --root product

Create nodes deterministically:

uv run oe new outcome delegation-confidence --root product
uv run oe new opportunity agents-lack-safe-access --root product --under outcome.delegation-confidence
uv run oe new solution agent-central --root product --under opportunity.agents-lack-safe-access
uv run oe new assumption operation-discovery-reduces-tool-overload --root product --under solution.agent-central
uv run oe new experiment fake-connector-prototype --root product --under assumption.operation-discovery-reduces-tool-overload
uv run oe new prd agent-central-mvp --root product --under solution.agent-central

Experiments can only live under assumptions.

Try the example graph:

uv run oe create-example --force
uv run oe validate examples/delegation-product-graph
uv run oe tree examples/delegation-product-graph
uv run oe context solution.agent-central --root examples/delegation-product-graph

Install the skill into explicit global agent-tool locations:

uv run oe install-skill --agent codex --force
uv run oe install-skill --agent claude --force
uv run oe install-skill --agent all --force

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

outcome_engineering-0.1.0.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

outcome_engineering-0.1.0-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file outcome_engineering-0.1.0.tar.gz.

File metadata

  • Download URL: outcome_engineering-0.1.0.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for outcome_engineering-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9acabb6d78c8f51f114a6fccda8dbb2fee7f5744b5a17892ba5421c29def1753
MD5 9a86d0eb0b287a69d09001f4cd13d091
BLAKE2b-256 5e9a8e3d65d90c84fe04b6bf3e80655561a33c8600c9a3f7070f000e6448fdb2

See more details on using hashes here.

File details

Details for the file outcome_engineering-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: outcome_engineering-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for outcome_engineering-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c6657696a1bff717cce8fdff99aab31735294f4163127886c1ced3d970699b00
MD5 c8d79a9fea952ea6876fd9da7cc0d0bc
BLAKE2b-256 8aef6603070d070d672a21885ed0355d102305be2c8b2f36a7fa2e5bde20630d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page