Repo-native product graph tooling for Outcome Engineering.
Project description
Outcome Engineering
Outcome Engineering turns messy product thinking into a repo-native product graph that humans and agents can challenge, trace, and update.
CLI
The Python package is outcome-engineering. The command is oe.
uv run oe install --skills --force
uv run oe validate product
uv run oe tree product
uv run oe list outcomes --root product
uv run oe context outcome.messy-product-assumptions --root product
uv run oe new strategy <slug> --root product
uv run oe new icp <slug> --root product
uv run oe new opportunity <slug> --root product --under outcome.<slug>
uv run oe serve product
uv run oe create-example --comprehensive --output examples/ui-evaluation-product-graph --force
uv run oe create-example --boligsiden --output examples/boligsiden-product-graph --force
Use product/ as the graph root.
oe serve starts a local web UI for visualizing and editing the graph as a
team. It opens on an Excalidraw-like strategic overview with vision, strategy,
ICPs, and outcomes as visible nodes; clicking an outcome focuses into its full
trace subtree (opportunities → solutions → assumption tests / PRDs) with
collapsible branches and node content in a side panel. From the side panel you
can edit a node's marker file, add child nodes (the UI only offers placements
the model allows), and delete nodes (a node with descendants needs an explicit
cascade). Every change writes straight back to the marker files on disk, so
collaboration happens through git like everything else in the repo. The server
is dependency-free (Python stdlib) and binds to loopback by default; use
--host/--port to change that and --no-open to skip launching a browser.
Graph metadata lives in Markdown frontmatter. Fenced YAML metadata blocks are invalid.
An ICP (ideal customer profile) is the "who" the graph serves. A graph can have one or more, and they live in the top-level product/icps/ collection. ICPs are not part of the outcome → opportunity → solution trace chain; instead outcomes and opportunities reference the ICPs they serve by listing icp.<slug> ids in frontmatter.
Strategy is top-level product context. A simple graph can keep its current strategy in product/STRATEGY.md; additional historical or planned strategies can live under product/strategies/<slug>/STRATEGY.md. Strategies declare name, starts, and ends in frontmatter, and oe validate rejects missing strategy names or dates, invalid ranges, explicit strategy status, or overlapping strategy periods.
Docs
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file outcome_engineering-0.1.1.tar.gz.
File metadata
- Download URL: outcome_engineering-0.1.1.tar.gz
- Upload date:
- Size: 53.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fdb19806490ba282c07c860d796de86e57e25bbb6702d7b3708ebad52c2deb1
|
|
| MD5 |
109fc4d0c3e56972b1b585b0ac27cfc5
|
|
| BLAKE2b-256 |
48d8fc74333894a9e2d62032e663920ebf124dfdbf6e359985bbdf0cfac310ce
|
Provenance
The following attestation bundles were made for outcome_engineering-0.1.1.tar.gz:
Publisher:
publish.yml on kasperjunge/outcome-engineering
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
outcome_engineering-0.1.1.tar.gz -
Subject digest:
7fdb19806490ba282c07c860d796de86e57e25bbb6702d7b3708ebad52c2deb1 - Sigstore transparency entry: 2004627408
- Sigstore integration time:
-
Permalink:
kasperjunge/outcome-engineering@90445464264b575645f7db1effcb4baf017e04b1 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/kasperjunge
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@90445464264b575645f7db1effcb4baf017e04b1 -
Trigger Event:
push
-
Statement type:
File details
Details for the file outcome_engineering-0.1.1-py3-none-any.whl.
File metadata
- Download URL: outcome_engineering-0.1.1-py3-none-any.whl
- Upload date:
- Size: 60.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c247f317585decaa8cb746493fabcda37b2c260b0693d2a228cc7c47905f179
|
|
| MD5 |
cc5efa5121c6219ff903e8ca048e9066
|
|
| BLAKE2b-256 |
a42c013de1b897cc1c3943f92e863ea6ea421c3f3be03468f6bf09c090ac883f
|
Provenance
The following attestation bundles were made for outcome_engineering-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on kasperjunge/outcome-engineering
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
outcome_engineering-0.1.1-py3-none-any.whl -
Subject digest:
1c247f317585decaa8cb746493fabcda37b2c260b0693d2a228cc7c47905f179 - Sigstore transparency entry: 2004627655
- Sigstore integration time:
-
Permalink:
kasperjunge/outcome-engineering@90445464264b575645f7db1effcb4baf017e04b1 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/kasperjunge
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@90445464264b575645f7db1effcb4baf017e04b1 -
Trigger Event:
push
-
Statement type: