Engineer (HCI)

You're excited by complex design problems that require deep consideration of compact, layered UI for expert systems. Think about the layered authoring experiences found in Notion, Airtable, or Tableau, moreso than a cloud dashboard or billing page.

You're excited by complex design problems that require deep consideration of compact, layered UI for expert systems. Think about the layered authoring experiences found in Notion, Airtable, or Tableau, moreso than a cloud dashboard or billing page.

You're excited by complex design problems that require deep consideration of compact, layered UI for expert systems. Think about the layered authoring experiences found in Notion, Airtable, or Tableau, moreso than a cloud dashboard or billing page.

Requirements

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 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 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 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.

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.

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.

Experience with Web-based Text Editing
  • You have a strong understanding of ProseMirror and how to hook into its transaction model or you've built your own rich-text editor for web

  • You have strong familiarity with event propagation and focus input management challenges in web-based applications

  • You have set-up regression testing for web-based rich-text editors

Experience with Web-based Text Editing
  • You have a strong understanding of ProseMirror and how to hook into its transaction model or you've built your own rich-text editor for web

  • You have strong familiarity with event propagation and focus input management challenges in web-based applications

  • You have set-up regression testing for web-based rich-text editors

Experience with Web-based Text Editing
  • You have a strong understanding of ProseMirror and how to hook into its transaction model or you've built your own rich-text editor for web

  • You have strong familiarity with event propagation and focus input management challenges in web-based applications

  • You have set-up regression testing for web-based rich-text editors

© 2025 Phosphor Co. All Rights Reserved

© 2025 Phosphor Co. All Rights Reserved

© 2025 Phosphor Co. All Rights Reserved