Skip to content

Instantly share code, notes, and snippets.

@tylergannon
Created February 24, 2026 21:22
Show Gist options
  • Select an option

  • Save tylergannon/f4fd4e995c11c5bb02cb07008b87ffa3 to your computer and use it in GitHub Desktop.

Select an option

Save tylergannon/f4fd4e995c11c5bb02cb07008b87ffa3 to your computer and use it in GitHub Desktop.
cat-monitor-user-story-generator-with-models
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.43.0 (0)
-->
<!-- Title: UserStoryGenerator Pages: 1 -->
<svg width="489pt" height="1045pt"
viewBox="0.00 0.00 488.56 1045.18" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1041.18)">
<title>UserStoryGenerator</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-1041.18 484.56,-1041.18 484.56,4 -4,4"/>
<text text-anchor="middle" x="240.28" y="-1021.98" font-family="Times,serif" font-size="14.00">UserStoryGenerator</text>
<text text-anchor="middle" x="240.28" y="-1006.98" font-family="Times,serif" font-size="14.00">budget: $10 | default: anthropic/claude&#45;opus&#45;4&#45;5</text>
<!-- start -->
<g id="node1" class="node">
<title>start</title>
<polygon fill="none" stroke="black" points="217.76,-999.18 181.23,-981.18 217.76,-963.18 254.3,-981.18 217.76,-999.18"/>
<polyline fill="none" stroke="black" points="191.99,-986.48 191.99,-975.88 "/>
<polyline fill="none" stroke="black" points="207,-968.48 228.53,-968.48 "/>
<polyline fill="none" stroke="black" points="243.53,-975.88 243.53,-986.48 "/>
<polyline fill="none" stroke="black" points="228.53,-993.88 207,-993.88 "/>
<text text-anchor="middle" x="217.76" y="-977.48" font-family="Times,serif" font-size="14.00">start</text>
</g>
<!-- context -->
<g id="node3" class="node">
<title>context</title>
<ellipse fill="none" stroke="black" cx="217.76" cy="-899.31" rx="118.59" ry="26.74"/>
<text text-anchor="middle" x="217.76" y="-903.11" font-family="Times,serif" font-size="14.00">context</text>
<text text-anchor="middle" x="217.76" y="-888.11" font-family="Times,serif" font-size="14.00">(anthropic/claude&#45;opus&#45;4&#45;5)</text>
</g>
<!-- start&#45;&gt;context -->
<g id="edge1" class="edge">
<title>start&#45;&gt;context</title>
<path fill="none" stroke="black" d="M217.76,-962.85C217.76,-955.12 217.76,-945.7 217.76,-936.54"/>
<polygon fill="black" stroke="black" points="221.26,-936.41 217.76,-926.41 214.26,-936.41 221.26,-936.41"/>
</g>
<!-- exit -->
<g id="node2" class="node">
<title>exit</title>
<polygon fill="none" stroke="black" points="232.26,-37 195.26,-37 195.26,0 232.26,0 232.26,-37"/>
<polyline fill="none" stroke="black" points="207.26,-37 195.26,-25 "/>
<polyline fill="none" stroke="black" points="195.26,-12 207.26,0 "/>
<polyline fill="none" stroke="black" points="220.26,0 232.26,-12 "/>
<polyline fill="none" stroke="black" points="232.26,-25 220.26,-37 "/>
<text text-anchor="middle" x="213.76" y="-14.8" font-family="Times,serif" font-size="14.00">exit</text>
</g>
<!-- empathize -->
<g id="node4" class="node">
<title>empathize</title>
<ellipse fill="lightyellow" stroke="black" cx="217.76" cy="-808.57" rx="135.53" ry="26.74"/>
<text text-anchor="middle" x="217.76" y="-812.37" font-family="Times,serif" font-size="14.00">empathize</text>
<text text-anchor="middle" x="217.76" y="-797.37" font-family="Times,serif" font-size="14.00">(openai/gpt&#45;5.2, high reasoning)</text>
</g>
<!-- context&#45;&gt;empathize -->
<g id="edge2" class="edge">
<title>context&#45;&gt;empathize</title>
<path fill="none" stroke="black" d="M217.76,-872.17C217.76,-863.86 217.76,-854.53 217.76,-845.65"/>
<polygon fill="black" stroke="black" points="221.26,-845.53 217.76,-835.53 214.26,-845.53 221.26,-845.53"/>
</g>
<!-- needs -->
<g id="node5" class="node">
<title>needs</title>
<ellipse fill="lightyellow" stroke="black" cx="135.76" cy="-717.83" rx="135.53" ry="26.74"/>
<text text-anchor="middle" x="135.76" y="-721.63" font-family="Times,serif" font-size="14.00">needs</text>
<text text-anchor="middle" x="135.76" y="-706.63" font-family="Times,serif" font-size="14.00">(openai/gpt&#45;5.2, high reasoning)</text>
</g>
<!-- empathize&#45;&gt;needs -->
<g id="edge3" class="edge">
<title>empathize&#45;&gt;needs</title>
<path fill="none" stroke="black" d="M194.05,-781.9C185.38,-772.52 175.45,-761.77 166.27,-751.84"/>
<polygon fill="black" stroke="black" points="168.79,-749.41 159.43,-744.44 163.65,-754.16 168.79,-749.41"/>
</g>
<!-- draft -->
<g id="node6" class="node">
<title>draft</title>
<ellipse fill="none" stroke="black" cx="135.76" cy="-627.09" rx="118.59" ry="26.74"/>
<text text-anchor="middle" x="135.76" y="-630.89" font-family="Times,serif" font-size="14.00">draft</text>
<text text-anchor="middle" x="135.76" y="-615.89" font-family="Times,serif" font-size="14.00">(anthropic/claude&#45;opus&#45;4&#45;5)</text>
</g>
<!-- needs&#45;&gt;draft -->
<g id="edge4" class="edge">
<title>needs&#45;&gt;draft</title>
<path fill="none" stroke="black" d="M135.76,-690.69C135.76,-682.38 135.76,-673.05 135.76,-664.17"/>
<polygon fill="black" stroke="black" points="139.26,-664.05 135.76,-654.05 132.26,-664.05 139.26,-664.05"/>
</g>
<!-- reality_check -->
<g id="node7" class="node">
<title>reality_check</title>
<ellipse fill="lightyellow" stroke="black" cx="135.76" cy="-536.35" rx="135.53" ry="26.74"/>
<text text-anchor="middle" x="135.76" y="-540.15" font-family="Times,serif" font-size="14.00">reality_check</text>
<text text-anchor="middle" x="135.76" y="-525.15" font-family="Times,serif" font-size="14.00">(openai/gpt&#45;5.2, high reasoning)</text>
</g>
<!-- draft&#45;&gt;reality_check -->
<g id="edge5" class="edge">
<title>draft&#45;&gt;reality_check</title>
<path fill="none" stroke="black" d="M135.76,-599.95C135.76,-591.64 135.76,-582.31 135.76,-573.43"/>
<polygon fill="black" stroke="black" points="139.26,-573.31 135.76,-563.31 132.26,-573.31 139.26,-573.31"/>
</g>
<!-- gate -->
<g id="node8" class="node">
<title>gate</title>
<polygon fill="none" stroke="black" points="217.76,-472.48 113.76,-434.48 217.76,-396.48 321.76,-434.48 217.76,-472.48"/>
<text text-anchor="middle" x="217.76" y="-438.28" font-family="Times,serif" font-size="14.00">Stories</text>
<text text-anchor="middle" x="217.76" y="-423.28" font-family="Times,serif" font-size="14.00">human enough?</text>
</g>
<!-- reality_check&#45;&gt;gate -->
<g id="edge6" class="edge">
<title>reality_check&#45;&gt;gate</title>
<path fill="none" stroke="black" d="M156.88,-509.63C166.22,-498.25 177.38,-484.66 187.58,-472.24"/>
<polygon fill="black" stroke="black" points="190.47,-474.23 194.12,-464.28 185.06,-469.79 190.47,-474.23"/>
</g>
<!-- gate&#45;&gt;empathize -->
<g id="edge8" class="edge">
<title>gate&#45;&gt;empathize</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M253.49,-459.45C275.59,-477.4 299.76,-504.17 299.76,-535.35 299.76,-718.83 299.76,-718.83 299.76,-718.83 299.76,-741.93 284.59,-761.58 267.29,-776.47"/>
<polygon fill="black" stroke="black" points="264.82,-773.97 259.24,-782.97 269.22,-779.41 264.82,-773.97"/>
<text text-anchor="middle" x="339.26" y="-623.39" font-family="Times,serif" font-size="14.00">needs revision</text>
</g>
<!-- check_existing -->
<g id="node9" class="node">
<title>check_existing</title>
<ellipse fill="none" stroke="black" cx="217.76" cy="-318.61" rx="118.59" ry="26.74"/>
<text text-anchor="middle" x="217.76" y="-322.41" font-family="Times,serif" font-size="14.00">check_existing</text>
<text text-anchor="middle" x="217.76" y="-307.41" font-family="Times,serif" font-size="14.00">(anthropic/claude&#45;opus&#45;4&#45;5)</text>
</g>
<!-- gate&#45;&gt;check_existing -->
<g id="edge7" class="edge">
<title>gate&#45;&gt;check_existing</title>
<path fill="none" stroke="black" d="M217.76,-396.19C217.76,-383.32 217.76,-368.93 217.76,-356.12"/>
<polygon fill="black" stroke="black" points="221.26,-355.8 217.76,-345.8 214.26,-355.8 221.26,-355.8"/>
<text text-anchor="middle" x="238.26" y="-367.28" font-family="Times,serif" font-size="14.00">success</text>
</g>
<!-- create_gate -->
<g id="node10" class="node">
<title>create_gate</title>
<polygon fill="none" stroke="black" points="217.76,-254.74 147.76,-216.74 217.76,-178.74 287.76,-216.74 217.76,-254.74"/>
<text text-anchor="middle" x="217.76" y="-220.54" font-family="Times,serif" font-size="14.00">Room for</text>
<text text-anchor="middle" x="217.76" y="-205.54" font-family="Times,serif" font-size="14.00">issues?</text>
</g>
<!-- check_existing&#45;&gt;create_gate -->
<g id="edge9" class="edge">
<title>check_existing&#45;&gt;create_gate</title>
<path fill="none" stroke="black" d="M217.76,-291.63C217.76,-283.48 217.76,-274.22 217.76,-265.08"/>
<polygon fill="black" stroke="black" points="221.26,-264.87 217.76,-254.87 214.26,-264.87 221.26,-264.87"/>
</g>
<!-- create_gate&#45;&gt;exit -->
<g id="edge11" class="edge">
<title>create_gate&#45;&gt;exit</title>
<path fill="none" stroke="black" d="M214.3,-180.24C212.9,-164.22 211.45,-145.04 210.76,-127.74 209.82,-103.87 210.11,-97.88 210.76,-74 211,-65.34 211.45,-55.92 211.93,-47.38"/>
<polygon fill="black" stroke="black" points="215.44,-47.35 212.55,-37.16 208.45,-46.93 215.44,-47.35"/>
<text text-anchor="middle" x="222.26" y="-97.17" font-family="Times,serif" font-size="14.00">stop</text>
</g>
<!-- publish -->
<g id="node11" class="node">
<title>publish</title>
<ellipse fill="none" stroke="black" cx="361.76" cy="-100.87" rx="118.59" ry="26.74"/>
<text text-anchor="middle" x="361.76" y="-104.67" font-family="Times,serif" font-size="14.00">publish</text>
<text text-anchor="middle" x="361.76" y="-89.67" font-family="Times,serif" font-size="14.00">(anthropic/claude&#45;opus&#45;4&#45;5)</text>
</g>
<!-- create_gate&#45;&gt;publish -->
<g id="edge10" class="edge">
<title>create_gate&#45;&gt;publish</title>
<path fill="none" stroke="black" d="M245.53,-193.78C267.26,-176.6 297.78,-152.47 322.09,-133.24"/>
<polygon fill="black" stroke="black" points="324.4,-135.88 330.07,-126.93 320.06,-130.39 324.4,-135.88"/>
<text text-anchor="middle" x="325.26" y="-149.54" font-family="Times,serif" font-size="14.00">continue</text>
</g>
<!-- publish&#45;&gt;exit -->
<g id="edge12" class="edge">
<title>publish&#45;&gt;exit</title>
<path fill="none" stroke="black" d="M317.36,-75.76C292.59,-62.3 262.52,-45.97 241.17,-34.38"/>
<polygon fill="black" stroke="black" points="242.77,-31.27 232.31,-29.57 239.43,-37.42 242.77,-31.27"/>
</g>
</g>
</svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment