def run(self):
        """
         Assistant starting point.

        - STEP 1: Get user input based on the input mode (voice or text)
        - STEP 2: Matches the input with a skill
        - STEP 3: Create a response
        - STEP 4: Execute matched skill
        - STEP 5: Insert user transcript and response in history collection (in MongoDB)

        """

        transcript = jarvis.input_engine.recognize_input()
        skill = self.skill_analyzer.extract(transcript)

        if skill:
            # ----------------------------------------------------------------------------------------------------------
            # Successfully extracted skill
            # ----------------------------------------------------------------------------------------------------------

            # ---------------
            # Positive answer
            # ---------------
            response = self.response_creator.create_positive_response(transcript)
            jarvis.output_engine.assistant_response(response)

            # ---------------
            # Skill execution
            # ---------------
            skill_to_execute = {'voice_transcript': transcript, 'skill': skill}
            self._execute_skill(skill_to_execute)

        else:
            # ----------------------------------------------------------------------------------------------------------
            # No skill extracted
            # ----------------------------------------------------------------------------------------------------------

            # ---------------
            # Negative answer
            # ---------------
            response = self.response_creator.create_negative_response(transcript)
            jarvis.output_engine.assistant_response(response)

            # ---------------
            # WolframAlpha API Call
            # ---------------
            skill_to_execute = {'voice_transcript': transcript,
                                'skill': {'name': WolframSkills.call_wolframalpha.__name__}
                                }

            response = WolframSkills.call_wolframalpha(transcript)

        # --------------------------------------------------------------------------------------------------------------
        # Add new record to history
        # --------------------------------------------------------------------------------------------------------------

        record = {'user_transcript': transcript,
                  'response': response if response else '--',
                  'executed_skill': skill_to_execute if skill_to_execute else '--'
                  }

        db.insert_many_documents('history', [record])

         Assistant starting point.

        - STEP 1: Get user input based on the input mode (voice or text)
        - STEP 2: Matches the input with a skill
        - STEP 3: Create a response
        - STEP 4: Execute matched skill
        - STEP 5: Insert user transcript and response in history collection (in MongoDB)

        
src/jarvis/jarvis/core/processor.py