05  ·  Tableau Frog  ·  active
projectsabout

Sydney

05 · Tableau Frog

Trying a different way to look at data

The idea I'm playing with is choosing the variables first and letting the app work out a chart. Then, when I select an interesting group in one panel, I can see how that group differs across the others.

Tableau Frog is where I've been trying out that interaction, along with some ways of getting an AI to help explore the data.

svelte 5tauri v2data exploration2026, active
Comparing subsets

What stands out about this group?

FIG. 1 · Select anywhere, see everywhere
Tableau Frog contrast lens showing enrichment across linked panels
Selecting a subset updates the other panels. A significance mode uses a two-proportion z-test and false-discovery-rate correction to mute some of the noisier differences.

I can click a bar, brush a range or select a cell, then compare that subset with the rest of the data. Shift adds another condition. The selections are saved per dataset. A lot of the implementation work is keeping those updates responsive as the dataset grows.

Asking questions

Using the AI suggestions as things to investigate

FIG. 2 · Hypothesis cards
AI Investigate mode generating hypothesis cards from a data selection
Investigate suggests hypotheses and a view that could test each one. The verdicts are recorded with the dataset.

Ctrl+I asks for hypotheses about a selection. Each suggestion comes with a projection to try, and I can record whether it held up. The model receives dataset metadata such as column names, types and summary counts, rather than raw rows. That still means the metadata is sent to an external model.

A local model

There's a random forest written in TypeScript, with feature importance and partial-dependence views. It's another way to look for relationships in the same dataset.

Other chart types

Extra chart types can register through window.tableauFrog. That gives the experiment somewhere to grow without putting every chart into the core.

Derived columns

Derived columns support things like log, z-score and bucketing. The expressions are parsed, rather than passed to JavaScript's eval.

Browser and desktop

Most of the app runs in a browser. The Tauri shell adds desktop file access.

Still figuring it out

Does this make exploration easier?

Open question

I'm not sure whether muting differences helps someone read a chart, or makes the remaining colours look more conclusive than they are. Statistical significance doesn't establish why a difference exists.

Open question II

Inferring a chart saves a choice until it infers the wrong one. I still need to work out how much manual control belongs alongside that.

MaterialsSvelte 5, TypeScript, Tauri v2
Vintage2026, active
NotesLinked selections, local models and AI-assisted exploration
Source github/xnmp/tableau-frog
Press / for the other projects05 / 12
Index12 / 12

  • 01Tauri ExplorerMy file explorer · Rust and Svelte · notes on building it
  • 02ScrivoMy Markdown reader and editor · Typora-style live preview
  • 03BallastMy mood diary · Markdown files · desktop and Android
  • 04Quickshell barMy Hyprland bar · agent state and quota pacing
  • 05Tableau FrogData exploration · linked charts · AI experiments
  • 06LambdaQueryPython-to-SQL compiler · started in 2017, revisited in 2026
  • 07Ashen CathedralA first-person Diablo experiment · Unreal Engine 5 · paused
  • 08Brood War AIBrood War agent · imitation learning · work in progress
  • 09AutomatedSpikeMagic deck search · learned pilots · XMage experiments
  • 10Zheng Shang YouOur family card game · learning agents · playable version
  • 11EskivA game from high school · recreated during Covid · search-based bot
  • 12Intuition on the Central Limit TheoremCentral limit theorem · interactive mathematical exposition
↑↓ move↵ openesc closeTap a project to open it