Product manager, developer platforms

Vitalii Batyr

I build platforms for the people who build software, and side projects that keep humans in charge of AI-assisted work.

Projects

Agentic Workspaces

A front door for agentic workspaces: the repos you clone and work inside, findable by the job you need one for.

Live

An agentic workspace is a repo you clone to live in rather than to run: your agent arrives equipped, and your work accumulates inside. These repos have no marketplace, so people find them by accident. The index is the front door, and you browse it by the job you need one for.

The front page of an index called Agentic Workspaces. A headline reads
                      workspaces your agent lives in, above a row of counts and a grid of cards,
                      each naming a repository, its owner and its subject.
The front page. Each card is one workspace, tagged with the job it was built for. Every count is read from the crawl, so they move each time it runs.
Built with
TypeScript · Node ≥20 · Vitest · GitHub Actions · a static generator over one JSON file, no framework and no client-side fetching
Status
Live and actively developed. Every entry is found by a crawler rather than added by hand.
Repo
Private while it’s being built.

writtten

You write every word. The AI never touches your prose, it reads alongside you and points out what you missed.

Live Source

Most AI writing tools generate text for you to edit. writtten does the opposite. A live feed of observations runs beside your document as you revise, flagging contradictions, unclear passages, unsupported claims and missing topics. There is no “Apply suggestion” button, and there never will be.

A draft document beside a column of observations. Two passages are
                      highlighted at once: one committing to a Q2 launch, one to Q3. The open
                      observation is labelled contradiction.
The Timeline section commits to a public launch in Q2. Success metrics commits to Q3. writtten flags both passages at once and leaves the decision to the writer.
Built with
React · TypeScript · TipTap and ProseMirror · local-first PWA on IndexedDB · bring your own key, called straight from the browser
Status
Early and actively developed. The core loop works. Open-sourced to get the idea scrutinised and to find collaborators.
Repo
Public · Apache-2.0

mova

A language-learning workspace run by your AI coding agent, in plain files you own.

Source

You pick the language and the goal. The agent interviews you, builds a curriculum, then teaches, drills and tracks every word and every error you get wrong. It started from my own language learning: I wanted the record of every mistake to stay in files I own.

A workspace hub page. A row of figures reads days to exam, units done, topics
                      taught, things to remember, items to review today, and study sessions. Below
                      it, the deck, then a panel headed what to do next.
The workspace hub: days to exam, units done, items due, and what to do next. Every number is read from the file that owns it. This one is a generated demo with an invented learner.
Built with
Node ≥20 and git · plain markdown and HTML you can open from disk · agent-agnostic · self-contained offline pages, no CDN, no external fonts
Status
Works end to end. Seven languages start straight away; any other language adds about half an hour while the agent builds a grammar pack first.
Repo
Public GitHub template

vibecoding-starterpack

A repo scaffold that makes documentation fail CI when it drifts.

Source

Give a coding agent a task and it does the task. It won’t remember last week’s decision, and neither will the next agent. Documentation is the shared memory, and documentation rots. This template puts the docs under CI, so breaking a convention turns the build red.

Built with
TypeScript · Vitest · GitHub Actions · no runtime, it’s a scaffold
Status
Usable now. Fill three files, run npm install && npm test.
Repo
Public GitHub template · MIT

agentic-job-hunt

An opinionated job search pipeline that runs inside Claude Code, calibrated against its own results.

Source

It scans job boards, screens by title at no token cost, evaluates the survivors against your actual background, writes tailored CVs, and tracks every application. Then it tells you whether the scores you assigned beforehand predicted anything. On the search it was built from, mostly no.

Built with
Node 18+ · Claude Code · Playwright · optional Go dashboard · Greenhouse, Ashby, Lever, Comeet, Workable and public LinkedIn
Status
In daily use. It’s the pipeline behind my own search.
Repo
Public

About

I’m a product manager working on developer platforms. My work sits on the surfaces engineers actually touch: internal developer portals, software catalogs, documentation, self-service onboarding, and more recently the AI features layered on top of them. Earlier, application security tooling that plugs into source control and the editor.

Nine years in product, most of it on tooling other engineers depend on. My strongest opinion about internal platforms is that most of them are envisioned as products and end up as a pack of services. Adoption is the test. If the paved road isn’t genuinely faster than going around it, people go around it.

I measure this kind of work by whether engineers come back to it on their own. Adoption and friction numbers tell you that.

The projects above are side work, built in evenings. They circle one question I keep hitting in my day job: when an agent does part of the job, what stops the person from quietly losing the thread? Each project answers it differently, and each one is public so the answer can be argued with.

LinkedIn has the current version of the working history.

Elsewhere

LinkedIn GitHub