A change you can review
Adding a constraint appends one object to one array, so a colleague can read the diff and say no. The others store one deep XML tree or a database — none of them can show a conceptual change as a change.
Four tools model facts. Only one of them treats the model as source code.
Fact-based modelling is well served. NORMA is the free reference implementation, FactEngine’s Boston is a knowledge-graph suite, and CaseTalk is the FCO-IM methodology suite. They are good tools built by people who have been doing this longer than we have, and if you already work in one, Factum will read your models rather than ask you to abandon them.
What none of them does is treat a conceptual schema the way your team already treats everything else it builds — as text in a repository, reviewed in a pull request, checked by the build, and readable by the agent writing code against it. That is the whole of our position.
Every other fact-based modelling tool asks you to leave the codebase. Factum is the one where the conceptual schema is source code.
Ordered from what every tool must do down to what only some attempt. Rows reflect what each vendor documents publicly — see the note at the foot of this page.
| NORMA | Boston | CaseTalk | Factum | |
|---|---|---|---|---|
| Method | ORM 2 | ORM / FBM | FCO-IM | ORM 2 |
| Runs on | Windows, Visual Studio | Windows, plus browser | Windows, plus browser | macOS, Linux, Windows |
| Price | Free, open source | USD 640 perpetual | Subscription; free tiers | Free, MIT |
| Model is stored as | XML document | XML document | SQL database | JSON text |
| Reviewable diffs and merges | ○No | ○No | ○No | ●Yes |
| Command line / CI | ○No | ○No | ○No | ●factum + action |
| Readable by a coding agent | ○No | ○No | ○No | ●MCP server |
| Reads other tools’ formats | ◐Its own | ◐Its own + NORMA | ◐Its own | ●All four, both ways |
| Full ORM constraint family | ●Yes | ●Yes | ◐FCO-IM set | ●Yes |
| Natural-language verbalization | ●Yes | ●Yes | ●Yes | ●Yes |
| Sample populations | ●Yes | ●Yes | ●Core to method | ●Checked against constraints |
| Relational mapping | ●Yes | ●Yes | ●12+ dialects | ●5 dialects |
| Property graph mapping | ○No | ●Yes | ◐View only | ●Yes |
| Schema drift against a database | ○No | ○No | ○No | ●Yes |
| Application-code generation | ◐Templates | ●Templates | ●7 languages | ○Not yet |
| Multiple notations in one tool | ◐Two | ●Five | ●Seven | ◐Three |
| Real-time collaborative editing | ○No | ●Yes | ◐Repository | ◐Git |
| AI assistance | ○No | ●Virtual Analyst | ●Multi-provider | ●Your own agent |
●full support ◐partial ○absent
Every one of these follows from a single decision — that a model is a text file in the repository. A competitor would have to rewrite its storage layer to match, which is the kind of change mature products do not make.
Adding a constraint appends one object to one array, so a colleague can read the diff and say no. The others store one deep XML tree or a database — none of them can show a conceptual change as a change.
factum validate in CI, and a pull request comment saying what the model now
says. A schema kept inside an application can only be checked by someone who has that
application open.
The MCP server hands your coding agent the conceptual model, so the code it writes matches the domain rather than guessing from table names.
We read and write NORMA, FBM, Ossie and UMS. Every other tool reads its own format and, at best, one neighbour’s.
Compare the model against the database that is actually deployed and get the statements that would reconcile them. Nobody else closes that loop.
Free and MIT, installed from a marketplace your analysts already have open — no licence, no Windows machine, no procurement conversation.
A comparison that only flatters the author is not worth reading. Four things you would genuinely miss by choosing us today.
CaseTalk emits DDL for Snowflake, DuckDB, Redshift, SAP HANA, Databricks and ClickHouse, plus TypeScript, GraphQL, C#, Kotlin, Java, Python and Delphi. We emit five SQL dialects and one Cypher variant.
Boston Enterprise gives a team one model and simultaneous cursors. Our answer is branches and review, which is better for developers and worse for a workshop.
Seven synchronised views in CaseTalk, five in Boston, three in ours. Most of theirs are read-only renderings of one model, but they win a demo.
NORMA has been the reference implementation for two decades and shipped a release in May 2026. Boston and CaseTalk have years of production use behind them. We are new.
You model in a workshop with a whiteboard and stakeholders, and never touch a repository. Boston’s browser client or CaseTalk’s Portal will serve you better than a text editor will.
You need code generated for seven languages tomorrow. CaseTalk already does that.
Your model should live beside the code it describes, go through review, and fail the build when someone breaks it.
You want to hand a coding agent the actual domain model instead of hoping it infers one.
You want to move a model between tools without losing it — which is worth doing even if you keep modelling somewhere else.