TypeScript Engineer (UI State Management & CRDTs)

You're excited by complex problems and you make decisions with a long-term outlook that your code will be maintainable almost entirely by an internal AI coding agent.

You're excited by complex problems and you make decisions with a long-term outlook that your code will be maintainable almost entirely by an internal AI coding agent.

You're excited by complex problems and you make decisions with a long-term outlook that your code will be maintainable almost entirely by an internal AI coding agent.

Requirements

Experience with complex UI state management

You can lead and teach engineers how to write signal-based UI state management with unit testable "view-models". You have solved problems and designed interfaces with reactivity libraries similar to Jotai, RxJS, SolidJS's createSignal, TanStack Store, or equivalent.

For the most complex interactions, your logic is unit-testable without a React render loop.

We avoid state management relying on React's hook context in most cases, but when it comes to common, visual-only things like resize handles and animations it's probably fine to put that in the React side.

Experience with diverging states (CRDTs/OT/LWW)

You can write full-stack implementations for versioning, branching, and rebasing flows leveraging a CRDT or OT library, or using your own LWW approach.

You've gained some pretty strong opinions about the right time and place for CRDTs, OTs, or LWW. Perhaps you've even watched videos from GDC about multiplayer netcode and rollback out of curiosity. You probably had to use yjs at some point and decided it's design is kinda shit but the community, resources, and ecosystem around yjs still make it the best option for most teams (our versioning environment allows for us to use multiple state management strategies together, so we can choose the best tool for the job (usually depending on ecosystem) in most cases). Otherwise, we default to Loro.

AI Optimism

You have optimism towards async AI fixing bugs and making tweaks to the codebase and you plan for that by checking your interfaces and design with an LLM to see where your approach is weak.

We have high optimism for async AI handling the majority of the coding in the long-tail of our software process. But, we don't find AI effective at every stage of development.

Generally, we think about AI usage following a trend like the following;


Bonus points

Experience with Effect
  • You can lead and teach engineers how to write backends with Effect code.

  • You have designed TypeScript libraries which extend type safety to JavaScript users

Experience with Effect
  • You can lead and teach engineers how to write backends with Effect code.

  • You have designed TypeScript libraries which extend type safety to JavaScript users

Experience with Effect
  • You can lead and teach engineers how to write backends with Effect code.

  • You have designed TypeScript libraries which extend type safety to JavaScript users

© 2025 Phosphor Co. All Rights Reserved

© 2025 Phosphor Co. All Rights Reserved

© 2025 Phosphor Co. All Rights Reserved