JSFiddle - React, Tailwind, and code Playground

HTML

<div id="wrapper">
    simple: <input data-bind="value: simpleObject, valueUpdate: 'afterkeydown'"/>
    <span id="simpleSubscribtionFeedback"></span>    
    
    <hr />
    <div data-bind="with: complexObject">
        company: <input data-bind="value: company, valueUpdate: 'afterkeydown'"/><br />
        email: <input data-bind="value: email, valueUpdate: 'afterkeydown'"/>
        <span id="complexSubscribtionFeedback"></span>   
    </div>    
</div>

JavaScript

var ns = ns || {};

ns.ComplexObj = function (item) {
    var self = this;

    if (!item) {
        item = {};
    }

    self.id = item.Id || '';
    self.company = ko.observable(item.Company || '');
    self.email = ko.observable(item.Email || '');

    self.company.subscribe(function () {
        console.log('debug: company changed');
    });

    return self;
};

ns.mainvm = function () {
    var simpleObject = ko.observable('i am pretty simple');
    simpleObject.subscribe(function (newValue) {
        document.getElementById('simpleSubscribtionFeedback').innerText = newValue;
    });

    var complexObject = ko.observable(ns.ComplexObj());
    complexObject.subscribe(function (newValue) {
        // i would like to react to any change in complex object
        document.getElementById('complexSubscribtionFeedback').innerText = 'i dont get executed :(';
    });
    
    ko.computed(function() {
        return ko.toJSON(complexObject);
    }).subscribe(function() {
        document.getElementById('complexSubscribtionFeedback').innerText = 'i am getting executed :)';
    });

    return {
        simpleObject: simpleObject,
        complexObject: complexObject
    };
};

var container = document.getElementById('wrapper');
if (container) {
    ko.applyBindings(ns.mainvm, container);
} else {
    console.warn("container for binding ko not found");
}