Might Work Studio
Problem
Make thinking visible
Strategy rarely begins as a document.
It starts as fragments. Research, assumptions, goals, constraints, opinions, numbers, half-decent ideas and things everyone in the room somehow already knows.
Then we turn it into slides.
The problem isn't PowerPoint itself. I actually quite like PowerPoint, which is probably something I should discuss with a professional.
The problem is what disappears on the way.
A finished strategy tells you the conclusion, but often hides the structure behind it. Where did an assumption come from? Which decisions depend on it? What happens if it changes? Which parts are facts and which are opinions wearing a tie?
Might Work Studio explores a different idea: what if the structure behind the strategy was the thing we actually built?
Instead of treating the canvas as a drawing surface, the application treats it as an interface to a structured data model.
The boxes mean something.
So do the lines.
The Concept
Might Work Studio is a visual environment for modelling strategic problems with typed nodes and meaningful relationships.
The interaction model owes more to Blender than traditional strategy software. Nodes contain structured information, expose inputs and outputs and can influence other nodes through their connections.
A goal is not just a rectangle labelled Goal. A fact, assumption, audience, objective or strategic choice can have its own data structure and role in the model.
Analysis nodes can process information coming from elsewhere in the graph. Output nodes can turn that structure into something readable.
This creates a useful separation between the model and its representation.
The canvas is one way to see it.
It doesn't have to be the last one.
One model, many views
The same strategy rarely needs to look the same to everyone.
A strategist may need assumptions, dependencies and evidence. Management may need decisions and implications. A creative team needs enough context to make things. A workshop needs participation rather than another 74-slide deck.
Might Work Studio keeps the underlying model separate from its outputs.
The same structured information can become a canvas, analysis, strategy summary, scenario or presentation without rebuilding the thinking from scratch.
Presentation outputs are designed around actual use cases.
Different audience.
Different story.
Same model.
Making uncertainty visible
One of the core ideas behind Strategy Canvas is that uncertainty should be documented rather than hidden.
Most organizations document what they know.
Few document what they do not know.
Strategy Canvas introduces dedicated nodes for:
- Unknown information
- Weak assumptions
- Stakeholder disagreements
- Evidence gaps
The goal is not to remove uncertainty but to expose it.
Better decisions often come from understanding what remains unknown.
A reusable strategy language
I didn't want to hardcode every strategy framework into the application.
Instead, Might Work Studio has a definition layer that describes what different kinds of nodes are allowed to be.
NodeCategory provides hierarchy. NodeDefinition describes the node type and behaviour. NodeField defines structured information inside it. NodePort describes how it can connect to other parts of the graph.
The library has grown to more than 200 node definitions covering multiple approaches to strategic and marketing planning.
Communication Planning, Campaign Planning, Concept Planning and Digital Marketing Planning can therefore use the same engine without pretending they are the same process.
The aim isn't to create the One True Strategy Framework.
Those tend to have suspiciously expensive certification programmes.
The aim is to create enough vocabulary to model different ways of thinking.
Technical approach
The frontend is built with React and TypeScript, using a node-based canvas interface for manipulating the model.
The backend uses Python, FastAPI and SQLAlchemy, with PostgreSQL 17 for persistent storage and Alembic for database migrations.
The backend separates persistence, application logic and HTTP boundaries into models, repositories, services, schemas and routers. Domains currently cover canvases, node definitions and instances, connections, users and authentication, collaboration, assets, presentations and simulations.
The application runs in Docker Compose, separating frontend, backend and database services.
Autosave persists canvas changes continuously rather than making saving another piece of project management.
Privacy by architecture
Strategy is unusually sensitive data.
A real strategy workspace can contain future plans, commercial assumptions, weaknesses, research, internal disagreements and information that becomes considerably less strategic once your competitors can Google it.
So access control became part of the architecture early.
Passwords are hashed with Argon2. Authentication uses server-side sessions with opaque HttpOnly cookies. Only session token digests are stored, and sessions can expire or be revoked.
Authorization happens in the backend.
Canvas collaboration supports explicit roles such as editor, viewer and feedback access, alongside controlled guest sessions and share links.
Most importantly, platform administration and access to private content are treated as separate privileges.
That distinction also affects logging, diagnostics, assets and future AI integrations.
Simulation
Once strategy becomes structured data, you can do more than display it.
The Simulation Suite is designed for exploring alternative versions of the same strategic model.
Change an assumption. Introduce another condition. Modify a relationship. Compare scenarios without destroying the original plan.
Simulation has its own persistence and backend domain rather than existing as an AI prompt attached to the canvas.
That is deliberate.
The purpose isn't to have an LLM confidently hallucinate what happens in 2029.
It is to make the consequences of different assumptions easier to explore.
AI can help with that later.
The model comes first.
AI without making everything an AI feature
Might Work Studio is designed to work without AI.
AI is an optional layer around the structured model, with three main roles.
A wizard can help turn a conversation into an initial node structure. A simulation interpreter can work with qualitative and multimodal material when developing scenarios. An output assistant can improve, condense and adapt strategy texts and presentations.
These are assistants around the model.
They are not the model.
The software shouldn't become useless when the model API is disconnected, and sensitive work shouldn't automatically have to leave the application just because somebody added a sparkle icon to a button.
AI can help manipulate the model.
It doesn't replace having one.
From thinking to presentation
A strategy model isn't particularly useful if explaining it requires inviting everyone into the software.
Might Work Studio therefore treats presentation as another view of the underlying data.
The presentation system can select and structure information according to audience, purpose and desired depth. Visual assets can move from a private user library to canvases, individual nodes and presentation outputs.
The goal is not simply automated PowerPoint.
It is maintaining a connection between what was decided, why it was decided and how that decision is communicated.
Change the model and the source changes with it.
No archaeological expedition through FINAL_v8_use_this_one.pptx required.
Workshops start messy
Structured thinking doesn't always start structured.
Workshop Mode reverses the normal flow. Instead of selecting formal nodes first, participants can begin with freeform notes.
Those notes can later become semantic objects such as Fact, Opinion, Idea, Perspective or Policy, then be grouped, prioritised and connected to the wider model.
That gives the system two directions of travel.
Start with a framework and fill it with thinking.
Or start with thinking and discover the structure later.
Why Might Work?
The project started as CanvasOS and later became StrategyCanvas.
Both names described what I was building at the time.
Neither described particularly well what it eventually became.
The canvas is now only one interface to a larger system of models, simulations and outputs. And the interesting part isn't really the canvas anyway.
It's uncertainty.
A strategy isn't knowledge of the future. It is a structured argument that, given what we currently know, something might work.
Make the assumptions visible. Connect the evidence. Challenge them. Change the conditions. See what survives.
For a while the obvious name was mightwork.it.
Excellent joke.
Unfortunately, I would have needed an Italian passport to fully commit to it.
So it became Might Work Studio.
The uncertainty stayed.
Built as a portfolio product. Designed as a real one.
Might Work Studio currently exists as a portfolio tool.
It brings together things I have previously done separately: strategy, concept development, service design, information architecture, software development, data modelling, visual design and security engineering.
That doesn't mean the architecture is pretend.
The application has persistent users and canvases, reusable node definitions, backend authorization, collaboration, asset management, presentation infrastructure and a persistent simulation domain. It is being built with actual deployment, self-hosting and small-scale beta use in mind.
Current state
The core application works.
Strategy models can be built from reusable node definitions and persisted as canvases. Authentication and collaboration are in place. Assets can be attached to the model and used in outputs. Presentation generation is being developed around different audiences and purposes. Simulation has moved from concept to persistent backend infrastructure.
The next milestone is a public demo and a small beta with real organisations.
Not because the feature list is finished.
It never will be.
The more useful test is whether someone can take a complicated situation, put it into the system and come out understanding it better.
Might work
Build log
Admin does not mean God
Strategy documents contain exactly the kind of information you don't want casually leaking into logs, dashboards or some helpful admin panel.
So privacy became architecture rather than a checkbox.
Authentication moved to persistent users, Argon2 password hashing and server-side sessions using opaque HttpOnly cookies. Only token digests are stored. Sessions can expire and be revoked.
More importantly, I adopted a rule for the product itself:
Admins operate the platform. They do not automatically get to read private canvases.
It makes debugging slightly less convenient.
Publish the baby
Today I'm making the project public.
Not launching it. Not declaring version 1.0. Not pretending I have heroically completed software.
Putting it outside for people to see.
The system now has a typed node model, reusable strategy frameworks, persistent canvases, authentication and sharing, presentation generation, assets and the foundations of scenario simulation.
There is also an increasingly embarrassing list of things I still want to build, improve and re-iterate even before testing.
But perfect is the enemy of good, and shipping, and fun.
Stop building the labyrinth
By now the dangerous part wasn't a lack of features.
It was having enough features to get lost in them.
So the focus shifted toward making the existing system legible: better presentation output, simulation persistence, visual assets, security, clearer workflows and something another human could actually understand in a demo.
There are still dozens of plausible directions.
That is not a roadmap.
That is a labyrinth without David Bowie in the heart of it.
Naming is apparently also software development
The project started as CanvasOS.
That made sense when I thought I was building a clever canvas.
Then it became StrategyCanvas, which explained the product nicely and had roughly the same brand distinctiveness as calling a restaurant Food Place.
As the system expanded into workshops, simulations and presentations, even canvas became misleading. The canvas is just one interface to the model.
For a while I landed on mightwork.it.
I loved it.
Strategy is uncertainty. You build a model, expose the assumptions and ask whether this might work.
Unfortunately .it was an Italian country-code domain and, despite being half German, I had neglected to acquire an Italian passport.
.Studio url was luckily not that much more expensive.
Fuck the SaaS look
The visual identity went through several directions before settling on something warmer, calmer and friendlier.
The application deals with complicated structures. The interface therefore has no business making them feel even more complicated.
I wanted clarity without sterility and professionalism without the visual language of software purchased by a procurement committee in an airport hotel.
The friendlier direction won.
There is still colour, character and a little weirdness.
Strategy has suffered enough navy blue, modern and McKinseylikes.
Simulation gets plumbing
Simulation stopped being a sketch on the roadmap and became a backend domain.
Models, schemas, repository, service and router layers went in, followed by persistence migrations and HTTP tests.
The API now has explicit operations for creating and manipulating simulation state rather than hiding the feature inside generic canvas logic.
This is the stage of software development where screenshots become significantly less exciting while the product becomes significantly more real.
There are only so many ways to photograph a repository layer.
Scenarios without asking an AI oracle
I wanted simulation, but not a text box where an LLM invents three futures and calls itself strategic foresight.
So Simulation Suite started without AI.
A scenario is a structured variation of the model: change assumptions, variables or relationships and examine what follows. The important part is preserving the relationship between the original plan and its alternatives.
The user draws and edits the strategy.
The application maintains the data model underneath it.
AI can help interpret that model later.
The canvas is not the deliverable
Nobody walks into a board meeting carrying an infinite node graph.
So I started building presentations from the same underlying model.
The target isn't one export button. The same strategy should be able to become a short presentation, long presentation, C-level summary, investor view, internal deck, pitch or workshop report.
Then came presentation styles: professional, creative, inspiring and others.
This clarified one of the project's better ideas:
One model, many views.
Change the model once. Tell the story differently depending on who needs to hear it.
Far more useful than maintaining six PowerPoints called FINAL_v7_reallyfinal.pptx.
Let other people in, carefully
A strategy tool eventually has to survive contact with other humans.
Canvas membership gained editor, viewer and feedback roles. Guest sessions and share links followed, including proper expiration and logout behaviour.
The interesting part wasn't sharing. It was sharing without weakening the privacy model.
The same thinking now applies to assets. Images can belong to users, canvases, nodes and presentations without becoming an excuse for platform administrators to browse through people's work.
Collaboration is easy if everyone gets the keys.
I decided against that particular innovation.
Saving should be boring
I didn't want a Save button.
The canvas should behave more like Miro: change something and the system remembers it. Autosave now tracks edits and reports saving, saved and failed states without turning persistence into a user task.
This creates a surprisingly large number of less glamorous questions.
What constitutes a change? What happens during rapid edits? What if a request fails? What gets restored after refresh?
Nobody puts database persistence in a product trailer.
Everybody notices when it doesn't work.
One engine, several kinds of thinking
Communication Planning came first, followed by Campaign Planning, Concept Planning and Digital Marketing Planning.
This was the first point where the architecture started paying rent.
The canvases looked different because the problems were different, but underneath they used the same node-definition system, connections and output infrastructure.
That suggested a much larger idea:
Don't build a strategy template.
Build a system capable of describing strategy templates.
Subtle difference. Considerably worse for the roadmap.
200 ways to have a meeting
The node library grew past 200 definitions.
I started breaking strategic frameworks into reusable primitives instead of implementing every framework as another bespoke feature.
The backend gained NodeCategory, NodeDefinition, NodeField and NodePort. Definitions could describe their own fields, inputs, outputs and behaviour instead of relying on frontend hardcoding.
This was boring in exactly the right way.
The more vocabulary the platform understands, the less application code is needed to invent another canvas.
Strategy frameworks are, after all, mostly different arrangements of people asking similar questions in increasingly expensive rooms.
Feature creep discovers cocaine
Once the basic model worked, every idea started looking reasonable.
Workshops. AI. Simulations. Presentations. Wizards. Research. Collaboration. Scenario planning. Exports. Templates.
All excellent ideas.
Together, an excellent way to never finish anything.
So I reduced the immediate problem to four things: make the node system solid, protect the data, produce useful outputs and create somewhere to experiment with scenarios.
Everything else could wait.
Some of it waited for almost three days.
The diagram is not the model
The first important architectural decision was separating what you see from what the system knows.
A node is not a coloured rectangle. It has a type, fields, ports and behaviour. A connection isn't a decorative arrow. It describes a relationship that other parts of the system should eventually be able to reason about.
That distinction sounds obvious.
It also happens to be the difference between building a drawing tool and accidentally starting to build a small operating system for strategic thinking.
The second option sounded more interesting.
Obviously also much more work.
Late June. Strategy should probably not be a PowerPoint
The original idea was fairly small: build a node-based tool for strategy.
Most strategy work starts as a messy network of facts, assumptions, goals, opinions and dependencies. Then, through some strange corporate ritual, we flatten all of it into rectangles in PowerPoint.
I wanted to keep the structure alive.
The first prototype borrowed its mental model from Blender rather than Miro: typed nodes, meaningful connections and outputs generated from the graph.
React and TypeScript in the front. FastAPI, SQLAlchemy and PostgreSQL behind it.
At this point it was mostly an editor.
Unfortunately, it worked.
That meant I had to decide what it was actually for.