We present YinYang, a language designed for enhanced code completion. So that type declarations do not obscure completions, YinYang supports typeless programming as an aggressive form of type inference that works well with object-oriented features like subtyping. YinYang forgoes traditional set-based types, instead tracking usage requirements in modular term assignment graphs where necessary usage requirements flow backward toward assignees to provide semantic feedback and a basis to form objects. Programs then lack type declarations but can still be separately compiled to support local reasoning on semantic feedback like type errors. This paper describes our design, trade-offs made for feasibility, and an implementation.