Flint - Visualization language for AI agents to generate expressive charts

Show HN: Microsoft releases Flint, a visualization language for AI agents

Flint is a Microsoft Research project introducing a visualization intermediate language designed specifically for the AI era. It empowers AI agents to reliably create expressive, high-quality charts from simple, human-editable specifications. By leveraging semantic types and an intelligent compiler, Flint automatically derives optimized settings for scales, axes, and layouts, eliminating the need for verbose low-level parameters. Supporting 46 chart types across Vega-Lite, ECharts, and Chart.js, Flint simplifies the generation and adaptation of visualizations, making it an essential tool for developers building agent workflows.

Flint is a visualization intermediate language that lets AI agents reliably create expressive, good-looking charts from simple, human-editable chart specs.
  1. rbalicki

    "For AI agents". I understand why everything needs to be marketed in this way, but it's just ... an easy-to-generate language for expressing charts. That's impressive! That's useful.

  2. cpard

    There’s an emerging pattern in agentic systems and this project is a great example.

    A deterministic layer like a compiler or generator of code with some kind of IR that the LLM generates and feeds it with.

    I feel we will be seeing this more and more in the near future.

  3. kveykva

    Is there a specific explanation about how this is better or different than vega itself? https://vega.github.io/vega/docs/specification/

    My understanding is that Vega was already an expressive DSL for visualizations and its probably already well spread through LLM training data.

  4. natch

    Since it isn’t mentioned on the page, I’ll mention that accessibility is a really important thing to design in when creating data visualizations.

    This podcast (I only have a spotify link) has a really good short interview on this:

    https://open.spotify.com/episode/18dHTAxCCeIaLOTch6tRld

    The interview is with Frank Elavsky who seems to be a rock star in the field (and no, I don’t know him and am not him) and made a project called Chartability relating to this which has heuristics, principles, and guidelines for a11y audits:

    https://chartability.github.io/POUR-CAF/

  5. theK

    > requiring them to explicitly make visual decisions that are supposed to be handled by a good compiler

    Isnt graphviz there for the same reason?

    Edit: I see it is using JSON as the declaration language, I am OK with llms being "good at json" but a syntax also consumable by humans it is not!

  6. nrub

    > simple chart specs can be reliable, but generated charts are often of low quality due to reliance on system defaults; - complex chart specs with explicit details can produce good-looking charts, but they are verbose and agents can struggle with reliability

    N of only a few of us working on an analytics agent, I don't think we've been finding this to be the case. We've been impressed with just how good LLMs (even smaller open weight models) are at using Python and R for visualization. Often any shortcomings go away if we iterate a bit to about ambiguity. Are there any threads of research that could better support this claim or highlight where issues might be?

  7. YuechenLi

    >Instead of requiring verbose low-level parameters such as scales, axes, spacing, and layout.

    Ok, Microsoft is conflating two different things here: LLMs don't really care about code being low level and verbose, they can read things like Assembly and SPIR-V just fine: visualization is the real issue in that LLMs have no natural understanding of spatial composition through visual comparison because they literally "see" things differently than humans, so the way to get around that is provide them with "visualization" in code form that they can easily reason about and understand, so basically anything that's not deeply nested and has hidden states that they have to reason about.

    Also, Flint being stringly typed in JSON is a decision that I don't think I agree with. Looking at the actual spec, this could have just been a normal, human usable TypeScript library, and it would have been 100x better. Using their own example (excuse the formatting):

    type SemanticType = "Category" | "YearMonth" | "Profit";

    type ChartType = "Heatmap" | "BarChart" | "LineChart" | "ScatterPlot"; // extend as needed

    interface ChartEncodings {

    x: string;

    y: string;

    color?: string;

    size?: string;

    tooltip?: string;

    }

    interface ChartProperties {

    colorScheme: string;

    [key: string]: unknown; // allow other optional properties

    }

    interface ChartSpec {

    chartType: ChartType;

    encodings: ChartEncodings;

    chartProperties: ChartProperties;

    }

    type SemanticTypes = Record<string, SemanticType>;

    interface […]

  8. chenglong-hn

    Project page: https://microsoft.github.io/flint-chart/

    MCP setup: https://microsoft.github.io/flint-chart/#/mcp

More from this day

2026-07-08