Skip to Content

May 2026: Artificial Edges, Artificial Intelligence

May 15, 2026by Joel Keyser

Ameliorate is a tool for critically thinking about problems and collaboratively refining our understanding of them.

TLDR


Hello everyone, welcome back to another batch of Ameliorate updates! 🙂

The last few months have been focused on a few features and playing with some AI, with sprinkled efforts around community and nonprofit stuff. No demo video for the features this time around, so you’ll have to scroll down if you want to see them!

Note: this blog can now be found at ameliorate.app/blog, in addition to Substack - it’s nice to have the blog a little more tied to the main site, and it gives me more control over formatting if I need it.

**Table of Contents** --- What I've been doing - App stuff - Not quite an AI integration? - Community stuff - Nonprofit stuff What's next? - Three-ish months left - A needed redesign? - Some thought-solidifying blog posts? That's all for now! --- App updates

What I’ve been doing

App stuff

The big feature I added is the ability to see indirect edges between nodes! So when A causes B causes C, you can hide B and still see a dotted edge from A to C, with a label that’s calculated based on the labels from A to B to C. This took a bit longer than expected because there were a ton of different cases to consider! You can see all the cases in this indirect edges design page.

Example case of indirect edges

A few other miscellaneous improvements were added too. I’ve put explanations and screenshots of various improvements in the appendix at the end of this post.

Aside: AI helping out with development

It’s been great having AI to accelerate my development - brainstorming ideas, figuring out niche bugs, working through code. But funny enough, AI has also made me lose a significant amount of time too 😅. Figuring out how to effectively use it, configuring it for my codebase and workflow, has taken many hours. I’ve spent a lot of time just paying attention to “what’s the hottest AI thing” since AI tools are being updated all the time!

There are also many pesky lower-priority issues for which AI gives me just enough of a nudge to feel like I can quickly fit them in, only for them to still take a full day or two!

All in all though, I think it’s been a positive.

Not quite an AI integration?

I was inspired to try getting an LLM to understand how to make Ameliorate diagrams. There are many possibilities that could come out of this, but mainly I wanted the LLM to be able to help me make diagrams more quickly and then provide feedback to help me refine the app’s features and structure.

I’ve gotten the LLM to the point where it can output a decent diagram and give decent feedback about it. There’s still a lot of room for improvement, but I’m calling it good enough for now. If you’re curious, you can see the latest prompt used & output in the Ameliorate LLM Analysis doc.

Efforts to get it to work…

Visual representation of me trying to get the LLM to do what I want. Image generated by Gemini with the prompt 'A cartoonish, very low-detail photo of a robot placing a cube in a pile of marbles, next to an annoyed developer who points instructively at a pile of cubes where the robot should be placing the cube.'

It has been a very interesting experience trying to improve the LLM - it actually runs into a lot of issues that I’d expect a person to run into. I ended up giving it context in the form of improved documentation that a person could also benefit from! I extended the Ameliorate Goals page to include ideas for the kind of scenarios Ameliorate is trying to improve, and through what metrics. I also started a Diagramming Tips page for some guidance as to how to structure discussions into nodes and edges, and what you might want to put into different views.

Annoyingly the LLM has also run into issues that a human probably wouldn’t run into… API authentication and scripting issues! So in the process, I’ve added Personal Access Tokens for machines to be able to use the API, and an MCP server so the LLM can interact with the API without having to write scripts that sometimes don’t work.

These efforts haven’t been implemented into the app yet (I was thinking it’d be too expensive, but I just discovered there may be some free tier LLM APIs out there…). You can use this agent persona (and helper files mentioned in it) to run it through your LLM of choice if you’d like to try using it to create, modify, or give feedback on a diagram.

Community stuff

For a few years now, I’ve been attending monthly meetings with the Canonical Debate Lab to discuss various ideas about how to make arguing more productive. Recently, we converted our Discord server into a broader Collaborative Reasoning Tech (CRT) community Discord server! And added a bunch of channels to facilitate/organize discussion a bit better.

Discord profile card for the CRT community server

I’ve been happy to see the activity there, and I look forward to possibilities of further collaboration in the community 🙂. Check it out if you’re interested! We also made a Collaborative Reasoning Projects Notion page where you can see what kinds of projects are being worked on by various members of our community.

Nonprofit stuff

Ameliorate NFP is now officially a 501c3 nonprofit! You can check out some of the public legal docs if you’re interested. Thanks to Anthony Messerschmidt and Xiaoyang Li for being founding Board members 🙂.

As for actually using the nonprofit status: it seems that most grants require traction of some kind, and, alas, Ameliorate doesn’t have active users yet.

