The problem this product was built around, and who it is for.
Every company that has documented a process has the same problem. The diagram was drawn once, by someone who has since moved on, in a tool nobody wants to reopen. The process changed six months ago. The diagram did not. So the diagram quietly becomes fiction, and everyone stops trusting it.
The reason is not laziness. It is that updating a diagram is disproportionately expensive compared to the size of the change. Moving one approval step costs you an hour of dragging boxes and re-routing arrows. So nobody does it for small changes, and the small changes are exactly what accumulate into a diagram that is wrong.
TAZZOGRAM turns the diagram into text. Once a process is Mermaid code, changing it is a sentence, not an afternoon: "add a compliance review between Legal approval and signature". Text also means the two things drawings never gave you: a real diff (what exactly changed between version 4 and version 5) and a real history (who changed it, when, and the business reason they gave).
You do not redraw anything to get started. TAZZOGRAM reads your existing file, including a photo of a whiteboard or a PDF someone emailed you.
Describe the change the way you would describe it to a colleague. TAZZOGRAM rewrites the code and explains back what it did.
Each accepted change can be committed to GitHub with a business-language message, so the history reads like decisions, not file saves.
TAZZOGRAM is built for the people who own processes rather than the people who own drawing tools: business analysts, process and quality teams, operations leads, compliance and audit functions, consultants who inherit a client's undocumented process and have to make sense of it fast.
That is the niche deliberately. Developer-facing diagram-as-code tools already exist and assume you are comfortable in a code editor and a git client. Drawing tools already exist and assume you have the patience to draw. TAZZOGRAM sits in the gap: the rigour of diagram-as-code, reached through business language instead of syntax, with the confidentiality controls a real company needs before it will let any of this near a language model.
The confidentiality point, stated up front
Business process diagrams are full of things you cannot casually send to a third party: customer names, internal system names, supplier names, org structure. TAZZOGRAM's Redaction Glossary replaces those terms with neutral placeholders before anything is sent, and puts them back afterwards. This is not a setting buried in a menu. It is the centre of how the product is designed, and it has its own section below.
Everything in the control row above the code panel, in one picture.
TAZZOGRAM puts every control that changes how the app behaves into a single dark strip at the top of the left panel. Nothing important is hidden in a menu. The picture below is that strip, with each control numbered.
The control strip as it appears at the top of the left panel. This example shows PRODUCTION mode with GitHub Glossary storage, 65 Glossary terms loaded, Hi-Fi fidelity, and a warm cache with 19 minutes and 33 seconds left on it.
| # | Control | What it decides |
|---|---|---|
| 1 | Open file / Open folder | Which diagram you are working on. The folder button is only used for Glossary training, never for converting. |
| 2 | PRODUCTION / TRAINING | Whether you are doing real work, or teaching the app which words are confidential. See Production vs Training. |
| 3 | Local / GitHub | Where your Redaction Glossary is kept, and therefore whether your colleagues share it. See Local vs GitHub. |
| 4 | Hi-Fi / Lo-Fi | How carefully the diagram is read, and how much that read costs. See Hi-Fi vs Lo-Fi. |
| 5 | cache: WARM / COLD | Whether your next request will be cheap or expensive, and how long you have left. See Cache, cost and time. |
| 6 | Log out | Ends the session immediately. Sessions also end on their own after a period of inactivity. |
| 7 | The small number badge | How many term pairs are currently in your Redaction Glossary. If this number is 0, nothing is being redacted. |
The two small question marks
The tiny ? next to the fidelity and cache pills are real
buttons, not decoration. They open a short explanation in the app
itself. They deliberately sit outside the control they explain
so that clicking them can never toggle the thing you were trying to
read about.
What TAZZOGRAM can read, and what happens to each format.
There are two buttons, and they do very different things. Getting this distinction right saves you both money and confusion.
Loads one diagram to work on. In PRODUCTION mode this is the button that converts a diagram into Mermaid code.
Only used in TRAINING mode. It walks a folder of diagrams and harvests candidate confidential terms from them. It never converts anything and never costs anything.
Not every format is equal. Some formats are structured text, which TAZZOGRAM can read locally in your browser at no cost. Others are pictures, which have to be interpreted by the model, and that is where cost comes from.
| Format | How it is read | Notes |
|---|---|---|
.mmd .mermaid .md | Locally, free | Already Mermaid. Loaded straight into the editor with no conversion step at all. |
.bpmn | Locally, free | Real BPMN 2.0 XML. Tasks, gateways, events and lanes are read directly from the file structure. |
.drawio | Locally, free | Read from the XML, including the compressed variant draw.io produces by default. |
.svg | Locally, free | Shapes and text are extracted from the vector data. |
.vsdx (Visio) | Locally, free | A .vsdx file is a ZIP archive of XML, so it is unpacked and read in the browser. |
.jpg .png .heic | Model reads the image | A photo of a whiteboard or a screenshot works. This costs tokens, because something has to actually look at the picture. |
.pdf | Model reads the pages | Page count is capped, so a 200 page document will be refused rather than silently costing a fortune. |
The practical takeaway
If you have the choice, export your diagram to .bpmn,
.drawio, .svg or .vsdx rather
than screenshotting it. Same diagram, better accuracy, and the reading
step costs nothing.
Two modes, and why the app locks itself in one of them.
The active mode is the brighter one. In TRAINING mode the app deliberately locks the things that would cost money, so you cannot accidentally spend tokens while doing setup work.
TRAINING mode opens diagrams for one reason only: to scan them locally and collect words that look confidential. If the Apply button stayed enabled during that, it would be very easy to open a sensitive diagram for scanning, forget which mode you were in, and send it to the model before your Glossary was ready. The lock removes that possibility rather than warning you about it.
When you see "Locked while training the Glossary. Switch to Production to type a change request." in the change request box, that is this lock, working as intended.
Why it exists, what it actually does, and what it does not protect you from.
This is the feature that decides whether a real company can use TAZZOGRAM at all. A process diagram is not neutral content. It routinely contains the names of your customers, your suppliers, your internal systems, your cost centres and your people. Sending that to a third party model, unfiltered, is a conversation with your legal and security teams that most business analysts would rather not have.
The Glossary is a list of pairs. On the left, a real term from your business. On the right, a neutral placeholder. Before anything is sent anywhere, TAZZOGRAM replaces every real term with its placeholder. When the answer comes back, it puts the real terms back before you see them.
The substitution happens before the network call, not after. That ordering is the whole guarantee.
Be honest about the limits
The match is exact text. If your Glossary contains
Banco Itaú, it will not catch Banco Itau
without the accent, or BANCO ITAU S.A., or an abbreviation
your team invented. The Glossary protects the terms you put in it, and
only those. That is why the Training mode exists: to help you find the
variants before they matter, not after.
It also cannot redact meaning. If your process is unusual enough to be recognisable from its shape alone, placeholders will not change that. Treat the Glossary as a strong, practical control over identifiers, not as anonymisation of the process itself.
Building the list without typing it by hand, and without spending anything.
Typing a Glossary by hand for a large organisation is not realistic. TRAINING mode exists so you do not have to.
The change request box locks and the action buttons go quiet. Nothing you do from here costs money.
Use Open folder for a whole directory, or Open file for one at a time. Only the locally readable formats are scanned: .mmd, .mermaid, .md, .markdown, .bpmn, .drawio, .svg, .vsdx. Images and PDFs are skipped here on purpose, because reading those would require the model, and this step is meant to be free.
The scan is deliberately generous. It will propose more terms than you need, including some that are obviously harmless. That is the intended behaviour: it is far cheaper to delete a wrong suggestion than to discover a missed one after the fact.
Delete anything that does not need protecting, and add by hand anything the scan could not have known about. Pruning is the actual work, and it is a one-time investment per business area.
From now on the Glossary applies silently to every request. You do not have to think about it again until your vocabulary changes.
Reading the number badge
The small number above the Local / GitHub pills is how many pairs are currently loaded. It is the fastest sanity check in the app. If you expected 65 and you see 0, your Glossary is not loaded, and nothing is being redacted. Check which storage option is selected before you send anything.
The single most consequential choice in the app. Read this one properly.
Your Glossary has to live somewhere. The two pills next to the mode buttons decide where, and that decision has real consequences in both directions. Neither option is simply better.
Where it lives: only in this browser, on this device. It is never transmitted anywhere.
Strength: the strongest possible confidentiality position. Your list of sensitive terms really does never leave your machine.
Cost: it is trapped there. A different browser, a different laptop or a cleared cache means starting from zero. Your colleagues cannot benefit from your work, and you cannot benefit from theirs.
Where it lives: in a GitHub repository, filed under your organisation and the specific diagram.
Strength: it survives browsers and devices, and everyone in your Business Division works from the same list.
Cost: the list of terms is now stored outside your browser. The terms themselves are still never sent to the model in the clear, but the Glossary file exists on a server.
This is the part that trips people up. When you choose GitHub, your Glossary is not filed under you. It is filed under your Organisation or Division ID, together with the specific diagram. Everyone who resolves to the same Organisation ID opens the same file. That is the sharing mechanism: not a copy each, one list.
Three colleagues at acme.com all resolve to the Organisation ID acme-com, so all three open, edit and see the same Glossary for the same diagram.
You do not set it yourself, and the app does not let a browser claim one. It is worked out on the server from the address you signed in with, in this order:
| Order | Rule | Example |
|---|---|---|
| 1 | An ID assigned to you by the TAZZOGRAM administrator | Used when one Division spans more than one domain, for example acme.com and acme.com.br together, or a contractor who should share your team's list. This always wins. |
| 2 | Your company email domain | [email protected] becomes acme-com. This is the default and needs no setup: two colleagues share the moment they both sign in. |
| 3 | A private bucket, just for you | Applied to personal addresses such as Gmail or Outlook. |
Why rule 3 is not negotiable
If rule 2 were applied to a personal email provider, every Gmail user
in the world would end up in one shared bucket called
gmail-com, able to read and overwrite each other's
confidential business terms. So personal addresses always get their own
private bucket instead, and can never end up sharing by accident. If a
person on a personal address does need to share with a team, an
administrator assigns them an ID under rule 1. Deliberately, never
accidentally.
Switching between the two
Switching from Local to GitHub merges rather than replaces. Whatever you had locally is combined with whatever your team already had on GitHub, and nothing is silently dropped. Where the same real term exists on both sides, your local version wins, because that is the one you were just looking at. Your local copy is also kept up to date the whole time you are in GitHub mode, so switching back is instant and loses nothing.
Stated plainly, for your security review
In the current release, shared Glossaries are stored in a repository operated by TAZZOGRAM, separated by Organisation ID. That separation is real, but it is not the same thing as your Glossary living in infrastructure your own company controls. If your organisation requires the second, say so before you switch anything to GitHub. Local mode remains available to every account, with no functional penalty to the redaction itself.
What WARM and COLD really mean, and why the countdown is worth watching.
This is the one piece of TAZZOGRAM that looks technical but is actually about money and rhythm. Understanding it in two minutes will change how you work, and how much your work costs.
Every time you ask for a change, TAZZOGRAM has to give the model the full context again: your diagram, the conventions it must follow, the rules of the format. That context is large, and it is almost identical from one request to the next. Paying full price to re-send the same material every time would be absurd.
So it gets cached. The first request pays to put that context into a temporary store. Every request after that reads from the store instead, at a small fraction of the price. The catch is that the store expires. It has a clock on it, and the clock restarts every time you use it.
The countdown on the pill is how long the cache has left. Every request you make resets it back to the top.
| What you see | What it means | What to do about it |
|---|---|---|
| cache: COLD | No cache, or it expired | Nothing is wrong. Your next request simply pays the full rate and rebuilds the cache. If you are about to do several changes, this is a good moment to start. |
| cache: WARM 19:33 | Cache is live, 19 minutes 33 seconds left | This is the cheap window. If you have more changes queued up, do them now rather than after your next meeting. |
Two clocks, do not confuse them
The cache countdown is about cost. When it runs out, your next request costs more, and nothing else happens.
The session timeout is about access. If you leave the app idle long enough, you are signed out and have to sign in again. These are separate mechanisms with separate timers, and one running out tells you nothing about the other.
On the cost figures shown in the app
The running cost estimate in the status bar is exactly that: an estimate. It is calculated from a character-count approximation and the current published rates, not from the exact token usage returned by the provider. It is reliable for spotting a request that is unusually expensive. It is not an invoice.
The accuracy dial, and when turning it down is the right call.
Click the pill to switch. The small ? beside it opens the same explanation inside the app.
The diagram is read at full fidelity and you get a detailed, on-screen account of what was understood.
Use it for: dense diagrams, many lanes, small text, anything where a misread box would matter.
Costs less. SVG files are converted to a flat image before being read, and the summary is trimmed to a single line.
Use it for: simple, clean diagrams with a handful of steps, or a quick look at something you are not going to keep.
When in doubt, start in Hi-Fi. A cheap conversion that gets the process wrong is not a saving, because you will pay again to redo it.
How to phrase a request so you get what you meant.
Below the code panel there is a box labelled USER CHANGE REQUEST, with your signed-in address next to it. You type what should change, press Apply, and the diagram is rewritten. Underneath, CLAUDE'S SUMMARY tells you in plain language what was actually done.
Name the steps exactly as they appear in the diagram. That is what makes a request unambiguous.
Reset, and what it does not do
Reset returns the diagram to the state it was in when you opened it. It does not undo one step at a time, and it does not touch anything you have already saved to GitHub. If you want a real safety net between changes, save to GitHub as you go. That is what the history is for.
The Diff button shows the previous version and the new one side by side, so you can confirm the change did what you asked and nothing else moved. Get into the habit of checking it before saving. This is the single biggest advantage of a diagram that is text: you can actually see what changed.
The link between a shape on the right and a line of code on the left.
The screen has two halves. On the left, the Mermaid code. On the right, the rendered diagram. They are the same thing in two forms, and Node IDs is the switch that makes the connection visible.
With Node IDs switched on, each shape shows the same short identifier used in the code, so you can point at a box and find its line instantly.
Turn them off when you want a clean picture to show to someone who does not care about the code.
− and + buttons, or Ctrl and scroll. Clicking the percentage fits the diagram to the window.Two copy buttons, two completely different results.
Same icon, different panel, different result. Check which panel you clicked in.
| Button | What lands on your clipboard | Paste it into |
|---|---|---|
| Copy on the code panel | The Mermaid source as plain text | Confluence, Notion, GitHub Markdown, a wiki, an email, any editor. Anywhere that renders Mermaid will draw it for you. |
| Copy on the diagram panel | The rendered diagram as SVG | PowerPoint, Word, Figma, draw.io. It stays sharp at any size because it is vector, not a screenshot. |
A habit worth forming
For anything that will be maintained later, paste the code, not the picture. A picture in a slide is dead the moment the process changes. The code can be pulled back into TAZZOGRAM and updated in one sentence.
Getting the diagram out of TAZZOGRAM and into the tool your organisation actually uses.
Along the bottom of the left panel there is a row of export buttons. Each produces a real file in that format, not a renamed screenshot.
The footer row of the code panel. Exports on the right, sharing and comparison on the left.
| Button | What you get | Use it when |
|---|---|---|
.mmd |
The raw Mermaid source, plain text | You want the version that any editor opens, that a wiki can render, and that TAZZOGRAM itself can re-read later for free. This is the archival format. |
.drawio |
Native draw.io XML | Your team lives in draw.io, Lucidchart or diagrams.net and wants to keep editing there. |
.vsdx |
A native Visio file | You have to hand something to a Visio shop. Opens directly, no plugin. Uses generic shapes rather than true BPMN typing, which is fine for review and reading. |
.bpmn |
Real BPMN 2.0 XML | The diagram is going into a proper BPMN tool such as Bizagi Modeler or Camunda. Tasks, gateways, events and lanes are typed correctly. |
Exports come back in
All four exported formats are also formats TAZZOGRAM can read. Export to
.bpmn, let a colleague edit it in Camunda, and you can
open their file back in TAZZOGRAM afterwards. The round trip works, which is
what stops this from becoming another one-way tool.
Why a diagram deserves a history, and what the button actually does.
Save to GitHub commits the current Mermaid code with a commit message written in business language, not file-save language. Over time you end up with something no drawing tool has ever given you: a readable record of how a process evolved and why.
This is what "the diagram has a history" actually looks like. Each entry is a decision, with a name and a date against it.
After a save, the button briefly turns into a status badge so you know what happened without opening anything:
Save deliberately, not constantly
A history is only useful if each entry means something. Saving after every trivial tweak produces noise that is as useless as no history at all. Save when you have finished a change that a colleague would recognise as a change.
The questions that come up in the first week.
Because you are on Local storage, which by design never leaves the browser it was built in. Two browsers means two separate lists. Switch to GitHub storage and everyone in your Organisation works from one list, on any device. See Local vs GitHub.
Check three things, in order: you are both on GitHub storage rather than Local; you both signed in with your company address rather than a personal one; and you both have the same diagram open, since Glossaries are filed per diagram as well as per Organisation. If your Division spans more than one email domain, ask the administrator to assign you both the same Organisation ID.
Structured formats such as .bpmn, .drawio, .svg, .vsdx and Mermaid are read entirely in your browser. Images and PDFs have to be interpreted, so those are sent, with Glossary substitution applied first. In TRAINING mode nothing is sent at all, ever.
Your cache almost certainly expired between the two requests. The first request after expiry pays to rebuild it. See Cache, cost and time.
Sessions end after a period of inactivity, and also have a hard limit regardless of activity. This is separate from the cache countdown. Sign in again and continue. Anything already saved to GitHub is untouched.
If you converted from an image or a PDF, try the structured export instead, since reading a picture is inherently harder than reading a file. If you were in Lo-Fi, try Hi-Fi. And you can always fix it directly: it is text, so correcting one line is quicker than re-running anything.
Yes. The EN / PT switch is in the top right of the app and translates the interface on the fly.
It is treated exactly like a term the scan found: replaced before sending, restored afterwards. Hand-added terms are how you cover the variants a scan cannot guess, such as abbreviations and internal nicknames.