I'm sorry to spoil your expectation, but I believe that this model applies to all Slavic languages - at least all I was able to check. The only difference was a level of distortion from the original structure - which in case of Bulgarian is very close, while in the North they were more severely changed, albeit not beyond recognition. Let's take twelve as an example:
Old Church Slavonic: дъва на десѧте (dŭva na desęte)
Bulgarian: дванадесет ([dvɐˈnadɛsɛt] - which is almost identical, because OCS was basically a Slavic dialect of or nearby Thessalonica adapted for religious purposes)
Macedonian: дванаесет ([dvaˈnaɛsɛt])
Serbian: дванаест
Bosnian: dvanaest
Croatian: dvanaest (which is no surprise because only 30 years ago the latter three were considered to be one language)
Slovenian: dvanajst
Slovak: dvanásť
Czech: dvanáct
Sorbian: dwanaće
Polish: dwanaście
Ukrainian: дванадцять ([dʋɐˈnɑd͡zʲt͡sʲɐtʲ])
Belorussian: дванаццаць ([dvaˈnat͡sːat͡sʲ])
Russian: двенадцать ([dvʲɪˈnat͡s(ː)ɨtʲ])
Old Church Slavonic (OCS) and Old East Slavic (OES) actually had two forms for ‘twelve’: a masculine
dъva na desęte (OCS) /
desäte (OES) and a feminine/neuter
dъvě na desęte/desäte: among modern standard languages all, except Russian, seem to have generalized the masculine form.
For ‘eleven’, there were probably three gender forms (as the neuter
jedino na desęte is attested in Old Church Slavonic), but in later languages the syllable before
na was dropped together with the contrastive ending (or, alternatively, only the masculine
jedinъ/jedьnъ na desęte > jedin/jedьn na desęte has survived everywhere).
A similar system "digit on ten" is found in Latvian:
11 = vien.pa.dsmit (1 on 10)
12 = div.pa.dsmit (2 on 10)
13 = trīs.pa.dsmit (3 on 10).
Pa is actually not exactly ‘on’, but the counterpart of the Slavic
po (cognate of
ἀπό) with no good English translation: it means movement on the surface, that is a kind of ‘on’, but not stative.
The Slavic languages also have a common model for tens (дъва дєсѧти = two tens, двадесет, dwadzieścia)
Some languages also possess a special word for ‘ninety’: later Old East Slavic (attested in the 13–14th centuries)
devänosto~devästo and modern Belarusian
dzʲevʲanosta, Russian
dʲevʲanosto, Ukrainian
devjanosto, as well as Old Polish (15th century)
dziewiętnosto, which likely continue the inherited Proto-Indo-European form cognate to
ἐνενήκοντα.