Skip to content

Work

Everything I've shipped

Side projects, client builds and the day job. Some of it is polished, some of it was a weekend spent answering a question I couldn't stop thinking about.

Now

Live on iOS

Flowy is a private period and cycle tracker for iPhone. One quiet minute a day turns into a calendar you can actually read.

Experience

Where I've worked

  1. fynkFull-timeSoftware Engineer (Editor)Jul 2026 → Present · Vienna, Austria (Hybrid)

    Contract lifecycle management: drafting, negotiation and signing in one place.

    1. I own the document and template editor, the part of fynk where a contract is actually written. Everything that touches it is mine: the contract features, the AI built on top of them, the performance work, and the maintenance that keeps the rest possible. Tiptap and ProseMirror in Vue 3, on a Laravel backend.

      Highlights

      • A customer reported a thousand-cell template they could no longer type in. Profiling found eight independent full-document walks running on every keystroke, cursor move and scroll, so I replaced the DOM queries and node view re-renders on the typing path with derived state. A typed character went from 12 to 16 document.querySelector calls to none, and Cmd+A from 1,426 to none.
      • The same pass turned up work happening nowhere near the typing path: the minimap sweeping around 1,030 elements and forcing a reflow on every scroll event, still doing it after it had been closed, and Sentry tracing holding 86% of the main thread on load.
      • Reworked the layout, design and behaviour of the features that make a contract a contract rather than a text file: dynamic fields, conditional content, signature and approval blocks, dynamic tables, column layouts, headers and footers, section references, track changes. The pieces were already there; the work was making them read clearly on the page and behave the way someone drafting a contract expects.
      • Migrated Tiptap v2 to v3, put upstream extensions back in place of our forks, and cut 70-odd dead exports. Then reorganised the editor tree around what code does to the document rather than which library construct it happens to use, so that a new engineer, or a coding agent, can find the one place a change belongs without reading the whole editor first. The architecture doc that came out of it is what the team and its agents work from now.
      • Took a piece of the editor off a vendor's cloud and onto our own infrastructure. Contracts are the last documents a company wants leaving its own systems, so the tighter answer was to run it ourselves rather than pass customer text through someone else's service.
  2. Launchbox StudioSelf-employedFounderApr 2024 → Present · Remote
  3. SteerlabPart-timeProduct EngineerJul 2025 → Jul 2026 · Paris, France (Remote)
  4. Frontier AI LabFull-timeSenior Software EngineerOct 2025 → Jun 2026 · Remote
  5. AI AcquisitionFull-timeProduct EngineerAug 2025 → Dec 2025 · Dubai, UAE (Remote)
  6. AlpineProduct EngineerNov 2024 → Jul 2025 · New York, United States (Remote)
  7. mroadsFull-timeApr 2022 → Nov 2024 · Hyderabad, India (Remote)

Got something to build?

Tell me what you're making. I'm always happy to talk it through.