---
title: "Szept: ChatGPT understood my Polish. Claude Code, Gmail and Slack didn't"
author: Mariusz Szyma
date: 2026-09-24
lang: en
canonical: https://szyma.co/en/blog/szept/
data_as_of: 23 Sep 2026
---

# Szept: ChatGPT understood my Polish. Claude Code, Gmail and Slack didn't

I spend most of my day talking to agents: Claude Code, Codex, Cursor. I write them long instructions, show them screenshots, explain what is wrong with a layout. Two things took the most time: typing all of it, and describing in words what I could see on screen. Szept is the Mac app I built, first of all for myself, to make both go away. I hold `fn`, speak, let go, and the text appears at my cursor. I select part of the screen, hold `fn`, say what the agent should do, and it gets the screenshot along with my sentence.

*A 17-second loop of Szept on a Mac desktop: dictating into Notes, taking a screenshot, recording the screen with sound, and handing a capture to Claude Code.*

## Problem one: good Polish dictation, but only inside someone else's app

I speak Polish, with English product words mixed in. A single instruction to an agent is often "dodaj na onboardingu krok, gdzie user wkleja API key, i od razu sprawdź, czy działa". Good dictation for that already exists: ChatGPT and Cursor have it built in, and it works well. But only inside ChatGPT and Cursor. In Claude Code, in a terminal or in an email I had nothing I wanted to use. What I needed was one tool that works in every app, handles Polish with English terms, stays light enough to keep open all day, costs cents rather than a subscription, and hands a screenshot to an agent in the same gesture. Each tool I found met some of those conditions, never all of them at once.

When I started building, speech recognition ran on the Mac itself: first Qwen3-ASR on Apple's MLX, then OpenAI's Whisper through WhisperKit, which I added specifically for Polish. The recognition was not the problem. The weight was: a local model meant gigabytes of memory and a large download, for an app I wanted to keep open all day. The dictation built into macOS makes you pick one language. Then there are the ums, the repeats and the false starts, which are natural in speech and pure noise in an instruction for an agent.

So I moved speech to the cloud, first to ElevenLabs Scribe and then to Soniox, which worked best for me in Polish. It understands what I say, it is very fast, and it is cheap. Szept uses its `stt-rt-v5` model, which recognises more than 60 languages and switches between them mid-sentence. Names and jargon go into a dictionary so they come out spelled right. From letting go of the key to final text takes about 180 ms.

*Interactive demo: holding fn, the words arrive in the pill at the bottom of the screen, and on release they are typed into the note.*

## Problem two: the same text has a different shape in mail, Slack and a terminal

A raw transcript is only half the job. An email needs paragraphs and a sign-off, a Slack message should stay one line, and a command in a terminal must not get "corrected" punctuation, because then it stops working. Szept checks which app the text is going to, and in a browser the page's address too (Gmail in Brave is still mail), and passes that to the AI cleanup.

The cleanup removes the ums, repeats and false starts, fixes punctuation and keeps my words. It does not invent greetings or sign-offs: in an email it only uses the sign-off I stored in Settings. If the model doesn't answer within 3 seconds, the text is pasted as dictated, so I never wait longer than that. `fn` with `⌘` forces cleanup for a single dictation without changing the setting.

*Interactive demo: one dictated sentence with the fillers struck out, and the cleaned result shaped for Mail, for Slack, and with cleanup off.*

## Problem three: an agent needs to be shown, not told

Most of my time went into describing the screen. "The button overlaps the footer, but only in a narrow window, on the right, under the form." A screenshot says that in a second. I used Lark for screenshots, because it had the best annotation tools. On my Mac `LarkSuite.app` takes 1.5 GB (`du -sh`, 23 September 2026), and I needed one feature of it.

In Szept, `⌘ ⇧ A` freezes the screen. I pick a window or drag a region, add arrows, boxes, blur and text, pin the capture on top, pull the text out of it or read a QR code. Scrollshot stitches a scrolling page into one image.

