Hanyu Pinyin does not have a 1:1 mapping between written symbols (letters) and pronunciation, and so can't be said to be accurate in the sense that IPA (the International Phonetic Alphabet) is meant to be accurate.
It is of course perfectly functional as a way of writing down Mandarin pronunciation, but only if you know how to pronounce the language first or learn the system properly.
However, you can not rely on letters representing the same sounds, or that the same sounds are written with the same letters! This is particularly true for vowels, while the consonants are more straightforward.
There are cases where many sounds are mapped to one single written symbol. Here are a few examples (the examples are from this article, that has both more examples and audio for some of them):
The letter i represents some very different sounds in Mandarin:
- It’s a front close vowel [i] and occurs in: mi, bi, ti etc.
- i represents the empty rhyme following z, c and s (this sound can be described in many ways, but it’s fairly close to English [z], but with more air allowed to pass).
- It also represents the sound following zh, ch and sh. This is the same as the previous sound, but pronounced close to the retroflex position (i.e., the tongue is retracted and raised as when producing the zh, ch, sh and r sounds, just not as close).
Other examples include many different sounds represented by the letters e and a.See the linked article above for more examples of these.
There are also cases where the opposite is true, i.e. that one sound is written in many different ways.
The example that best shows why you need to already speak the language for the system to make perfect sense is how [y] is treated. It has dots, written ü, when there is ambiguity, as in lü and nü, because we also have lu and nu, which are different sounds (which any native speaker knows intuitively, but beginner students don't). But there are no dots when there's no ambiguity, so even if it's actually pronounced jü, qü and xü, it's spelt ju, qu and xu. Same with jüe (jue) jün (jun), etc.. There is no syllable that start with j and ends with the u in e.g. lu: *[t͡ɕu]
Then we also have sounds that are there but simply left out, such as -ui actually being pronounced -uei (水, 对, 贵) and -iu actually being pronounced -iou (六，休，牛).
As Dan mentioned in a comment, tone changes can also be opaque unless you are familiar with the language. There's no written indication that nǐhǎo is pronounced with a rising tone on the first syllable, or that the third tone is a low tone in front of all other tones except the third tone (e.g. měiguó, xiǎngyào etc.), or that 不 and 一 change tone depending on the following syllable.
So no, Pinyin is not exact in the way you imagine it to be. And if I may ask, if you're working on a guide for how Mandarin is pronounced, wouldn't it make more sense to just use IPA, which is designed specifically to describe how languages are pronounced?
Then you can rely on the works of countless other people who have tried to make similar guides and descriptions, and you can use what you've learnt to learn about pronunciation in other languages too! Maybe start with the Standard Chinese Phonology article on Wikipedia. For reading in English, I also recommend:
- Lin, Y. H. (2007). The Sounds of Chinese. Cambridge University Press.
- Duanmu, S. (2007). The phonology of standard Chinese. Oxford University Press.