DFor Developers

Ship the code.
Skip the typing.

PR descriptions, design docs, commit messages, code comments. The writing that ships software — drafted in the time it takes to think it through.

Voice → PR description
"ok so the PR — read the version tag from the request header instead of the response cookie, the reason is the cookie gets rewritten on retry so the LRU was keying stale entries during retry storms uh no risk expected on hot paths, gated behind a feature flag for one release"
VoiceX · DraftingFnto dictate
800+terms
code-aware vocabulary across 38 programming languages
faster PR descriptions than keyboard, in measured trials
works in VS Code, Cursor, JetBrains, Vim, terminal, GitHub
0stored
audio recordings retained — all processing on-device

The writing devs
are paid to do.

Every part of shipping a change that isn't the code — drafted at the speed you can explain it out loud.

PR descriptions

Pull requests reviewers actually want to read.

Explain the change the way you'd explain it to a teammate at standup. VoiceX shapes it into ## What / ## Why / ## Risk— every time.

PR #482 — cache invalidationReady for review · 38s
## What
Read version tag from request header,
not response cookie.
## Risk
None expected on hot paths.
Behind feature flag for one release.
Design docs & RFCs

The doc you've been "about to write" for two sprints.

Talk through the design while it's still fresh in your head. VoiceX gives you the structured RFC — context, options, trade-offs, decision.

You said
"ok for the cache RFC we've got three options uh — rewrite the LRU, switch to redis with a write-through, or just tag invalidation… I think tag invalidation is the right call, redis is too much for this workload"
Drafted RFC
RFC: Cache strategy.Three options considered: rewrite LRU, Redis write-through, tag invalidation. Decision: tag invalidation. Redis is over-engineered for current workload.
Commits & standups

Commit history that reads like a changelog.

Say what changed and why. VoiceX writes the conventional commit, the standup line, and the Slack update in one breath.

Today · 4 commits, 1 standup post
All voice
  • fix(cache): use header version tag for LRU keyingcommit
  • test(cache): add retry-storm regressioncommit
  • refactor(api): pull version tag into middlewarecommit
  • Standup: shipped cache fix, blocked on staging envSlack
Comments & docstrings

The comment future-you will thank you for.

Cursor in a function, press Fn, explain why it exists. VoiceX writes the JSDoc / Python docstring / Rust comment in the right style for the file.

cache.ts · invalidateByTag()JSDoc
/**
 * Invalidate cache entries by version tag.
 *
 * Used during retry storms when the response cookie
 * is rewritten and would otherwise key stale entries.
 *
 * @param tag — request header `X-Version`
 */

It speaks
your stack.

VoiceX knows the words you use at work — 800+ programming, ops, and infra terms recognised out of the box, no setup. Add your own with a custom vocabulary file.

You speak: "kubernetes secrets"

You get the exact spelling, the right casing, and the right context — never "kuber netty secrets" or "K8 secrets".

"the bug is that we're reading the jwt from local storage instead of an http only cookie, also the p99 went up after we switched to g rpc"
TypeScriptPythonGoRustSwiftKotlinidempotentmonorepokubectluseEffectOAuth 2.1gRPCGitHubVS CodeCursor

One ramble in.
A reviewable PR out.

The structure your team already uses — every section in the right place, every time. No template, no boilerplate, no copy-paste.

Openfix(cache): use header version tag for LRU keying#482 · +147 −38 · 4 files
You said · 38 seconds
"ok so the PR — we're going to read the version tag from the request header instead of the response cookie because the cookie gets rewritten on a retry so the LRU was keying stale entries during retry storms um no risk expected on the hot paths, we'll put it behind a feature flag for one release just in case, the test added covers the retry storm case which is new, and the followup is to pull the version-tag read into middleware so other services can reuse it"
## What
Read the version tag from the request header (X-Version) instead of the response cookie when keying the LRU.
## Why
The cookie is rewritten after a retry, so the LRU was keying stale entries during retry storms.
## Risk
  • None expected on hot paths.
  • Behind cache_v2 flag for one release.
## Testing
  • Added retry-storm regression in cache.test.ts.
  • Verified P99 unchanged in staging.
## Follow-up
  • Lift version-tag read into middleware (#491).
Drafted in 1.4sReviewers: @marcus, @priya

Trusted by engineers who'd rather build.

I write PR descriptions on the walk from the coffee machine. Reviewers actually read them now, because they have the why up front. Merge time dropped by half.
TS
Tariq Singh
Staff Engineer · payments infra
Time to merge−52%
The thing that changed wasn't the typing. It's that I write design docs now — at all. The cost dropped low enough that I just do it.
JT
Jenna Tao
Tech Lead · platform
RFCs / quarter11
Code-aware vocab is the killer feature. Saying "useEffect", "idempotent", "P99" without it getting butchered means I actually use it for comments.
DP
Dev Patel
Senior SWE · frontend
Daily voice mins47

Get back the part of the day
you spend writing about code.

Free for the first two weeks. No credit card. Cancel from your menu bar.