If you’re using the SugarCube story format in Twine, the memorize(), recall(), and forget() functions are useful for tracking achievements like Agat suggested.
I’d also recommend making sure that the choices in your game are true choices that actually matter. Players hate it when they play through a game a second time and discover that making different choices produces the same results. This makes the player feel railroaded and like their choices didn’t actually matter.
You also shouldn’t go too long without letting the player make a choice. If you’re showing people passage, after passage, after passage, and it’s entirely linear, then the player is less connected to the story than if they were interacting with it and making choices.
The problem with the two above methods is that they may lead to too many branches to keep up with. So to help keep that under control, you can make those choices “level up” various skills, attributes, and/or relationships or simply provide you with money, items, or information, and then use those levels, items, or information to have a better chance at succeeding at various critical story branches later on. This also helps players feel rewarded with a sense of progress towards a goal whenever they make their choices, especially if they can see visible indicator of that progress (skill bars go up, inventory slots filled, etc.).
If you do that, I’d recommend that in branches where choices include rewards, you should have rewards for all choices there, even the “bad” choices, since otherwise you’re back to railroading the player. Remember, a choice doesn’t feel like a choice if there’s only one good option. Thus, you have to make all paths rewarding in some way. Think about it, even bad choices in your life have often been educational, since they (hopefully) helped you learn to avoid doing those things again and potentially made you better able to handle/plan for setbacks in the future. Providing some immediate feedback that the “bad” choices provide some additional benefit which couldn’t be obtained otherwise, will make people more willing to give those paths in your game a try.
For example, maybe getting beaten up by the thugs allows you to overhear the name of their boss, which would be very difficult information to discover otherwise. It may also reward you with the sympathy of another character later on, who would otherwise keep things more professional, which could be enjoyable as well.
This should help you provide more real choices to players, that all feel rewarding, but without the “railroading” which can easily happen in games like this.
Hope that helps!