Inspiration

In my company, I did a lot of projects, planning and so on. Often, I end up explaining a lot of things, and my words and so on are going to be me sketching out different concepts, having my chain of thought actually visualized and so on.

When I'm whiteboarding a lot, I often find myself losing my chain of thought because I'm talking or thinking about a lot. All of a sudden, I'm confused, or I might get really distracted by another question they ask, and everything is gone.

The goal here was mainly for me to find a way by which I can communicate the things that are on my mind in a format that they can understand. It was to ensure that there's no loss of data and, of course, that it's done in a format that's easy to collaborate on and so on. That is how this idea came to be.

What it does

Whenever you talk, it takes the data or if you paste a meeting transcript or YouTube, it takes all the data from there. Scene Director builds it out into the editable whiteboard right in front of you. This will include:

  • concept cards
  • causal arrows
  • decision diamonds
  • topic lanes
  • brand marks
  • everything I'm improving day by day. As of now I've tried it with a few languages:
  • English
  • Malayalam
  • Hindi
  • Tamil
  • Arabic These are in parts so I've tried to mix individual languages and it seems to be working fairly well so far. Of course, a visual timeline that's replayable, a board export feature, functionality, and a curator that cleans up without messing up the geometry, and so on

How we built it

The platform itself is powered by NextJs with TLDraw SDK. The Scene Director takes information along with the Semantic Curator, which uses the OpenAI agents SDK to do structured output and have this low-latency action mechanism.

I'm currently trying to make this a more powerful harness where TypeScript validation for identity, ownership, and geometry all work together. Yuto import, as of now, currently goes through Gemini but seminars are a per-section digest that gets passed to our GPT-5.6 mechanism that was enforced earlier. Quality is also very important over here.

I enforced my deterministic visual quality harness that we've built and that is constantly improving to ensure there's no clip text, no overlap, orphan nodes, and so on.

A larger part of this project was built through Codex, where I clearly planned out everything and then followed up on the work in Claude code using OpenAI models as a harness. I used OpenAI models as the power underneath and did some refining using Claude code.

Challenges I ran into

A very big challenge in this system was the decomposition. When you have conversational speech coming in as fragments, some may be half-sentences in the first turn and the second turn has the rest of it. Having that kind of decomposition of different sections and then combining them together to make use of this word spec in a format that conveys all the same information that was mentioned was a really intensive process. I had to play around with it for quite some time.

Secondly we had to build an eval for this. I had to identify where the junk is coming in, what the different types of edge cases are, and find a golden dataset that allows me to understand the quality of everything we've done so far. Of course this is a very early-stage thing but I'm definitely hoping to improve this more and more. For that I'm basically dog-feeding my own system with my own prompts and my own variations of stuff. I'm also having a few of my friends test this out starting tomorrow, which will allow me to get a better understanding of where it's capable and where it's missing capability, and improve it

Accomplishments I'm proud of

  • Live speech becomes a semantic board - a graph of ideas, not a wall of notes - and it stays editable at every step.
  • Real multilingual sessions: a bilingual Hindi/English meeting stays one coherent English board.
  • The eval harness: every visual claim is a measured number from the real rendered app, not a vibe.
  • Friends are already asking to use it - an informal waitlist of friends, family and community who want it for their own explanations.

What we learned

Corpus-first beats prompt-tinkering: encode the real failure as a fixture, then fix. Deterministic code should own everything the model doesn't need to decide. And measurement has to be adversarial - we only trust the eval because we caught it lying once.

What's next for Vara

A freemium public launch at vara.ajmalaksar.com (free tier on gpt-4.1-mini, paid on the GPT-5.6 family), a usage ledger with hard cost caps, DPDP-compliant privacy with real data deletion, and deeper tldraw SDK fluency - the agent choosing element types, resizing, and routing like a person at a real whiteboard. The informal waitlist goes first.

Built With

  • claude
  • codex
  • next.js
  • tldraw
Share this project:

Updates