Always shows the whole dataset that hasn't been interpreted yet — independent of whatever narrower subset steps 2–6 are currently analyzing (see the "Current selection" panel in step 2 for that). Flag outliers, spot obvious groups (e.g. "paid in full after 2 actions") and send them to 6. Knowledge — they're excluded from "remaining" everywhere in the app once added.
About this dataset, and what this tool is for
loading…
Overview
Trace count, length distribution, and outcome mix for the whole dataset minus everything already sent to 6. Knowledge — narrows only as groups are interpreted, never when steps 2–6 change what they're analyzing.
loading…
Data dictionary — all trace features
Every field available per trace, with type and summary statistics (over the traces still remaining above).
loading…
Start / end dates — year × month distribution
Trace counts by calendar month and year, for the first event (start) and last event (end) of each trace — hover a cell for its exact count.
start date
end date
Outliers — by trace length
Outliers — by other attributes
Outliers — by date
Obvious groups — common short traces
Hover a candidate for its outcome breakdown and process graph.
loading…
Process graph (counts) — whole dataset
A plain counts-based process graph of the whole (remaining) dataset — nodes and edges sized purely by how often they occur. Same layout and self-loop/hollow-node conventions used everywhere else in the app.
loading…
Choose which facets describe a trace for topic modeling. Suggestions are scored against the current selection below (sharpness × outcome-NMI at a quick K=4) — recompute here whenever it changes. Hover any switch for what it captures, illustrated with a real example from this dataset; the reference table at the bottom of this tab lays out every family the same way at once, including the two most recently added — gap-augmented 2-grams and attribute-augmented activity tokens.
Current selection
loading…
Encoding
Suggestion detail
Click "Score candidates" to see which facets look informative for the current working set.
Process graph (counts) — current selection
A plain counts-based process graph of the current selection, before any encoding or topic fit — nodes and edges sized purely by how often they occur. Same layout and self-loop/hollow-node conventions as step 4's process graphs; once you fit topics there, you'll also get a weight-based view to compare against this one.
loading…
Encoding reference — every family, on this dataset
A full reference for every token family the encoding library supports, with a worked example
drawn from a real trace in the currently loaded dataset (not a generic illustration) — the same example case throughout, so the rows are
directly comparable. Hover any switch above for this same explanation and example in a tooltip; this table just lays out all of them at once.
loading…
Run NMF across a range of K on the working set, using the encoding from step 2. Use this to pick a K for step 4 — persistent color bands across many K's mean a stable topic; a node fed by several thin bands (not one clean parent) is a "wastebasket" worth a second look. Attribute fingerprints (step 4 onward) aren't shown here, since this view is about topic stability across K, not any one K's groups yet.
Pooled 2D embedding — every topic from every K; proximity ≈ similarity
Elbow curves — reconstruction error (SSE), silhouette, and how much of the sweep satisfies the filters above, across K
How to pick a candidate K from this
There's no single correct K — these are the patterns worth looking for in the views above, roughly in order of how much weight to give them:
pattern
what it looks like above
what it suggests
stable topics
A band of consistent color running across many adjacent K columns without splitting or merging — the same behavioral pattern keeps re-emerging as K grows.
A real, robust pattern in the data — not an artifact of that particular K. A candidate K is one where most of the topics look like this.
outcome-pure topics
A node's outcome bar (or, with the pie toggle on, its pie) dominated by one color — one outcome makes up most of that topic's traces.
This topic is already doing useful work separating behavior by outcome — exactly what step 4 onward wants to build on. Turn the pie toggle on specifically to scan for this across a whole K column at once.
wastebasket topics
A node fed by several thin, unrelated-looking incoming bands rather than one clear parent — see the tab-flow note above.
Likely a generic, non-discriminative topic absorbing whatever doesn't fit elsewhere. More of these as K grows is a sign you've gone far enough — the next split isn't finding new structure, just fragmenting noise.
diminishing returns
Increasing K stops producing new stable, outcome-pure topics and only produces more wastebaskets or ever-thinner splits of an already-clean topic.
A reasonable stopping point — the K just before this is usually the better candidate than the largest K tried.
elbow / silhouette peak
In the elbow curves below: reconstruction error (SSE) flattens out (each further K buys progressively less fit-quality improvement), or silhouette peaks then declines.
A quantitative cross-check on the visual patterns above, not a replacement for them — the two don't always point to the same K, and when they disagree, trust the visual patterns (a real behavioral split can lower silhouette even when it's genuinely useful) unless the disagreement is large.
This choice is scoped to one iteration, not permanent: it's the best K for the current working set under the current encoding (step 2). Once you've interpreted a group and either narrowed the working set or reopened one, or changed which facets describe a trace, it's normal — expected, even — to come back here and land on a different K. Nothing about this step commits later steps to today's choice.
Fit and interpret topics at one chosen K. Each heatmap row now carries its topic's N, dominant outcome, and full outcome mix alongside its term weights — no separate topics table needed. A small dot after the outcome bar (recent addition) means at least one case attribute — or the creation date, where reliable — diverges from the working set for that topic; hover the row for exactly which, and by how much. Not satisfied? Go back to 3. K-sweep to pick a different K, or 2. Encoding to change what a trace is described by.
Fit
Term × topic heatmap
Each column is a term, each row a topic. The two left columns before the term matrix show, per topic: N (traces dominant in it) and dominant outcome (with a segmented bar for the full outcome mix) — click a row (T0, T1, …) to sort columns by that topic's weights, or MAX/SUM to sort by overall term importance. Weights are shown to 3 decimal places; anything below 0.001 is treated as not present and shown as an empty cell.
Fit topics to see the term×topic matrix.
Process graph — counts vs. NMF weight
Two views of the same topic: left sizes each activity/transition by how often it actually occurs among traces dominant in this topic; right sizes it by the NMF weight the model assigns it — weights below 0.001 (and their edges) aren't shown, and a node whose count or weight is 0 still appears, as a small hollow circle, so you can see it's part of the vocabulary even though it doesn't occur here. Color compares each term's count and weight relative to this topic's own largest count/weight (not a single global scale, which would let a large topic's high raw counts swamp a small topic's genuinely distinctive terms): gold = weight exceeds count (distinctive of this topic), blue = count exceeds weight (common but not distinctive), gray = aligned. Dashed arcs are 3-gram patterns, always drawn as one smooth curve through all 3 activities; 2-gram edges are straight lines by default, or curved via the checkbox above; a self-loop (e.g. Payment→Payment) is drawn as a small circle above the node. Hover any node, edge, or arc for its exact value (3 decimal places) in both panels.
Fit topics to see per-topic process graphs.
sized by count · dominant-topic traces
sized by NMF weight
hover a node, edge, or arc for its exact count and weight
Small multiples — all topics at once
Every topic's process graph side by side (using the layout picked above), so you can spot at a glance which topics are simple chains vs. tangled "wastebaskets" without stepping through them one at a time. Click any card to open it in the detail view above.
Fit topics to see all topic graphs here.
Three ways to find a homogeneous, outcome-coherent group here: a topic (step 4), a cluster (k-means below, over topic weights), or a manual box/lasso selection on the embedding — box/lasso finds every trace in the working set with a similar topic-weight configuration to what you circled, not just the visible sample points. Each cluster row and its hover tooltip (recent addition) also show which attributes make that cluster different from the rest of the working set — a first read on why it's homogeneous, before you commit to it. Whichever way you found it, interpret it and send it to 6. Knowledge, or reopen it as a narrower working set in step 2.
Embedding
Clustering
Embedding — box or lasso select a region to send to step 6
UMAP's main job here: let you estimate visually how many distinct groups exist before committing to a cluster count below. Gold dashed outlines are shape-detected candidates.
embed to see a visual cluster-count estimate here
select a region (box or lasso) on the embedding — its outline stays visible, and a popup with its stats, process graph, and next-step options will appear here
Cluster N-sweep — how many clusters, evolving across a range
The same idea as step 3's topic K-sweep, applied to cluster count instead of topic count: sweeps k-means over a range of N on the current topic fit (not a separate re-tokenization — this reuses whatever topics are currently fit), so you can see which cluster counts are stable before committing to one above.
Pooled 2D embedding — every cluster from every N; proximity ≈ similarity of centroids in topic-weight space
Elbow curves — SSE (k-means inertia), silhouette, and how much of the sweep satisfies the filters above, across N
How to pick a candidate N from this
Same idea as step 3's table, adapted to clusters over topic weights rather than topics over tokens:
pattern
what it looks like above
what it suggests
stable clusters
A band of consistent color running across many adjacent N columns without splitting or merging.
A real, robust grouping in topic-weight space — not an artifact of that particular N. A candidate N is one where most clusters look like this.
outcome-pure clusters
A node's pie (toggle it on) dominated by one outcome color.
This cluster is already a good candidate to commit to Knowledge — turn the pie toggle on to scan a whole N column for these at once.
elbow / silhouette peak
SSE flattens out, or silhouette peaks then declines, in the curves below.
Same caveat as step 3: a cross-check, not a replacement for the visual patterns — trust a real, stable, outcome-pure split over a marginally-better silhouette.
diminishing returns
Increasing N stops producing new stable, outcome-pure clusters and only fragments an already-clean one.
A reasonable stopping point — the N just before this, not the largest N tried.
Same reminder as step 3: this is scoped to the current topic fit for one iteration, not permanent — refit topics at a different K, or narrow/reopen the working set, and it's normal to land on a different N next time.
Interpreted groups accumulate here — from obvious/outlier groups (step 1), homogeneous clusters, and manual selections (step 5). Each entry's traces are excluded from "remaining" everywhere in the app once added. Each card now also carries a small fingerprint panel (recent addition) — every case attribute the group has enough data to check, laid out together, with the ones that actually diverge from the whole dataset outlined — so the record captures not just what the group is, but a first-pass account of why. This tab is also where the next subset to investigate gets picked: either the whole "Remaining" pool, or an existing group reopened because it turned out not homogeneous enough — either way, the choice loops back to 2. Encoding.
Groups — 2D arrangement
hover a group for details · click to jump to its card on the right
How this is arranged: each interpreted group is reduced to a simple feature vector (the proportion of its traces' events belonging to each activity type), then projected to 2D via PCA (principal component analysis) — groups with similar behavioral profiles land near each other, dissimilar ones land far apart. Pie size ∝ √(trace count); slices show the outcome mix. This is a rough visual arrangement for orientation, not a precise similarity measure.
All interpreted groups — click a column header to sort; hover a row or a pie above to cross-highlight
Remaining / unexplained
loading…
Interpreted groups
Nothing added yet. Interpret an obvious group in step 1, or a homogeneous cluster in step 5.
A running, timestamped record of every significant action taken while working with the current dataset — fitting topics, running a K-sweep, embedding, clustering, flagging outliers, adding a group to knowledge, reopening one for further analysis, and so on. Purely observational: it documents the process, it doesn't affect it. Resets whenever you switch datasets.