An expert system is software that attempts to reproduce the performance of human experts in a specific domain. It consists of a knowledge base of facts and rules, a working storage to apply those rules to specific problems, and an inference engine that derives solutions. Expert systems are designed by knowledge engineers who work with domain experts to encode their expertise for problems such as consistent decision making. While expert systems provide standardized answers and never forget questions, they lack common sense, creativity, and can have errors or difficulties adapting to changes.