michal pšenčík

full-stack product engineer

react, typescript, node. i'd rather own the whole slice, from the api to the ui, than half of it, and i ship every day with ai agents doing a lot of the typing. the projects here are mine, built on my own time, and most of them i use every day.

based in
czechia
works
remote, cet / emea hours
looking for
product-engineering roles
speaks
english, czech
recent day job
react and react native apps for clients, two and a half years on a remote contract

the long version, with a sand toy →

what i've built lately

tools i use every day, public apps, and one small product. click a screenshot to look closer.

  1. beadside in its light look: an invented shop backlog grouped by lane, an agent's either-or question about a vat rounding bug waiting on the human, and a reply typed into the note boxenlarge · 2 shots

    beadside

    my agents keep a backlog. this is where i answer them.

    a local board over beads, the issue tracker my agent sessions file their work into. find a thing, read what happened, leave a note the next session reads first. the bit i like: the beads event journal is only a doorbell. a ring makes the server re-export the whole store, and the page hears "changed" only when a hash of that export actually moved, so it stays live without twitching on every write.

    i use it every day · open sourcereact · typescript · hono · tanstack query · sse

  2. tally's today page on a synthetic week: 59% of the five-hour block used, the sessions that spent it, a when-did-it-happen chart and the weekly metersenlarge · 2 shots

    tally

    the usage meter gives me a number. i wanted to know who spent it.

    tally lines the account's usage readings up with my local agent transcripts and shows which sessions moved the meter and how the week is pacing. there is no formula from tokens to meter points (the same dollar of usage bought anywhere from 0.74 to 1.82 points across six blocks i measured), so tally never invents one: it splits each measured jump by the sessions' share of the cost, and where nothing was measured it shows dollars and says so.

    runs on my machine all day · open sourcereact · typescript · hono · node:sqlite · python

  3. font tinder's swipe screen: one unnamed font set in a chat, a long read, a small settings panel and a letter-detail panel, with nope, skip, love and like belowenlarge

    font tinder

    swipe on typefaces until one stops getting in the way.

    fonts show up in a chat, a long read or a bit of ui, names hidden, each one sized to the same x-height and as close to the same stroke weight as the family allows, so you judge the shape and not the size. while you are still looking, it has already refit its taste model as if you swiped yes and as if you swiped no, and preloaded the next font for both. so the next card is simply there.

    public app · passkeys keep your picks across devicesreact · typescript · fontkit · umap · passkeys

  4. the t3 code fork's showcase site: a big heading beside a live mock of the app with numbered dots on each additionenlarge · 2 shots

    t3 code, forked

    i live in this app, so i started fixing the small things.

    a fork of t3 code, the desktop app for agent threads, with ctrl+tab switching, effort shortcuts, sidebar widgets fed by scripts, child threads nested under the thread that started them, and links into beadside. upstream made the app; those are mine. the dull part i'm proudest of: the parent links live in a table of the fork's own, created at startup rather than as a numbered migration, so upstream's migrations can never collide with it.

    i work in it every day · linux build + an interactive showcasetypescript · react · electron · sqlite

  5. diskzokej's public dial tuned to a synthwave station: the needle on the ruler, now playing, and every lane of stations in its own columnenlarge

    diskzokej

    i made myself a dj. then a radio dial for everyone else.

    my version drives my spotify and keeps an editable tape of what plays next. the public one is a dial of about sixty internet stations, from drones to very unquiet things. ask it for a mood and one model call picks the station, but the answer's schema only allows ids of stations on the dial right now, so it can't tune to one it made up.

    i listen all day · the dial needs no accountreact · dependency-free node · spotify · icy stream metadata

  6. model map's score-against-cost chart: intelligence index against dollars per task on a log scale, with the frontier stepping through the best pointsenlarge · 2 shots

    model map

    price per token is a terrible way to pick a model.

    every model at every reasoning effort, plotted by artificial analysis's intelligence score against what one benchmark task costs, reasoning tokens included. filter it, pin a few, follow the frontier. where the source doesn't publish that cost, a python pipeline recomputes it from the index's own task weights, and refuses the weights unless they still add up to one.

    public · i route my own work with itpython · vanilla js · hand-drawn svg charts

also: breakbeat loom, nákup, powder lab, ssscribe, reader. the homepage has the rest, and the sand.