![A screenshot: the selected region, the toolbar under it, and a box drawn around the problem.](https://szyma.co/blog/img/szept-zrzut.d5f5370d.webp)

`⌥ ⇧ R` records the screen with system audio and the microphone, a camera bubble and click effects. I can trim the recording and save it as MP4 or GIF.

![Recording: a red frame around the recorded area, system audio and microphone levels, and the camera in the corner.](https://szyma.co/blog/img/szept-nagrywanie.55f65840.webp)

## What Szept exists for: one sentence to the agent

Everything above comes together in one gesture. With a screenshot or a recording on screen, I hold `fn` and say what I want. Szept keeps the file, closes the capture, and pastes my sentence plus the file's path into the app I started from: a terminal running Claude Code, Codex, Cursor or a chat. Nothing is sent until I press return myself.

![The handoff: a sentence spoken over a screenshot arrives in Claude Code together with the file's path.](https://szyma.co/blog/img/szept-agent.be99853b.webp)

It changed how I work with agents. Instead of a paragraph of description I send one sentence and a picture, and the agent doesn't have to guess which button I mean.

## Light, because speech runs in the cloud

Local speech engines are heavy. Whisper large-v3 is 2.9 GB, and even a quantised Whisper tiny is 31 MB. Szept keeps no model on disk and none in memory, because speech recognition runs in the cloud. The installed app is 4.9 MB, uses 24–32 MB of memory at rest and 0.0% CPU, and wakes up about 0.1 times a second (Finder: about 38).

The cost is just as small. Speech runs on my own Soniox key and costs about $0.12 per hour of talking. For comparison, ElevenLabs Scribe v2 Realtime is $0.39, Deepgram Nova-3 $0.55, and OpenAI's live transcription $1.02 per hour. Szept adds nothing on top and runs no servers of its own.

*Charts to scale: an hour of live speech costs $0.12 on Szept with a Soniox key, against $0.39 to $1.02 for other speech APIs; Szept is 4.9 MB against 31 MB to 2.9 GB for local Whisper models; at rest it uses 0.0% CPU and 24–32 MB of memory.*

## Where your data goes

Speech travels over an encrypted connection (TLS 1.2 or later) to Soniox, under your own account. Soniox states it holds SOC 2 Type 2 and ISO/IEC 27001:2022 and meets GDPR and HIPAA requirements. In real-time mode it does not store audio or transcripts and never uses them to train its models; it keeps only usage metadata such as duration, without audio or text. Soniox offers United States, EU, Japan and India regions, chosen per project. Today's Szept connects to the United States region; a version that detects the key's region by itself, and keeps speech from an EU project entirely in the EU, is in the works.

AI cleanup is optional. The default provider, DeepSeek, stores data in China, so for sensitive text it is worth pointing cleanup at another OpenAI-compatible provider, or leaving it off. History, screenshots and recordings stay on your Mac, and I run no servers and receive nothing.

## Why you pay once, not every month

I made Szept for myself, but I wanted to share it. I thought about how to do that fairly at a time when almost every AI tool locks you into a monthly plan and the subscriptions keep piling up. I chose a simple model: you pay once, $9.99 for the first 100 buyers, then $25. The price includes the signed, notarized app, the full Swift source in a private GitHub repository, and a year of updates. After that you can renew updates or keep what you have; nothing stops working.

The source is included on purpose. If you need a different speech model, a different AI provider, or a different solution altogether, you can rebuild the app yourself or hand it to your agent. To make the agent useful from day one, the repository has what I needed myself: a `CLAUDE.md` with 78 written-down pitfalls, 5 design specs, 12 implementation plans and 638 tests. Pitfalls can't be guessed. One example: a sandboxed Mac app cannot add itself to the Accessibility list, so onboarding points at a switch that isn't there.

## How I built it

Most of Szept was written by agents, with me deciding what to build and checking what came back. The main one was Claude Opus 5.5 in Claude Code; alongside it I ran DeepSeek Harness on DeepSeek V4.1 Flash as a second, cheaper worker for well-scoped tasks and second opinions. What made that work over months was the project notes: every pitfall we hit went into `CLAUDE.md`, so the next session did not hit it again. Those notes ship with the source.

## What's next: a community around Szept

I hope a community forms around Szept: people who reshape it for their own work and share what they built, whether plugins for other models, integrations or extensions. Today the license lets you change Szept for your own use, personally or inside your company, but not share the source or your builds. I want to extend it so that buyers can exchange extensions with each other. If you build something on Szept and want to share it, write to me: [mariusz@szyma.co](mailto:mariusz@szyma.co).

## Who it is for

Anyone who works with AI agents on a Mac and is tired of typing out their thoughts. It works in any app that accepts text, so it helps in email, Slack and notes too. The people who gain most, though, are the ones who, like me, speak one language in another language's vocabulary and spend the day explaining to agents what is on their screen.

The product page, a 49-second film and checkout: [szept.szyma.co](https://szept.szyma.co/).

## Sources

- App numbers (4.9 MB installed, 24–32 MB of memory, 0.0% CPU, 0.1 wakeups per second, about 180 ms): measured on the shipping build with `du`, `footprint` and `top`, published at [szept.szyma.co](https://szept.szyma.co/#light).
- Live speech prices: the ElevenLabs, Deepgram, Google, Azure and OpenAI price lists, collected at [szept.szyma.co](https://szept.szyma.co/#light); Soniox `stt-rt-v5`: about $0.12 per hour.
- Whisper model sizes: the [whisper.cpp](https://huggingface.co/ggerganov/whisper.cpp) model repository.
- `LarkSuite.app` size: `du -sh /Applications/LarkSuite.app` on my Mac, 23 September 2026.
- Soniox security and regions: [Security and privacy](https://soniox.com/docs/security-and-privacy) and [Data residency](https://soniox.com/docs/data-residency).

## Caveats

Szept runs on macOS 14 and later. Speech recognition needs an internet connection and your own Soniox key; screenshots, recording and history work offline. AI cleanup is optional and sends text to the provider you choose (DeepSeek by default, which stores data in China). Competitor prices are the September 2026 price lists and may change. What I say about speech engines is my experience building this app, not a benchmark. I am the author of Szept, so this is not an independent review.