I’ve done a little bit of reaching out to various groups and communities to gauge interest, and haven’t had too much success. I’ve been thinking that the app has a few significant issues preventing it from being exciting and easily used - more on this in the next section.

What’s next?

Three-ish months left

One critical detail about determining “what’s next?” is that I’ve only got about ~3.5 months left to work on Ameliorate full-time. I hope to continue a couple hours a week after that.

I’ve been reflecting on how I can best spend my time - ideally my work would be able to provide some value without needing significant ongoing effort.

A needed redesign?

I think a major barrier to the app’s success is that it’s still too hard to use without guidance. It’s ok for a discourse session that I’m facilitating, but not great otherwise. When someone looks at a diagram, it still seems unclear: Where to look first? Where to look next? Why are we looking at this? What does it mean?

My impression is still that the core idea of cause & effect diagramming is one that can significantly improve people’s ability to get on the same page and critically think together about complex problems. But perhaps it should be complementary to some view that provides a little more guidance.

I’m envisioning a linear-ish view on the left (maybe a list of driving questions referencing nodes, maybe complete sentences) and the diagram on the right that updates when you click on a sentence in the left view.

Very unrefined mockup of possible redesign

Unfortunately there isn’t a lot of time to refine designs and implement! It’s likely I’ll just get some visuals and/or a rough prototype together, and see if that inspires any excitement. If that works out, maybe I’ll have enough confidence that it’s worth the time to build a solid implementation.

Some thought-solidifying blog posts?

Why have I spent so much time on this diagramming app? What potential do I see?

When I first started working on this app, I saw the problems I wanted to solve, and I had an intuition that some structure could be a big help. You can get a bit of what I mean by reading my first blog post, A Dream to Ameliorate.

As I’ve worked more and more on the app, practicing diagramming on a variety of topics, it’s become clearer to me that the cause-and-effect structure has characteristics that make it particularly suitable for representing complex, argued-about problems.

I haven’t encountered any articles that I think fully capture what I see here. Whether or not I manage to get this app far enough to take sufficient advantage of these characteristics, I think it’d be a good contribution to get my thoughts here solidified and clarified in the form of a blog post (or a few). So I’ll be working on that too.

That’s all for now!

That’s all for now! See you in a couple months 🙂.

Understand ourselves. Understand each other. Grow together.

Ameliorate.


App updates

To see the app at the time of this blog post, visit the update-5-15-26 deployment.

Indirect edges

Indirect edges help provide context when intermediate nodes are hidden. Given “A causes B causes C”, if B is hidden, “A causes C” will still be shown. Previously, no connection would be shown between A and C, which would be confusing, and sometimes this would cause e.g. C to become disconnected from the rest of the diagram.

An indirect edge, showing that 'Benefit: legally requires people to stop' addresses 'Detriment: pedestrians might get hit' through the intermediate, hidden 'Benefit: people will slow if they need to stop'.

These should make it easier to create high-level views for a diagram, while ensuring that everything is still connected somehow.

Misc

”More Actions” menu

I like how Miro’s UI handles lots of config options via a menu, so I moved the “More Actions Drawer” into a menu instead. I think it’s much easier to find the options since you don’t see all the options at once, and they have labels now rather than just icons.

'More Actions' menu for configuration options.

Multiple edges between same nodes

The indirect edges feature felt more useful if multiple edges could display between a pair of nodes, so now that’s allowed! (Yes you can also now create direct cycles i.e. make A cause B and B cause A)

Pair of nodes with two edges between them

Logic gates for edge arrows

I experimented a little with using different shapes for the edge arrow based on the edge type (thanks David from the CRT community for the idea), e.g. an arrow with a circle for “addresses” / “reduces” edges (this is also a “NOT” logic gate used in circuits and logic diagrams). These shapes are not used by default because I couldn’t tell if they’d be confusing without a key/legend, and I didn’t want to take the time to design a key/legend - you can enable them via “Preferences > Edges > Use semantic arrow shapes”.

'NOT' logic gate being used as the arrow for an 'addresses' edge

Also visible in the above image: edge arrows are now positioned just beyond the label, rather than at the very end where the path meets the node. I think this makes it much easier to see which direction each edge points, especially if many edges are overlapping or between the same two nodes.

Showing indicators on hover

As a way of reducing clutter in the diagram, while allowing indicators to be more discoverable, an option has been added to show indicators on hover. This is on by default - you can change it to “always show” the indicators under “Preferences > Indicators”.

Hovering and unhovering a node to show its indicators

That’s all for now!