Back Send feedback to ilkka.kuivanen@me.com

Case: Selkie

Selkie is an AI-assisted diagramming tool for users who prefer declarative configuration over manual drawing. It uses Mermaid to define diagrams and AI to provide scaffolding during early stages. Selkie helps move from concept to structured output and supports sharing, versioning, and manual refinement.

This post tracks the app's development.

I previously wrote about creating diagrams in Why Creating Diagrams is Hard (and How PlantUML/Mermaid Can Help).

First version

I'd had the idea for some time and started by building an end-to-end prototype to see if the concept worked. Using my JavaScript full‑stack template cito-starter (Angular frontend, Node.js backend), I produced a working first version in a few hours; the backend handles the OpenAI API calls. See the first UI render below:

First version
Figure: Screenshot of the first version.

The first version does the following:

Regarding the name "Selkie": it comes from "Mermaid". Wikipedia describes Selkies as "mythological creatures that can shapeshift between seal and human forms by removing or putting on their seal skin". In Finnish, "Selkeä" means "clear". One main function of a diagram is to make information clearer.

Working on all fronts: UI, code and concept

Second iteration is underway. I replaced the custom contentEditable editor with Monaco and added frontend tweaks to support a more iterative workflow. Current topics include:

Below is the latest UI:

Working on second iteration
Figure: Working on second iteration.

Second version

I haven't focused on LLM improvements yet, but the main features work end-to-end. Diagrams are stored in a database. Editing works and development-time use can begin; the project can be tracked within the app. Some recent work included:

Below is the second-version UI:

Selkie second iteration
Figure: Second iteration.

Refactoring of the end-to-end project is ongoing. Next steps are deployment to a VM for public access and starting the LLM-focused development phase. The third version's content will be shaped as the idea matures.

Below is the latest UI:

Selkie second iteration, final
Figure: Second iteration complete.

Deployment done

The application now runs at https://concept.directory/

Second iteration got some minor adjustments before deploying to the public domain. The changes include:

On top of application changes I spent some time hardening the nginx configs and adjusting scripts for deployment.

Below is the deployed version in light and dark.

Selkie first deployed version, dark theme.
Figure: First deployed version (dark).
Selkie first deployed version, light theme.
Figure: First deployed version (light).

Third version

Third iteration is in progress. I'm refining the version for home and work notes; LLM improvements are still pending. Recent work includes:

Below is the ongoing third version of the UI:

Selkie third iteration in progress.
Figure: Third iteration in progress.

The Selkie project itself is tracked with the Selkie. Next items on the project's Gantt looks like this:

Next steps as of 2025-05-04
Figure: Next steps.

The solution turned out to be helpful

I spent recent days working on YAML-based syntax to make note-taking more consistent, easier to parse, and to allow pre-computation before sending content to Mermaid.

Currently I have added support for the following:

Adjusting the direction

After using Selkie for a few months, I learned a few things:

Some adjustments

Future challenges

Sunsetting Selkie

I decided to archive Selkie and stop working on it. The main reasons:

Here are the key learnings, in no particular order:

Selkie can be archived as a proof of concept that did not deliver the expected usefulness.