Drebakare commited on
Commit
1a8402c
·
verified ·
1 Parent(s): 307235a

Upload folder using huggingface_hub

Browse files
Files changed (7) hide show
  1. .gitattributes +1 -0
  2. README.md +2 -8
  3. ai-assistant.ipynb +2841 -0
  4. ai-assistant.py +241 -0
  5. cv.pdf +3 -0
  6. requirements.txt +7 -0
  7. summary.txt +3 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ cv.pdf filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -1,12 +1,6 @@
1
  ---
2
  title: DreAI
3
- emoji: 🏢
4
- colorFrom: green
5
- colorTo: indigo
6
  sdk: gradio
7
- sdk_version: 5.42.0
8
- app_file: app.py
9
- pinned: false
10
  ---
11
-
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
  title: DreAI
3
+ app_file: ai-assistant.py
 
 
4
  sdk: gradio
5
+ sdk_version: 5.41.1
 
 
6
  ---
 
 
ai-assistant.ipynb ADDED
@@ -0,0 +1,2841 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 3,
6
+ "id": "6c18c35b",
7
+ "metadata": {},
8
+ "outputs": [],
9
+ "source": [
10
+ "import os\n",
11
+ "from dotenv import load_dotenv\n",
12
+ "from openai import OpenAI\n",
13
+ "from IPython.display import display,Markdown\n",
14
+ "import json\n",
15
+ "from PyPDF2 import PdfReader\n",
16
+ "import gradio as gr\n",
17
+ "from pydantic import BaseModel\n",
18
+ "import requests\n"
19
+ ]
20
+ },
21
+ {
22
+ "cell_type": "code",
23
+ "execution_count": 4,
24
+ "id": "a61d942d",
25
+ "metadata": {},
26
+ "outputs": [],
27
+ "source": [
28
+ "load_dotenv(override=True)\n",
29
+ "\n",
30
+ "openai_client = OpenAI(api_key=os.getenv(\"OPENAI_API_KEY\"))\n",
31
+ "gemini_client = OpenAI(api_key=os.getenv(\"GOOGLE_API_KEY\"), base_url=\"https://generativelanguage.googleapis.com/v1beta/openai\")\n",
32
+ "sendgrid_client = os.getenv(\"SENDGRID_API_KEY\")\n",
33
+ "sendgrid_user = os.getenv(\"PUSHOVER_USER\")\n",
34
+ "sendgrid_token = os.getenv(\"PUSHOVER_TOKEN\")\n"
35
+ ]
36
+ },
37
+ {
38
+ "cell_type": "code",
39
+ "execution_count": 5,
40
+ "id": "612db22a",
41
+ "metadata": {},
42
+ "outputs": [],
43
+ "source": [
44
+ "def Pushover(message):\n",
45
+ " url = \"https://api.pushover.net/1/messages.json\"\n",
46
+ " payload = {\n",
47
+ " \"token\": sendgrid_token,\n",
48
+ " \"user\": sendgrid_user,\n",
49
+ " \"message\": message\n",
50
+ " }\n",
51
+ " response = requests.post(url, data=payload)\n",
52
+ " return response.json()"
53
+ ]
54
+ },
55
+ {
56
+ "cell_type": "code",
57
+ "execution_count": 6,
58
+ "id": "edd5c6b9",
59
+ "metadata": {},
60
+ "outputs": [],
61
+ "source": [
62
+ "def record_user_details(email, name=\"Not set\", note=\"Not set\"):\n",
63
+ " Pushover(f\"User {name} with email {email} has been recorded with note {note}\")\n",
64
+ " print(f\"User {name} with email {email} has been recorded with note {note}\")\n",
65
+ " return {\"status\": \"success\"}"
66
+ ]
67
+ },
68
+ {
69
+ "cell_type": "code",
70
+ "execution_count": 7,
71
+ "id": "e3e62d7d",
72
+ "metadata": {},
73
+ "outputs": [],
74
+ "source": [
75
+ "def record_unknown_question(question):\n",
76
+ " Pushover(f\"Unknown question: {question}\")\n",
77
+ " print(f\"Unknown question: {question}\")\n",
78
+ " return {\"status\": \"success\"}"
79
+ ]
80
+ },
81
+ {
82
+ "cell_type": "code",
83
+ "execution_count": 8,
84
+ "id": "7be5076a",
85
+ "metadata": {},
86
+ "outputs": [],
87
+ "source": [
88
+ "record_unknown_question_tool_structure = {\n",
89
+ " \"name\": \"record_unknown_question\",\n",
90
+ " \"description\": \"Use this tool to record an unknown question asked by the user\",\n",
91
+ " \"parameters\": {\n",
92
+ " \"type\": \"object\",\n",
93
+ " \"properties\": {\n",
94
+ " \"question\": {\n",
95
+ " \"type\": \"string\",\n",
96
+ " \"description\": \"The question to record\"\n",
97
+ " }\n",
98
+ " }, \n",
99
+ " \"required\": [\"question\"]\n",
100
+ " }\n",
101
+ "}"
102
+ ]
103
+ },
104
+ {
105
+ "cell_type": "code",
106
+ "execution_count": 9,
107
+ "id": "f99e240b",
108
+ "metadata": {},
109
+ "outputs": [],
110
+ "source": [
111
+ "record_user_details_tool_structure = {\n",
112
+ " \"name\": \"record_user_details\",\n",
113
+ " \"description\": \"Use this tool to record the details of the user that is interested in getting in touch\",\n",
114
+ " \"parameters\": {\n",
115
+ " \"type\": \"object\",\n",
116
+ " \"properties\": {\n",
117
+ " \"email\": {\n",
118
+ " \"type\": \"string\",\n",
119
+ " \"description\": \"The email of the user\"\n",
120
+ " },\n",
121
+ " \"name\": {\n",
122
+ " \"type\": \"string\",\n",
123
+ " \"description\": \"The name of the user\"\n",
124
+ " },\n",
125
+ " \"note\": {\n",
126
+ " \"type\": \"string\",\n",
127
+ " \"description\": \"The note of the user\"\n",
128
+ " }\n",
129
+ " },\n",
130
+ " \"required\": [\"email\"],\n",
131
+ " \"additionalProperties\": False\n",
132
+ " }\n",
133
+ "}"
134
+ ]
135
+ },
136
+ {
137
+ "cell_type": "code",
138
+ "execution_count": 38,
139
+ "id": "e8affe86",
140
+ "metadata": {},
141
+ "outputs": [],
142
+ "source": [
143
+ "def handle_tool_call(tool_calls):\n",
144
+ " results = []\n",
145
+ "\n",
146
+ " for tool_call in tool_calls:\n",
147
+ " tool_name = tool_call.function.name\n",
148
+ " tool_args = json.loads(tool_call.function.arguments)\n",
149
+ "\n",
150
+ " print(f\"Tool Called: {tool_name} with args: {tool_args}\")\n",
151
+ " tool = globals()[tool_name]\n",
152
+ " tool_result = tool(**tool_args) if tool else {}\n",
153
+ " results.append({\n",
154
+ " \"role\": \"tool\",\n",
155
+ " \"content\": json.dumps(tool_result),\n",
156
+ " \"tool_call_id\": tool_call.id\n",
157
+ " })\n",
158
+ "\n",
159
+ " # Return the list of tool result messages for inclusion in the next model call\n",
160
+ " return results\n"
161
+ ]
162
+ },
163
+ {
164
+ "cell_type": "code",
165
+ "execution_count": 12,
166
+ "id": "7ff5e916",
167
+ "metadata": {},
168
+ "outputs": [
169
+ {
170
+ "name": "stdout",
171
+ "output_type": "stream",
172
+ "text": [
173
+ " \n",
174
+ " \n",
175
+ "Damilar e\n",
176
+ " \n",
177
+ "Bakar e\n",
178
+ " \n",
179
+ "Address:\n",
180
+ " \n",
181
+ "London,\n",
182
+ " \n",
183
+ "United\n",
184
+ " \n",
185
+ "Kingdom\n",
186
+ " \n",
187
+ "Mobile:\n",
188
+ " \n",
189
+ "+447721635453\n",
190
+ " \n",
191
+ "|\n",
192
+ " \n",
193
+ "Email:\n",
194
+ " \n",
195
+ "emmanueldmlr@gmail.com\n",
196
+ " \n",
197
+ "|\n",
198
+ " \n",
199
+ "Linkedin:\n",
200
+ " \n",
201
+ "/Bakare\n",
202
+ " \n",
203
+ "Damilare\n",
204
+ " \n",
205
+ "Professional\n",
206
+ " \n",
207
+ "Summar y\n",
208
+ " \n",
209
+ "●\n",
210
+ " \n",
211
+ "Mobile\n",
212
+ " \n",
213
+ "developer\n",
214
+ " \n",
215
+ "with\n",
216
+ " \n",
217
+ "a\n",
218
+ " \n",
219
+ "master's\n",
220
+ " \n",
221
+ "degree\n",
222
+ " \n",
223
+ "in\n",
224
+ " \n",
225
+ "advanced\n",
226
+ " \n",
227
+ "computer\n",
228
+ " \n",
229
+ "science\n",
230
+ " \n",
231
+ "and\n",
232
+ " \n",
233
+ "3+\n",
234
+ " \n",
235
+ "years\n",
236
+ " \n",
237
+ "of\n",
238
+ " \n",
239
+ "experience\n",
240
+ " \n",
241
+ "building\n",
242
+ " \n",
243
+ "scalable/enterprise\n",
244
+ " \n",
245
+ "mobile\n",
246
+ " \n",
247
+ "applications\n",
248
+ " \n",
249
+ "using\n",
250
+ " \n",
251
+ "React\n",
252
+ " \n",
253
+ "Native,\n",
254
+ " \n",
255
+ "Expo,\n",
256
+ " \n",
257
+ "and\n",
258
+ " \n",
259
+ "Typescript.\n",
260
+ " \n",
261
+ "●\n",
262
+ " \n",
263
+ "Spearheaded\n",
264
+ " \n",
265
+ "the\n",
266
+ " \n",
267
+ "development\n",
268
+ " \n",
269
+ "of\n",
270
+ " \n",
271
+ "RekapAI\n",
272
+ " \n",
273
+ "from\n",
274
+ " \n",
275
+ "the\n",
276
+ " \n",
277
+ "ground\n",
278
+ " \n",
279
+ "up\n",
280
+ " \n",
281
+ "with\n",
282
+ " \n",
283
+ "over\n",
284
+ " \n",
285
+ "5k\n",
286
+ " \n",
287
+ "downloads,\n",
288
+ " \n",
289
+ "and\n",
290
+ " \n",
291
+ "a\n",
292
+ " \n",
293
+ "4.90\n",
294
+ " \n",
295
+ "rating\n",
296
+ " \n",
297
+ "on\n",
298
+ " \n",
299
+ "both\n",
300
+ " \n",
301
+ "Apple\n",
302
+ " \n",
303
+ "and\n",
304
+ " \n",
305
+ "Playstore\n",
306
+ " \n",
307
+ " \n",
308
+ "Technical\n",
309
+ " \n",
310
+ "Skills\n",
311
+ " \n",
312
+ "Technologies\n",
313
+ ":\n",
314
+ " \n",
315
+ "Typescript,\n",
316
+ " \n",
317
+ "Javascript,\n",
318
+ " \n",
319
+ "NodeJs.\n",
320
+ " \n",
321
+ "Expo,\n",
322
+ " \n",
323
+ "Graphql,\n",
324
+ " \n",
325
+ "Git,\n",
326
+ " \n",
327
+ "Firebase,\n",
328
+ " \n",
329
+ "React\n",
330
+ " \n",
331
+ "Native,\n",
332
+ " \n",
333
+ "ReactJs,\n",
334
+ " \n",
335
+ "AWS.\n",
336
+ " \n",
337
+ "UI\n",
338
+ " \n",
339
+ "Libraries:\n",
340
+ " \n",
341
+ "Gluestack\n",
342
+ " \n",
343
+ "UI,\n",
344
+ " \n",
345
+ "Native\n",
346
+ " \n",
347
+ "Base,\n",
348
+ " \n",
349
+ "Tamagui.\n",
350
+ " \n",
351
+ "Testing\n",
352
+ " \n",
353
+ "&\n",
354
+ " \n",
355
+ "Tools:\n",
356
+ " \n",
357
+ "Jest,\n",
358
+ " \n",
359
+ "Detox,\n",
360
+ " \n",
361
+ "XCode,\n",
362
+ " \n",
363
+ "Android\n",
364
+ " \n",
365
+ "Studio,\n",
366
+ " \n",
367
+ "Git,\n",
368
+ " \n",
369
+ "Notion,\n",
370
+ " \n",
371
+ "VsCode.\n",
372
+ " \n",
373
+ "Others\n",
374
+ ":\n",
375
+ " \n",
376
+ "RESTful\n",
377
+ " \n",
378
+ "APIs,\n",
379
+ " \n",
380
+ "Continuous\n",
381
+ " \n",
382
+ "Integration\n",
383
+ " \n",
384
+ "and\n",
385
+ " \n",
386
+ "Deployment\n",
387
+ " \n",
388
+ "(CI\n",
389
+ " \n",
390
+ "&\n",
391
+ " \n",
392
+ "CD),\n",
393
+ " \n",
394
+ "Appcenter\n",
395
+ " \n",
396
+ "Codepush.\n",
397
+ " \n",
398
+ " \n",
399
+ "Work\n",
400
+ " \n",
401
+ "Experience\n",
402
+ " \n",
403
+ "Mobile\n",
404
+ " \n",
405
+ "Engineer\n",
406
+ " \n",
407
+ "-\n",
408
+ " \n",
409
+ "React\n",
410
+ " \n",
411
+ "Native,\n",
412
+ " \n",
413
+ "Expo\n",
414
+ " \n",
415
+ "|\n",
416
+ " \n",
417
+ "MosaiQ\n",
418
+ " \n",
419
+ "Labs,\n",
420
+ " \n",
421
+ "United\n",
422
+ " \n",
423
+ "Kingdom\n",
424
+ " \n",
425
+ " \n",
426
+ " \n",
427
+ " \n",
428
+ " \n",
429
+ "Sept\n",
430
+ " \n",
431
+ "2022\n",
432
+ " \n",
433
+ "-\n",
434
+ " \n",
435
+ "Present\n",
436
+ " \n",
437
+ "●\n",
438
+ " \n",
439
+ "Implemented\n",
440
+ " \n",
441
+ "Over-the-air\n",
442
+ " \n",
443
+ "(OTA)\n",
444
+ " \n",
445
+ "update\n",
446
+ " \n",
447
+ "using\n",
448
+ " \n",
449
+ "Expo\n",
450
+ " \n",
451
+ "Application\n",
452
+ " \n",
453
+ "Services\n",
454
+ " \n",
455
+ "(EAS)\n",
456
+ " \n",
457
+ "Update,\n",
458
+ " \n",
459
+ "enabling\n",
460
+ " \n",
461
+ "the\n",
462
+ " \n",
463
+ "seamless\n",
464
+ " \n",
465
+ "delivery\n",
466
+ " \n",
467
+ "of\n",
468
+ " \n",
469
+ "app\n",
470
+ " \n",
471
+ "updates\n",
472
+ " \n",
473
+ "directly\n",
474
+ " \n",
475
+ "to\n",
476
+ " \n",
477
+ "users’\n",
478
+ " \n",
479
+ "devices\n",
480
+ " \n",
481
+ "(iOS\n",
482
+ " \n",
483
+ "and\n",
484
+ " \n",
485
+ "Android).\n",
486
+ " \n",
487
+ "This\n",
488
+ " \n",
489
+ "drastically\n",
490
+ " \n",
491
+ "reduced\n",
492
+ " \n",
493
+ "the\n",
494
+ " \n",
495
+ "update\n",
496
+ " \n",
497
+ "deployment\n",
498
+ " \n",
499
+ "and\n",
500
+ " \n",
501
+ "bug\n",
502
+ " \n",
503
+ "fixes\n",
504
+ " \n",
505
+ "cycle\n",
506
+ " \n",
507
+ "by\n",
508
+ " \n",
509
+ "80%.\n",
510
+ " \n",
511
+ "●\n",
512
+ " \n",
513
+ "Integrated\n",
514
+ " \n",
515
+ "Sentry\n",
516
+ " \n",
517
+ "into\n",
518
+ " \n",
519
+ "the\n",
520
+ " \n",
521
+ "mobile\n",
522
+ " \n",
523
+ "app\n",
524
+ " \n",
525
+ "for\n",
526
+ " \n",
527
+ "real-time\n",
528
+ " \n",
529
+ "error\n",
530
+ " \n",
531
+ "tracking\n",
532
+ " \n",
533
+ "and\n",
534
+ " \n",
535
+ "performance\n",
536
+ " \n",
537
+ "analytics;\n",
538
+ " \n",
539
+ "identified\n",
540
+ " \n",
541
+ "and\n",
542
+ " \n",
543
+ "resolved\n",
544
+ " \n",
545
+ "bugs,\n",
546
+ " \n",
547
+ "enhancing\n",
548
+ " \n",
549
+ "app\n",
550
+ " \n",
551
+ "reliability\n",
552
+ " \n",
553
+ "and\n",
554
+ " \n",
555
+ "user\n",
556
+ " \n",
557
+ "satisfaction\n",
558
+ " \n",
559
+ "by\n",
560
+ " \n",
561
+ "20%.\n",
562
+ " \n",
563
+ "●\n",
564
+ " \n",
565
+ "Integrated\n",
566
+ " \n",
567
+ "Speechmatics\n",
568
+ " \n",
569
+ "API\n",
570
+ " \n",
571
+ "for\n",
572
+ " \n",
573
+ "advanced\n",
574
+ " \n",
575
+ "audio\n",
576
+ " \n",
577
+ "analysis,\n",
578
+ " \n",
579
+ "creating\n",
580
+ " \n",
581
+ "detailed\n",
582
+ " \n",
583
+ "transcripts\n",
584
+ " \n",
585
+ "and\n",
586
+ " \n",
587
+ "summaries;\n",
588
+ " \n",
589
+ "providing\n",
590
+ " \n",
591
+ "actionable\n",
592
+ " \n",
593
+ "insights,\n",
594
+ " \n",
595
+ "and\n",
596
+ " \n",
597
+ "reducing\n",
598
+ " \n",
599
+ "time\n",
600
+ " \n",
601
+ "spent\n",
602
+ " \n",
603
+ "on\n",
604
+ " \n",
605
+ "manual\n",
606
+ " \n",
607
+ "note-taking\n",
608
+ " \n",
609
+ "by\n",
610
+ " \n",
611
+ "90%.\n",
612
+ " \n",
613
+ "●\n",
614
+ " \n",
615
+ "Established\n",
616
+ " \n",
617
+ "an\n",
618
+ " \n",
619
+ "efficient\n",
620
+ " \n",
621
+ "CI/CD\n",
622
+ " \n",
623
+ "pipeline\n",
624
+ " \n",
625
+ "with\n",
626
+ " \n",
627
+ "GitHub\n",
628
+ " \n",
629
+ "Actions\n",
630
+ " \n",
631
+ "and\n",
632
+ " \n",
633
+ "AppCenter\n",
634
+ " \n",
635
+ "CodePush,\n",
636
+ " \n",
637
+ "accelerating\n",
638
+ " \n",
639
+ "release\n",
640
+ " \n",
641
+ "cycles\n",
642
+ " \n",
643
+ "by\n",
644
+ " \n",
645
+ "35%\n",
646
+ " \n",
647
+ "and\n",
648
+ " \n",
649
+ "enhancing\n",
650
+ " \n",
651
+ "deployment\n",
652
+ " \n",
653
+ "reliability,\n",
654
+ " \n",
655
+ "leading\n",
656
+ " \n",
657
+ "to\n",
658
+ " \n",
659
+ "a\n",
660
+ " \n",
661
+ "41%\n",
662
+ " \n",
663
+ "increase\n",
664
+ " \n",
665
+ "in\n",
666
+ " \n",
667
+ "user\n",
668
+ " \n",
669
+ "satisfaction.\n",
670
+ " \n",
671
+ "●\n",
672
+ " \n",
673
+ "Developed\n",
674
+ " \n",
675
+ "and\n",
676
+ " \n",
677
+ "integrated\n",
678
+ " \n",
679
+ "an\n",
680
+ " \n",
681
+ "in-app\n",
682
+ " \n",
683
+ "payment\n",
684
+ " \n",
685
+ "system\n",
686
+ " \n",
687
+ "for\n",
688
+ " \n",
689
+ "both\n",
690
+ " \n",
691
+ "iOS\n",
692
+ " \n",
693
+ "and\n",
694
+ " \n",
695
+ "Android\n",
696
+ " \n",
697
+ "platforms\n",
698
+ " \n",
699
+ "using\n",
700
+ " \n",
701
+ "the\n",
702
+ " \n",
703
+ "Expo\n",
704
+ " \n",
705
+ "Stripe\n",
706
+ " \n",
707
+ "SDK,\n",
708
+ " \n",
709
+ "enabling\n",
710
+ " \n",
711
+ "seamless\n",
712
+ " \n",
713
+ "user\n",
714
+ " \n",
715
+ "subscription\n",
716
+ " \n",
717
+ "management\n",
718
+ " \n",
719
+ "and\n",
720
+ " \n",
721
+ "handling\n",
722
+ " \n",
723
+ "transactions\n",
724
+ " \n",
725
+ "totaling\n",
726
+ " \n",
727
+ "$150k+\n",
728
+ " \n",
729
+ "to\n",
730
+ " \n",
731
+ "date.\n",
732
+ " \n",
733
+ "●\n",
734
+ " \n",
735
+ "Responsible\n",
736
+ " \n",
737
+ "for\n",
738
+ " \n",
739
+ "designing\n",
740
+ " \n",
741
+ "and\n",
742
+ " \n",
743
+ "implementing\n",
744
+ " \n",
745
+ "intricate\n",
746
+ " \n",
747
+ "and\n",
748
+ " \n",
749
+ "efficient\n",
750
+ " \n",
751
+ "app\n",
752
+ " \n",
753
+ "architectures\n",
754
+ " \n",
755
+ "using\n",
756
+ " \n",
757
+ "React\n",
758
+ " \n",
759
+ "Native,\n",
760
+ " \n",
761
+ "Typescript,\n",
762
+ " \n",
763
+ "and\n",
764
+ " \n",
765
+ "Jest,\n",
766
+ " \n",
767
+ "improving\n",
768
+ " \n",
769
+ "performance\n",
770
+ " \n",
771
+ "efficiency\n",
772
+ " \n",
773
+ "by\n",
774
+ " \n",
775
+ "30%\n",
776
+ " \n",
777
+ "and\n",
778
+ " \n",
779
+ "reducing\n",
780
+ " \n",
781
+ "code\n",
782
+ " \n",
783
+ "complexity\n",
784
+ " \n",
785
+ "by\n",
786
+ " \n",
787
+ "43%.\n",
788
+ " \n",
789
+ "●\n",
790
+ " \n",
791
+ "Managed\n",
792
+ " \n",
793
+ "and\n",
794
+ " \n",
795
+ "mentored\n",
796
+ " \n",
797
+ "a\n",
798
+ " \n",
799
+ "team\n",
800
+ " \n",
801
+ "of\n",
802
+ " \n",
803
+ "5\n",
804
+ " \n",
805
+ "developers\n",
806
+ " \n",
807
+ "in\n",
808
+ " \n",
809
+ "creating\n",
810
+ " \n",
811
+ "scalable\n",
812
+ " \n",
813
+ "mobile\n",
814
+ " \n",
815
+ "applications,\n",
816
+ " \n",
817
+ "resulting\n",
818
+ " \n",
819
+ "in\n",
820
+ " \n",
821
+ "a\n",
822
+ " \n",
823
+ "30%\n",
824
+ " \n",
825
+ "increase\n",
826
+ " \n",
827
+ "in\n",
828
+ " \n",
829
+ "application\n",
830
+ " \n",
831
+ "performance\n",
832
+ " \n",
833
+ "and\n",
834
+ " \n",
835
+ "a\n",
836
+ " \n",
837
+ "20%\n",
838
+ " \n",
839
+ "reduction\n",
840
+ " \n",
841
+ "in\n",
842
+ " \n",
843
+ "bug\n",
844
+ " \n",
845
+ "rates.\n",
846
+ " \n",
847
+ " \n",
848
+ "Mobile\n",
849
+ " \n",
850
+ "Developer\n",
851
+ " \n",
852
+ "-\n",
853
+ " \n",
854
+ "React\n",
855
+ " \n",
856
+ "Native,\n",
857
+ " \n",
858
+ "Expo\n",
859
+ " \n",
860
+ "|\n",
861
+ " \n",
862
+ "GSP,\n",
863
+ " \n",
864
+ "Inc,\n",
865
+ " \n",
866
+ "United\n",
867
+ " \n",
868
+ "States\n",
869
+ " \n",
870
+ "(Remote)\n",
871
+ " \n",
872
+ " \n",
873
+ " \n",
874
+ " \n",
875
+ "Sept\n",
876
+ " \n",
877
+ "2021\n",
878
+ " \n",
879
+ "-\n",
880
+ " \n",
881
+ "Aug\n",
882
+ " \n",
883
+ "2022\n",
884
+ " \n",
885
+ "●\n",
886
+ " \n",
887
+ "Spearheaded\n",
888
+ " \n",
889
+ "the\n",
890
+ " \n",
891
+ "implementation\n",
892
+ " \n",
893
+ "of\n",
894
+ " \n",
895
+ "a\n",
896
+ " \n",
897
+ "voice-based\n",
898
+ " \n",
899
+ "assessments\n",
900
+ " \n",
901
+ "feature\n",
902
+ " \n",
903
+ "in\n",
904
+ " \n",
905
+ "the\n",
906
+ " \n",
907
+ "superpower\n",
908
+ " \n",
909
+ "mobile\n",
910
+ " \n",
911
+ "App\n",
912
+ " \n",
913
+ "using\n",
914
+ " \n",
915
+ "ReactNative,\n",
916
+ " \n",
917
+ "ElevenLabs,\n",
918
+ " \n",
919
+ "and\n",
920
+ " \n",
921
+ "DeepGram\n",
922
+ " \n",
923
+ "APIs,\n",
924
+ " \n",
925
+ "enhancing\n",
926
+ " \n",
927
+ "user\n",
928
+ " \n",
929
+ "interaction\n",
930
+ " \n",
931
+ "for\n",
932
+ " \n",
933
+ "over\n",
934
+ " \n",
935
+ "1000\n",
936
+ " \n",
937
+ "users.\n",
938
+ " \n",
939
+ "●\n",
940
+ " \n",
941
+ "Created\n",
942
+ " \n",
943
+ "a\n",
944
+ " \n",
945
+ "push\n",
946
+ " \n",
947
+ "notification\n",
948
+ " \n",
949
+ "system\n",
950
+ " \n",
951
+ "for\n",
952
+ " \n",
953
+ "users'\n",
954
+ " \n",
955
+ "deck\n",
956
+ " \n",
957
+ "revision\n",
958
+ " \n",
959
+ "using\n",
960
+ " \n",
961
+ "Firebase\n",
962
+ " \n",
963
+ "and\n",
964
+ " \n",
965
+ "expo\n",
966
+ " \n",
967
+ "notification,\n",
968
+ " \n",
969
+ "increasing\n",
970
+ " \n",
971
+ "user\n",
972
+ " \n",
973
+ "engagement\n",
974
+ " \n",
975
+ "by\n",
976
+ " \n",
977
+ "60%.\n",
978
+ " \n",
979
+ "●\n",
980
+ " \n",
981
+ "Coordinated\n",
982
+ " \n",
983
+ "with\n",
984
+ " \n",
985
+ "UX/UI\n",
986
+ " \n",
987
+ "designers\n",
988
+ " \n",
989
+ "to\n",
990
+ " \n",
991
+ "implement\n",
992
+ " \n",
993
+ "user-centric\n",
994
+ " \n",
995
+ "designs,\n",
996
+ " \n",
997
+ "leading\n",
998
+ " \n",
999
+ "to\n",
1000
+ " \n",
1001
+ "a\n",
1002
+ " \n",
1003
+ "40%\n",
1004
+ " \n",
1005
+ "boost\n",
1006
+ " \n",
1007
+ "in\n",
1008
+ " \n",
1009
+ "user\n",
1010
+ " \n",
1011
+ "retention\n",
1012
+ " \n",
1013
+ "rates.\n",
1014
+ " \n",
1015
+ " \n",
1016
+ "Education\n",
1017
+ " \n",
1018
+ "Master\n",
1019
+ " \n",
1020
+ "of\n",
1021
+ " \n",
1022
+ "Science,\n",
1023
+ " \n",
1024
+ "Advanced\n",
1025
+ " \n",
1026
+ "Computer\n",
1027
+ " \n",
1028
+ "Science\n",
1029
+ " \n",
1030
+ "(Distinction),\n",
1031
+ " \n",
1032
+ "Hull,\n",
1033
+ " \n",
1034
+ "United\n",
1035
+ " \n",
1036
+ "Kingdom\n",
1037
+ " \n",
1038
+ "University\n",
1039
+ " \n",
1040
+ "of\n",
1041
+ " \n",
1042
+ "Hull.\n",
1043
+ " \n",
1044
+ "Sept\n",
1045
+ " \n",
1046
+ "2023\n",
1047
+ " \n",
1048
+ "●\n",
1049
+ " \n",
1050
+ "Awards\n",
1051
+ ":\n",
1052
+ " \n",
1053
+ "Best\n",
1054
+ " \n",
1055
+ "graduating\n",
1056
+ " \n",
1057
+ "master’s\n",
1058
+ " \n",
1059
+ "student\n",
1060
+ " \n",
1061
+ "in\n",
1062
+ " \n",
1063
+ "advanced\n",
1064
+ " \n",
1065
+ "computer\n",
1066
+ " \n",
1067
+ "science;\n",
1068
+ " \n",
1069
+ "British\n",
1070
+ " \n",
1071
+ "Computer\n",
1072
+ " \n",
1073
+ "Society\n",
1074
+ " \n",
1075
+ "(BCS)\n",
1076
+ " \n",
1077
+ "for\n",
1078
+ " \n",
1079
+ "the\n",
1080
+ " \n",
1081
+ "best\n",
1082
+ " \n",
1083
+ "performance\n",
1084
+ " \n",
1085
+ "in\n",
1086
+ " \n",
1087
+ "the\n",
1088
+ " \n",
1089
+ "Master’s\n",
1090
+ " \n",
1091
+ "program.\n",
1092
+ " \n",
1093
+ " \n",
1094
+ "Bachelor\n",
1095
+ " \n",
1096
+ "of\n",
1097
+ " \n",
1098
+ "Science\n",
1099
+ " \n",
1100
+ "(Honours),\n",
1101
+ " \n",
1102
+ "Computer\n",
1103
+ " \n",
1104
+ "Science\n",
1105
+ " \n",
1106
+ "(4.45/5.0),\n",
1107
+ " \n",
1108
+ "Ile-Ife,\n",
1109
+ " \n",
1110
+ "Nigeria\n",
1111
+ " \n",
1112
+ "Obafemi\n",
1113
+ " \n",
1114
+ "Awolowo\n",
1115
+ " \n",
1116
+ "University.\n",
1117
+ " \n",
1118
+ "Apr\n",
1119
+ " \n",
1120
+ "2014\n",
1121
+ " \n",
1122
+ "-\n",
1123
+ " \n",
1124
+ "Mar\n",
1125
+ " \n",
1126
+ "2020\n",
1127
+ " \n",
1128
+ "●\n",
1129
+ " \n",
1130
+ "Awards\n",
1131
+ ":\n",
1132
+ " \n",
1133
+ "Graduated\n",
1134
+ " \n",
1135
+ "as\n",
1136
+ " \n",
1137
+ "the\n",
1138
+ " \n",
1139
+ "top\n",
1140
+ " \n",
1141
+ "student\n",
1142
+ " \n",
1143
+ "in\n",
1144
+ " \n",
1145
+ "the\n",
1146
+ " \n",
1147
+ "class\n",
1148
+ " \n",
1149
+ "with\n",
1150
+ " \n",
1151
+ "an\n",
1152
+ " \n",
1153
+ "89%\n",
1154
+ " \n",
1155
+ "average;\n",
1156
+ " \n",
1157
+ "Beneficiary\n",
1158
+ " \n",
1159
+ "of\n",
1160
+ " \n",
1161
+ "MTN\n",
1162
+ " \n",
1163
+ "2017/2018\n",
1164
+ " \n",
1165
+ "Scholarship\n",
1166
+ " \n",
1167
+ "award.\n",
1168
+ " \n",
1169
+ " \n",
1170
+ "Extracurricular\n",
1171
+ " \n",
1172
+ "Activities\n",
1173
+ " \n",
1174
+ "Writeups\n",
1175
+ " \n",
1176
+ "Writeups\n",
1177
+ " \n",
1178
+ "are\n",
1179
+ " \n",
1180
+ "available\n",
1181
+ " \n",
1182
+ "on\n",
1183
+ " \n",
1184
+ "Medium:\n",
1185
+ " \n",
1186
+ "@drebakare\n",
1187
+ ".\n",
1188
+ " \n",
1189
+ "Recent\n",
1190
+ " \n",
1191
+ "articles\n",
1192
+ " \n",
1193
+ "are:\n",
1194
+ " \n",
1195
+ "●\n",
1196
+ " \n",
1197
+ "Enabling\n",
1198
+ " \n",
1199
+ "Background\n",
1200
+ " \n",
1201
+ "Recording\n",
1202
+ " \n",
1203
+ "on\n",
1204
+ " \n",
1205
+ "Android\n",
1206
+ " \n",
1207
+ "with\n",
1208
+ " \n",
1209
+ "Expo:\n",
1210
+ " \n",
1211
+ "The\n",
1212
+ " \n",
1213
+ "Missing\n",
1214
+ " \n",
1215
+ "Piece.\n",
1216
+ " \n",
1217
+ "●\n",
1218
+ " \n",
1219
+ "“Building\n",
1220
+ " \n",
1221
+ "a\n",
1222
+ " \n",
1223
+ "recording\n",
1224
+ " \n",
1225
+ "app\n",
1226
+ " \n",
1227
+ "with\n",
1228
+ " \n",
1229
+ "expo-av:\n",
1230
+ " \n",
1231
+ "The\n",
1232
+ " \n",
1233
+ "missing\n",
1234
+ " \n",
1235
+ "part”.\n",
1236
+ " \n",
1237
+ "●\n",
1238
+ " \n",
1239
+ "How\n",
1240
+ " \n",
1241
+ "To\n",
1242
+ " \n",
1243
+ "Write\n",
1244
+ " \n",
1245
+ "Reusable\n",
1246
+ " \n",
1247
+ "React\n",
1248
+ " \n",
1249
+ "Components.\n",
1250
+ " \n",
1251
+ " \n",
1252
+ "Talks\n",
1253
+ ":\n",
1254
+ " \n",
1255
+ " \n",
1256
+ "●\n",
1257
+ " \n",
1258
+ "A\n",
1259
+ " \n",
1260
+ "keynote\n",
1261
+ " \n",
1262
+ "speaker\n",
1263
+ " \n",
1264
+ "at\n",
1265
+ " \n",
1266
+ "“Design\n",
1267
+ " \n",
1268
+ "Meets\n",
1269
+ " \n",
1270
+ "Tech\n",
1271
+ " \n",
1272
+ "2024”;\n",
1273
+ " \n",
1274
+ " \n",
1275
+ "●\n",
1276
+ " \n",
1277
+ "Speaker\n",
1278
+ " \n",
1279
+ "at\n",
1280
+ " \n",
1281
+ "UNICAF\n",
1282
+ " \n",
1283
+ "(2023)\n",
1284
+ " \n",
1285
+ "seminar\n",
1286
+ " \n",
1287
+ "on\n",
1288
+ " \n",
1289
+ "'The\n",
1290
+ " \n",
1291
+ "Role\n",
1292
+ " \n",
1293
+ "and\n",
1294
+ " \n",
1295
+ "Impact\n",
1296
+ " \n",
1297
+ "of\n",
1298
+ " \n",
1299
+ "AI\n",
1300
+ " \n",
1301
+ "on\n",
1302
+ " \n",
1303
+ "the\n",
1304
+ " \n",
1305
+ "Job\n",
1306
+ " \n",
1307
+ "Market'.\n",
1308
+ " \n"
1309
+ ]
1310
+ }
1311
+ ],
1312
+ "source": [
1313
+ "reader = PdfReader(\"cv.pdf\")\n",
1314
+ "\n",
1315
+ "cv = \"\"\n",
1316
+ "for page in reader.pages:\n",
1317
+ " cv += page.extract_text()\n",
1318
+ "\n",
1319
+ "print(cv)"
1320
+ ]
1321
+ },
1322
+ {
1323
+ "cell_type": "code",
1324
+ "execution_count": 13,
1325
+ "id": "9295909c",
1326
+ "metadata": {},
1327
+ "outputs": [
1328
+ {
1329
+ "name": "stdout",
1330
+ "output_type": "stream",
1331
+ "text": [
1332
+ "My name is Damilare Bakare a Software Engineer, with skills in technologies like ReactJs, React Native, NextJs, Javascript, and Typescript. My efforts in this field reflects the commitment to excellence and innovation in creating user-centric digital solutions.\n",
1333
+ "\n",
1334
+ "Beyond the realm of technology, my passion for photography allows him to capture the world's beauty with the same precision and creativity I apply to engineering projects. Each photograph is an opportunity to tell a story, much like how I transform complex web concepts into intuitive and engaging designs.\n"
1335
+ ]
1336
+ }
1337
+ ],
1338
+ "source": [
1339
+ "summary = \"\"\n",
1340
+ "\n",
1341
+ "#lets read the summary.txt file\n",
1342
+ "with open(\"summary.txt\", \"r\") as file:\n",
1343
+ " summary = file.read()\n",
1344
+ "\n",
1345
+ "print(summary)\n",
1346
+ "\n"
1347
+ ]
1348
+ },
1349
+ {
1350
+ "cell_type": "code",
1351
+ "execution_count": 14,
1352
+ "id": "a74de2c7",
1353
+ "metadata": {},
1354
+ "outputs": [],
1355
+ "source": [
1356
+ "name=\"Damilare Bakare\""
1357
+ ]
1358
+ },
1359
+ {
1360
+ "cell_type": "code",
1361
+ "execution_count": 15,
1362
+ "id": "9653241c",
1363
+ "metadata": {},
1364
+ "outputs": [],
1365
+ "source": [
1366
+ "system_prompt = f\"\"\"\n",
1367
+ "You are a helpful assistant that can answer questions about {name}.\n",
1368
+ "\n",
1369
+ "You are given a summary of {name} and {name}'s CV. you need to answer questions about {name}.\n",
1370
+ "\n",
1371
+ "The summary is:\n",
1372
+ "{summary}\n",
1373
+ "\n",
1374
+ "The CV is:\n",
1375
+ "{cv}\n",
1376
+ "\n",
1377
+ "As {name}'s personal assistant, you must be polite, professional and engaging.\n",
1378
+ "\n",
1379
+ "You need to answer the questions based on the summary and the CV.\n",
1380
+ "\n",
1381
+ "You have the ability to use record_user_details tool to record the details of the user that is interested in getting in touch. and also record_unknown_question tool to record the unknown question asked by the user.\n",
1382
+ "\n",
1383
+ "Make sure to nudge the user to the direction of dropping their details to get in touch with {name}.\n",
1384
+ "\n",
1385
+ "\"\"\""
1386
+ ]
1387
+ },
1388
+ {
1389
+ "cell_type": "code",
1390
+ "execution_count": 16,
1391
+ "id": "70c80095",
1392
+ "metadata": {},
1393
+ "outputs": [
1394
+ {
1395
+ "name": "stdout",
1396
+ "output_type": "stream",
1397
+ "text": [
1398
+ "\n",
1399
+ "You are a helpful assistant that can answer questions about Damilare Bakare.\n",
1400
+ "\n",
1401
+ "You are given a summary of Damilare Bakare and Damilare Bakare's CV. you need to answer questions about Damilare Bakare.\n",
1402
+ "\n",
1403
+ "The summary is:\n",
1404
+ "My name is Damilare Bakare a Software Engineer, with skills in technologies like ReactJs, React Native, NextJs, Javascript, and Typescript. My efforts in this field reflects the commitment to excellence and innovation in creating user-centric digital solutions.\n",
1405
+ "\n",
1406
+ "Beyond the realm of technology, my passion for photography allows him to capture the world's beauty with the same precision and creativity I apply to engineering projects. Each photograph is an opportunity to tell a story, much like how I transform complex web concepts into intuitive and engaging designs.\n",
1407
+ "\n",
1408
+ "The CV is:\n",
1409
+ " \n",
1410
+ " \n",
1411
+ "Damilar e\n",
1412
+ " \n",
1413
+ "Bakar e\n",
1414
+ " \n",
1415
+ "Address:\n",
1416
+ " \n",
1417
+ "London,\n",
1418
+ " \n",
1419
+ "United\n",
1420
+ " \n",
1421
+ "Kingdom\n",
1422
+ " \n",
1423
+ "Mobile:\n",
1424
+ " \n",
1425
+ "+447721635453\n",
1426
+ " \n",
1427
+ "|\n",
1428
+ " \n",
1429
+ "Email:\n",
1430
+ " \n",
1431
+ "emmanueldmlr@gmail.com\n",
1432
+ " \n",
1433
+ "|\n",
1434
+ " \n",
1435
+ "Linkedin:\n",
1436
+ " \n",
1437
+ "/Bakare\n",
1438
+ " \n",
1439
+ "Damilare\n",
1440
+ " \n",
1441
+ "Professional\n",
1442
+ " \n",
1443
+ "Summar y\n",
1444
+ " \n",
1445
+ "●\n",
1446
+ " \n",
1447
+ "Mobile\n",
1448
+ " \n",
1449
+ "developer\n",
1450
+ " \n",
1451
+ "with\n",
1452
+ " \n",
1453
+ "a\n",
1454
+ " \n",
1455
+ "master's\n",
1456
+ " \n",
1457
+ "degree\n",
1458
+ " \n",
1459
+ "in\n",
1460
+ " \n",
1461
+ "advanced\n",
1462
+ " \n",
1463
+ "computer\n",
1464
+ " \n",
1465
+ "science\n",
1466
+ " \n",
1467
+ "and\n",
1468
+ " \n",
1469
+ "3+\n",
1470
+ " \n",
1471
+ "years\n",
1472
+ " \n",
1473
+ "of\n",
1474
+ " \n",
1475
+ "experience\n",
1476
+ " \n",
1477
+ "building\n",
1478
+ " \n",
1479
+ "scalable/enterprise\n",
1480
+ " \n",
1481
+ "mobile\n",
1482
+ " \n",
1483
+ "applications\n",
1484
+ " \n",
1485
+ "using\n",
1486
+ " \n",
1487
+ "React\n",
1488
+ " \n",
1489
+ "Native,\n",
1490
+ " \n",
1491
+ "Expo,\n",
1492
+ " \n",
1493
+ "and\n",
1494
+ " \n",
1495
+ "Typescript.\n",
1496
+ " \n",
1497
+ "●\n",
1498
+ " \n",
1499
+ "Spearheaded\n",
1500
+ " \n",
1501
+ "the\n",
1502
+ " \n",
1503
+ "development\n",
1504
+ " \n",
1505
+ "of\n",
1506
+ " \n",
1507
+ "RekapAI\n",
1508
+ " \n",
1509
+ "from\n",
1510
+ " \n",
1511
+ "the\n",
1512
+ " \n",
1513
+ "ground\n",
1514
+ " \n",
1515
+ "up\n",
1516
+ " \n",
1517
+ "with\n",
1518
+ " \n",
1519
+ "over\n",
1520
+ " \n",
1521
+ "5k\n",
1522
+ " \n",
1523
+ "downloads,\n",
1524
+ " \n",
1525
+ "and\n",
1526
+ " \n",
1527
+ "a\n",
1528
+ " \n",
1529
+ "4.90\n",
1530
+ " \n",
1531
+ "rating\n",
1532
+ " \n",
1533
+ "on\n",
1534
+ " \n",
1535
+ "both\n",
1536
+ " \n",
1537
+ "Apple\n",
1538
+ " \n",
1539
+ "and\n",
1540
+ " \n",
1541
+ "Playstore\n",
1542
+ " \n",
1543
+ " \n",
1544
+ "Technical\n",
1545
+ " \n",
1546
+ "Skills\n",
1547
+ " \n",
1548
+ "Technologies\n",
1549
+ ":\n",
1550
+ " \n",
1551
+ "Typescript,\n",
1552
+ " \n",
1553
+ "Javascript,\n",
1554
+ " \n",
1555
+ "NodeJs.\n",
1556
+ " \n",
1557
+ "Expo,\n",
1558
+ " \n",
1559
+ "Graphql,\n",
1560
+ " \n",
1561
+ "Git,\n",
1562
+ " \n",
1563
+ "Firebase,\n",
1564
+ " \n",
1565
+ "React\n",
1566
+ " \n",
1567
+ "Native,\n",
1568
+ " \n",
1569
+ "ReactJs,\n",
1570
+ " \n",
1571
+ "AWS.\n",
1572
+ " \n",
1573
+ "UI\n",
1574
+ " \n",
1575
+ "Libraries:\n",
1576
+ " \n",
1577
+ "Gluestack\n",
1578
+ " \n",
1579
+ "UI,\n",
1580
+ " \n",
1581
+ "Native\n",
1582
+ " \n",
1583
+ "Base,\n",
1584
+ " \n",
1585
+ "Tamagui.\n",
1586
+ " \n",
1587
+ "Testing\n",
1588
+ " \n",
1589
+ "&\n",
1590
+ " \n",
1591
+ "Tools:\n",
1592
+ " \n",
1593
+ "Jest,\n",
1594
+ " \n",
1595
+ "Detox,\n",
1596
+ " \n",
1597
+ "XCode,\n",
1598
+ " \n",
1599
+ "Android\n",
1600
+ " \n",
1601
+ "Studio,\n",
1602
+ " \n",
1603
+ "Git,\n",
1604
+ " \n",
1605
+ "Notion,\n",
1606
+ " \n",
1607
+ "VsCode.\n",
1608
+ " \n",
1609
+ "Others\n",
1610
+ ":\n",
1611
+ " \n",
1612
+ "RESTful\n",
1613
+ " \n",
1614
+ "APIs,\n",
1615
+ " \n",
1616
+ "Continuous\n",
1617
+ " \n",
1618
+ "Integration\n",
1619
+ " \n",
1620
+ "and\n",
1621
+ " \n",
1622
+ "Deployment\n",
1623
+ " \n",
1624
+ "(CI\n",
1625
+ " \n",
1626
+ "&\n",
1627
+ " \n",
1628
+ "CD),\n",
1629
+ " \n",
1630
+ "Appcenter\n",
1631
+ " \n",
1632
+ "Codepush.\n",
1633
+ " \n",
1634
+ " \n",
1635
+ "Work\n",
1636
+ " \n",
1637
+ "Experience\n",
1638
+ " \n",
1639
+ "Mobile\n",
1640
+ " \n",
1641
+ "Engineer\n",
1642
+ " \n",
1643
+ "-\n",
1644
+ " \n",
1645
+ "React\n",
1646
+ " \n",
1647
+ "Native,\n",
1648
+ " \n",
1649
+ "Expo\n",
1650
+ " \n",
1651
+ "|\n",
1652
+ " \n",
1653
+ "MosaiQ\n",
1654
+ " \n",
1655
+ "Labs,\n",
1656
+ " \n",
1657
+ "United\n",
1658
+ " \n",
1659
+ "Kingdom\n",
1660
+ " \n",
1661
+ " \n",
1662
+ " \n",
1663
+ " \n",
1664
+ " \n",
1665
+ "Sept\n",
1666
+ " \n",
1667
+ "2022\n",
1668
+ " \n",
1669
+ "-\n",
1670
+ " \n",
1671
+ "Present\n",
1672
+ " \n",
1673
+ "●\n",
1674
+ " \n",
1675
+ "Implemented\n",
1676
+ " \n",
1677
+ "Over-the-air\n",
1678
+ " \n",
1679
+ "(OTA)\n",
1680
+ " \n",
1681
+ "update\n",
1682
+ " \n",
1683
+ "using\n",
1684
+ " \n",
1685
+ "Expo\n",
1686
+ " \n",
1687
+ "Application\n",
1688
+ " \n",
1689
+ "Services\n",
1690
+ " \n",
1691
+ "(EAS)\n",
1692
+ " \n",
1693
+ "Update,\n",
1694
+ " \n",
1695
+ "enabling\n",
1696
+ " \n",
1697
+ "the\n",
1698
+ " \n",
1699
+ "seamless\n",
1700
+ " \n",
1701
+ "delivery\n",
1702
+ " \n",
1703
+ "of\n",
1704
+ " \n",
1705
+ "app\n",
1706
+ " \n",
1707
+ "updates\n",
1708
+ " \n",
1709
+ "directly\n",
1710
+ " \n",
1711
+ "to\n",
1712
+ " \n",
1713
+ "users’\n",
1714
+ " \n",
1715
+ "devices\n",
1716
+ " \n",
1717
+ "(iOS\n",
1718
+ " \n",
1719
+ "and\n",
1720
+ " \n",
1721
+ "Android).\n",
1722
+ " \n",
1723
+ "This\n",
1724
+ " \n",
1725
+ "drastically\n",
1726
+ " \n",
1727
+ "reduced\n",
1728
+ " \n",
1729
+ "the\n",
1730
+ " \n",
1731
+ "update\n",
1732
+ " \n",
1733
+ "deployment\n",
1734
+ " \n",
1735
+ "and\n",
1736
+ " \n",
1737
+ "bug\n",
1738
+ " \n",
1739
+ "fixes\n",
1740
+ " \n",
1741
+ "cycle\n",
1742
+ " \n",
1743
+ "by\n",
1744
+ " \n",
1745
+ "80%.\n",
1746
+ " \n",
1747
+ "●\n",
1748
+ " \n",
1749
+ "Integrated\n",
1750
+ " \n",
1751
+ "Sentry\n",
1752
+ " \n",
1753
+ "into\n",
1754
+ " \n",
1755
+ "the\n",
1756
+ " \n",
1757
+ "mobile\n",
1758
+ " \n",
1759
+ "app\n",
1760
+ " \n",
1761
+ "for\n",
1762
+ " \n",
1763
+ "real-time\n",
1764
+ " \n",
1765
+ "error\n",
1766
+ " \n",
1767
+ "tracking\n",
1768
+ " \n",
1769
+ "and\n",
1770
+ " \n",
1771
+ "performance\n",
1772
+ " \n",
1773
+ "analytics;\n",
1774
+ " \n",
1775
+ "identified\n",
1776
+ " \n",
1777
+ "and\n",
1778
+ " \n",
1779
+ "resolved\n",
1780
+ " \n",
1781
+ "bugs,\n",
1782
+ " \n",
1783
+ "enhancing\n",
1784
+ " \n",
1785
+ "app\n",
1786
+ " \n",
1787
+ "reliability\n",
1788
+ " \n",
1789
+ "and\n",
1790
+ " \n",
1791
+ "user\n",
1792
+ " \n",
1793
+ "satisfaction\n",
1794
+ " \n",
1795
+ "by\n",
1796
+ " \n",
1797
+ "20%.\n",
1798
+ " \n",
1799
+ "●\n",
1800
+ " \n",
1801
+ "Integrated\n",
1802
+ " \n",
1803
+ "Speechmatics\n",
1804
+ " \n",
1805
+ "API\n",
1806
+ " \n",
1807
+ "for\n",
1808
+ " \n",
1809
+ "advanced\n",
1810
+ " \n",
1811
+ "audio\n",
1812
+ " \n",
1813
+ "analysis,\n",
1814
+ " \n",
1815
+ "creating\n",
1816
+ " \n",
1817
+ "detailed\n",
1818
+ " \n",
1819
+ "transcripts\n",
1820
+ " \n",
1821
+ "and\n",
1822
+ " \n",
1823
+ "summaries;\n",
1824
+ " \n",
1825
+ "providing\n",
1826
+ " \n",
1827
+ "actionable\n",
1828
+ " \n",
1829
+ "insights,\n",
1830
+ " \n",
1831
+ "and\n",
1832
+ " \n",
1833
+ "reducing\n",
1834
+ " \n",
1835
+ "time\n",
1836
+ " \n",
1837
+ "spent\n",
1838
+ " \n",
1839
+ "on\n",
1840
+ " \n",
1841
+ "manual\n",
1842
+ " \n",
1843
+ "note-taking\n",
1844
+ " \n",
1845
+ "by\n",
1846
+ " \n",
1847
+ "90%.\n",
1848
+ " \n",
1849
+ "●\n",
1850
+ " \n",
1851
+ "Established\n",
1852
+ " \n",
1853
+ "an\n",
1854
+ " \n",
1855
+ "efficient\n",
1856
+ " \n",
1857
+ "CI/CD\n",
1858
+ " \n",
1859
+ "pipeline\n",
1860
+ " \n",
1861
+ "with\n",
1862
+ " \n",
1863
+ "GitHub\n",
1864
+ " \n",
1865
+ "Actions\n",
1866
+ " \n",
1867
+ "and\n",
1868
+ " \n",
1869
+ "AppCenter\n",
1870
+ " \n",
1871
+ "CodePush,\n",
1872
+ " \n",
1873
+ "accelerating\n",
1874
+ " \n",
1875
+ "release\n",
1876
+ " \n",
1877
+ "cycles\n",
1878
+ " \n",
1879
+ "by\n",
1880
+ " \n",
1881
+ "35%\n",
1882
+ " \n",
1883
+ "and\n",
1884
+ " \n",
1885
+ "enhancing\n",
1886
+ " \n",
1887
+ "deployment\n",
1888
+ " \n",
1889
+ "reliability,\n",
1890
+ " \n",
1891
+ "leading\n",
1892
+ " \n",
1893
+ "to\n",
1894
+ " \n",
1895
+ "a\n",
1896
+ " \n",
1897
+ "41%\n",
1898
+ " \n",
1899
+ "increase\n",
1900
+ " \n",
1901
+ "in\n",
1902
+ " \n",
1903
+ "user\n",
1904
+ " \n",
1905
+ "satisfaction.\n",
1906
+ " \n",
1907
+ "●\n",
1908
+ " \n",
1909
+ "Developed\n",
1910
+ " \n",
1911
+ "and\n",
1912
+ " \n",
1913
+ "integrated\n",
1914
+ " \n",
1915
+ "an\n",
1916
+ " \n",
1917
+ "in-app\n",
1918
+ " \n",
1919
+ "payment\n",
1920
+ " \n",
1921
+ "system\n",
1922
+ " \n",
1923
+ "for\n",
1924
+ " \n",
1925
+ "both\n",
1926
+ " \n",
1927
+ "iOS\n",
1928
+ " \n",
1929
+ "and\n",
1930
+ " \n",
1931
+ "Android\n",
1932
+ " \n",
1933
+ "platforms\n",
1934
+ " \n",
1935
+ "using\n",
1936
+ " \n",
1937
+ "the\n",
1938
+ " \n",
1939
+ "Expo\n",
1940
+ " \n",
1941
+ "Stripe\n",
1942
+ " \n",
1943
+ "SDK,\n",
1944
+ " \n",
1945
+ "enabling\n",
1946
+ " \n",
1947
+ "seamless\n",
1948
+ " \n",
1949
+ "user\n",
1950
+ " \n",
1951
+ "subscription\n",
1952
+ " \n",
1953
+ "management\n",
1954
+ " \n",
1955
+ "and\n",
1956
+ " \n",
1957
+ "handling\n",
1958
+ " \n",
1959
+ "transactions\n",
1960
+ " \n",
1961
+ "totaling\n",
1962
+ " \n",
1963
+ "$150k+\n",
1964
+ " \n",
1965
+ "to\n",
1966
+ " \n",
1967
+ "date.\n",
1968
+ " \n",
1969
+ "●\n",
1970
+ " \n",
1971
+ "Responsible\n",
1972
+ " \n",
1973
+ "for\n",
1974
+ " \n",
1975
+ "designing\n",
1976
+ " \n",
1977
+ "and\n",
1978
+ " \n",
1979
+ "implementing\n",
1980
+ " \n",
1981
+ "intricate\n",
1982
+ " \n",
1983
+ "and\n",
1984
+ " \n",
1985
+ "efficient\n",
1986
+ " \n",
1987
+ "app\n",
1988
+ " \n",
1989
+ "architectures\n",
1990
+ " \n",
1991
+ "using\n",
1992
+ " \n",
1993
+ "React\n",
1994
+ " \n",
1995
+ "Native,\n",
1996
+ " \n",
1997
+ "Typescript,\n",
1998
+ " \n",
1999
+ "and\n",
2000
+ " \n",
2001
+ "Jest,\n",
2002
+ " \n",
2003
+ "improving\n",
2004
+ " \n",
2005
+ "performance\n",
2006
+ " \n",
2007
+ "efficiency\n",
2008
+ " \n",
2009
+ "by\n",
2010
+ " \n",
2011
+ "30%\n",
2012
+ " \n",
2013
+ "and\n",
2014
+ " \n",
2015
+ "reducing\n",
2016
+ " \n",
2017
+ "code\n",
2018
+ " \n",
2019
+ "complexity\n",
2020
+ " \n",
2021
+ "by\n",
2022
+ " \n",
2023
+ "43%.\n",
2024
+ " \n",
2025
+ "●\n",
2026
+ " \n",
2027
+ "Managed\n",
2028
+ " \n",
2029
+ "and\n",
2030
+ " \n",
2031
+ "mentored\n",
2032
+ " \n",
2033
+ "a\n",
2034
+ " \n",
2035
+ "team\n",
2036
+ " \n",
2037
+ "of\n",
2038
+ " \n",
2039
+ "5\n",
2040
+ " \n",
2041
+ "developers\n",
2042
+ " \n",
2043
+ "in\n",
2044
+ " \n",
2045
+ "creating\n",
2046
+ " \n",
2047
+ "scalable\n",
2048
+ " \n",
2049
+ "mobile\n",
2050
+ " \n",
2051
+ "applications,\n",
2052
+ " \n",
2053
+ "resulting\n",
2054
+ " \n",
2055
+ "in\n",
2056
+ " \n",
2057
+ "a\n",
2058
+ " \n",
2059
+ "30%\n",
2060
+ " \n",
2061
+ "increase\n",
2062
+ " \n",
2063
+ "in\n",
2064
+ " \n",
2065
+ "application\n",
2066
+ " \n",
2067
+ "performance\n",
2068
+ " \n",
2069
+ "and\n",
2070
+ " \n",
2071
+ "a\n",
2072
+ " \n",
2073
+ "20%\n",
2074
+ " \n",
2075
+ "reduction\n",
2076
+ " \n",
2077
+ "in\n",
2078
+ " \n",
2079
+ "bug\n",
2080
+ " \n",
2081
+ "rates.\n",
2082
+ " \n",
2083
+ " \n",
2084
+ "Mobile\n",
2085
+ " \n",
2086
+ "Developer\n",
2087
+ " \n",
2088
+ "-\n",
2089
+ " \n",
2090
+ "React\n",
2091
+ " \n",
2092
+ "Native,\n",
2093
+ " \n",
2094
+ "Expo\n",
2095
+ " \n",
2096
+ "|\n",
2097
+ " \n",
2098
+ "GSP,\n",
2099
+ " \n",
2100
+ "Inc,\n",
2101
+ " \n",
2102
+ "United\n",
2103
+ " \n",
2104
+ "States\n",
2105
+ " \n",
2106
+ "(Remote)\n",
2107
+ " \n",
2108
+ " \n",
2109
+ " \n",
2110
+ " \n",
2111
+ "Sept\n",
2112
+ " \n",
2113
+ "2021\n",
2114
+ " \n",
2115
+ "-\n",
2116
+ " \n",
2117
+ "Aug\n",
2118
+ " \n",
2119
+ "2022\n",
2120
+ " \n",
2121
+ "●\n",
2122
+ " \n",
2123
+ "Spearheaded\n",
2124
+ " \n",
2125
+ "the\n",
2126
+ " \n",
2127
+ "implementation\n",
2128
+ " \n",
2129
+ "of\n",
2130
+ " \n",
2131
+ "a\n",
2132
+ " \n",
2133
+ "voice-based\n",
2134
+ " \n",
2135
+ "assessments\n",
2136
+ " \n",
2137
+ "feature\n",
2138
+ " \n",
2139
+ "in\n",
2140
+ " \n",
2141
+ "the\n",
2142
+ " \n",
2143
+ "superpower\n",
2144
+ " \n",
2145
+ "mobile\n",
2146
+ " \n",
2147
+ "App\n",
2148
+ " \n",
2149
+ "using\n",
2150
+ " \n",
2151
+ "ReactNative,\n",
2152
+ " \n",
2153
+ "ElevenLabs,\n",
2154
+ " \n",
2155
+ "and\n",
2156
+ " \n",
2157
+ "DeepGram\n",
2158
+ " \n",
2159
+ "APIs,\n",
2160
+ " \n",
2161
+ "enhancing\n",
2162
+ " \n",
2163
+ "user\n",
2164
+ " \n",
2165
+ "interaction\n",
2166
+ " \n",
2167
+ "for\n",
2168
+ " \n",
2169
+ "over\n",
2170
+ " \n",
2171
+ "1000\n",
2172
+ " \n",
2173
+ "users.\n",
2174
+ " \n",
2175
+ "●\n",
2176
+ " \n",
2177
+ "Created\n",
2178
+ " \n",
2179
+ "a\n",
2180
+ " \n",
2181
+ "push\n",
2182
+ " \n",
2183
+ "notification\n",
2184
+ " \n",
2185
+ "system\n",
2186
+ " \n",
2187
+ "for\n",
2188
+ " \n",
2189
+ "users'\n",
2190
+ " \n",
2191
+ "deck\n",
2192
+ " \n",
2193
+ "revision\n",
2194
+ " \n",
2195
+ "using\n",
2196
+ " \n",
2197
+ "Firebase\n",
2198
+ " \n",
2199
+ "and\n",
2200
+ " \n",
2201
+ "expo\n",
2202
+ " \n",
2203
+ "notification,\n",
2204
+ " \n",
2205
+ "increasing\n",
2206
+ " \n",
2207
+ "user\n",
2208
+ " \n",
2209
+ "engagement\n",
2210
+ " \n",
2211
+ "by\n",
2212
+ " \n",
2213
+ "60%.\n",
2214
+ " \n",
2215
+ "●\n",
2216
+ " \n",
2217
+ "Coordinated\n",
2218
+ " \n",
2219
+ "with\n",
2220
+ " \n",
2221
+ "UX/UI\n",
2222
+ " \n",
2223
+ "designers\n",
2224
+ " \n",
2225
+ "to\n",
2226
+ " \n",
2227
+ "implement\n",
2228
+ " \n",
2229
+ "user-centric\n",
2230
+ " \n",
2231
+ "designs,\n",
2232
+ " \n",
2233
+ "leading\n",
2234
+ " \n",
2235
+ "to\n",
2236
+ " \n",
2237
+ "a\n",
2238
+ " \n",
2239
+ "40%\n",
2240
+ " \n",
2241
+ "boost\n",
2242
+ " \n",
2243
+ "in\n",
2244
+ " \n",
2245
+ "user\n",
2246
+ " \n",
2247
+ "retention\n",
2248
+ " \n",
2249
+ "rates.\n",
2250
+ " \n",
2251
+ " \n",
2252
+ "Education\n",
2253
+ " \n",
2254
+ "Master\n",
2255
+ " \n",
2256
+ "of\n",
2257
+ " \n",
2258
+ "Science,\n",
2259
+ " \n",
2260
+ "Advanced\n",
2261
+ " \n",
2262
+ "Computer\n",
2263
+ " \n",
2264
+ "Science\n",
2265
+ " \n",
2266
+ "(Distinction),\n",
2267
+ " \n",
2268
+ "Hull,\n",
2269
+ " \n",
2270
+ "United\n",
2271
+ " \n",
2272
+ "Kingdom\n",
2273
+ " \n",
2274
+ "University\n",
2275
+ " \n",
2276
+ "of\n",
2277
+ " \n",
2278
+ "Hull.\n",
2279
+ " \n",
2280
+ "Sept\n",
2281
+ " \n",
2282
+ "2023\n",
2283
+ " \n",
2284
+ "●\n",
2285
+ " \n",
2286
+ "Awards\n",
2287
+ ":\n",
2288
+ " \n",
2289
+ "Best\n",
2290
+ " \n",
2291
+ "graduating\n",
2292
+ " \n",
2293
+ "master’s\n",
2294
+ " \n",
2295
+ "student\n",
2296
+ " \n",
2297
+ "in\n",
2298
+ " \n",
2299
+ "advanced\n",
2300
+ " \n",
2301
+ "computer\n",
2302
+ " \n",
2303
+ "science;\n",
2304
+ " \n",
2305
+ "British\n",
2306
+ " \n",
2307
+ "Computer\n",
2308
+ " \n",
2309
+ "Society\n",
2310
+ " \n",
2311
+ "(BCS)\n",
2312
+ " \n",
2313
+ "for\n",
2314
+ " \n",
2315
+ "the\n",
2316
+ " \n",
2317
+ "best\n",
2318
+ " \n",
2319
+ "performance\n",
2320
+ " \n",
2321
+ "in\n",
2322
+ " \n",
2323
+ "the\n",
2324
+ " \n",
2325
+ "Master’s\n",
2326
+ " \n",
2327
+ "program.\n",
2328
+ " \n",
2329
+ " \n",
2330
+ "Bachelor\n",
2331
+ " \n",
2332
+ "of\n",
2333
+ " \n",
2334
+ "Science\n",
2335
+ " \n",
2336
+ "(Honours),\n",
2337
+ " \n",
2338
+ "Computer\n",
2339
+ " \n",
2340
+ "Science\n",
2341
+ " \n",
2342
+ "(4.45/5.0),\n",
2343
+ " \n",
2344
+ "Ile-Ife,\n",
2345
+ " \n",
2346
+ "Nigeria\n",
2347
+ " \n",
2348
+ "Obafemi\n",
2349
+ " \n",
2350
+ "Awolowo\n",
2351
+ " \n",
2352
+ "University.\n",
2353
+ " \n",
2354
+ "Apr\n",
2355
+ " \n",
2356
+ "2014\n",
2357
+ " \n",
2358
+ "-\n",
2359
+ " \n",
2360
+ "Mar\n",
2361
+ " \n",
2362
+ "2020\n",
2363
+ " \n",
2364
+ "●\n",
2365
+ " \n",
2366
+ "Awards\n",
2367
+ ":\n",
2368
+ " \n",
2369
+ "Graduated\n",
2370
+ " \n",
2371
+ "as\n",
2372
+ " \n",
2373
+ "the\n",
2374
+ " \n",
2375
+ "top\n",
2376
+ " \n",
2377
+ "student\n",
2378
+ " \n",
2379
+ "in\n",
2380
+ " \n",
2381
+ "the\n",
2382
+ " \n",
2383
+ "class\n",
2384
+ " \n",
2385
+ "with\n",
2386
+ " \n",
2387
+ "an\n",
2388
+ " \n",
2389
+ "89%\n",
2390
+ " \n",
2391
+ "average;\n",
2392
+ " \n",
2393
+ "Beneficiary\n",
2394
+ " \n",
2395
+ "of\n",
2396
+ " \n",
2397
+ "MTN\n",
2398
+ " \n",
2399
+ "2017/2018\n",
2400
+ " \n",
2401
+ "Scholarship\n",
2402
+ " \n",
2403
+ "award.\n",
2404
+ " \n",
2405
+ " \n",
2406
+ "Extracurricular\n",
2407
+ " \n",
2408
+ "Activities\n",
2409
+ " \n",
2410
+ "Writeups\n",
2411
+ " \n",
2412
+ "Writeups\n",
2413
+ " \n",
2414
+ "are\n",
2415
+ " \n",
2416
+ "available\n",
2417
+ " \n",
2418
+ "on\n",
2419
+ " \n",
2420
+ "Medium:\n",
2421
+ " \n",
2422
+ "@drebakare\n",
2423
+ ".\n",
2424
+ " \n",
2425
+ "Recent\n",
2426
+ " \n",
2427
+ "articles\n",
2428
+ " \n",
2429
+ "are:\n",
2430
+ " \n",
2431
+ "●\n",
2432
+ " \n",
2433
+ "Enabling\n",
2434
+ " \n",
2435
+ "Background\n",
2436
+ " \n",
2437
+ "Recording\n",
2438
+ " \n",
2439
+ "on\n",
2440
+ " \n",
2441
+ "Android\n",
2442
+ " \n",
2443
+ "with\n",
2444
+ " \n",
2445
+ "Expo:\n",
2446
+ " \n",
2447
+ "The\n",
2448
+ " \n",
2449
+ "Missing\n",
2450
+ " \n",
2451
+ "Piece.\n",
2452
+ " \n",
2453
+ "●\n",
2454
+ " \n",
2455
+ "“Building\n",
2456
+ " \n",
2457
+ "a\n",
2458
+ " \n",
2459
+ "recording\n",
2460
+ " \n",
2461
+ "app\n",
2462
+ " \n",
2463
+ "with\n",
2464
+ " \n",
2465
+ "expo-av:\n",
2466
+ " \n",
2467
+ "The\n",
2468
+ " \n",
2469
+ "missing\n",
2470
+ " \n",
2471
+ "part”.\n",
2472
+ " \n",
2473
+ "●\n",
2474
+ " \n",
2475
+ "How\n",
2476
+ " \n",
2477
+ "To\n",
2478
+ " \n",
2479
+ "Write\n",
2480
+ " \n",
2481
+ "Reusable\n",
2482
+ " \n",
2483
+ "React\n",
2484
+ " \n",
2485
+ "Components.\n",
2486
+ " \n",
2487
+ " \n",
2488
+ "Talks\n",
2489
+ ":\n",
2490
+ " \n",
2491
+ " \n",
2492
+ "●\n",
2493
+ " \n",
2494
+ "A\n",
2495
+ " \n",
2496
+ "keynote\n",
2497
+ " \n",
2498
+ "speaker\n",
2499
+ " \n",
2500
+ "at\n",
2501
+ " \n",
2502
+ "“Design\n",
2503
+ " \n",
2504
+ "Meets\n",
2505
+ " \n",
2506
+ "Tech\n",
2507
+ " \n",
2508
+ "2024”;\n",
2509
+ " \n",
2510
+ " \n",
2511
+ "●\n",
2512
+ " \n",
2513
+ "Speaker\n",
2514
+ " \n",
2515
+ "at\n",
2516
+ " \n",
2517
+ "UNICAF\n",
2518
+ " \n",
2519
+ "(2023)\n",
2520
+ " \n",
2521
+ "seminar\n",
2522
+ " \n",
2523
+ "on\n",
2524
+ " \n",
2525
+ "'The\n",
2526
+ " \n",
2527
+ "Role\n",
2528
+ " \n",
2529
+ "and\n",
2530
+ " \n",
2531
+ "Impact\n",
2532
+ " \n",
2533
+ "of\n",
2534
+ " \n",
2535
+ "AI\n",
2536
+ " \n",
2537
+ "on\n",
2538
+ " \n",
2539
+ "the\n",
2540
+ " \n",
2541
+ "Job\n",
2542
+ " \n",
2543
+ "Market'.\n",
2544
+ " \n",
2545
+ "\n",
2546
+ "As Damilare Bakare's personal assistant, you must be polite, professional and engaging.\n",
2547
+ "\n",
2548
+ "You need to answer the questions based on the summary and the CV.\n",
2549
+ "\n",
2550
+ "You have the ability to use record_user_details tool to record the details of the user that is interested in getting in touch. and also record_unknown_question tool to record the unknown question asked by the user.\n",
2551
+ "\n",
2552
+ "Make sure to nudge the user to the direction of dropping their details to get in touch with Damilare Bakare.\n",
2553
+ "\n",
2554
+ "\n"
2555
+ ]
2556
+ }
2557
+ ],
2558
+ "source": [
2559
+ "print(system_prompt)"
2560
+ ]
2561
+ },
2562
+ {
2563
+ "cell_type": "code",
2564
+ "execution_count": 17,
2565
+ "id": "db066c99",
2566
+ "metadata": {},
2567
+ "outputs": [],
2568
+ "source": [
2569
+ "\n",
2570
+ "class Chat(BaseModel):\n",
2571
+ " isAccepted: bool\n",
2572
+ " reason: str\n",
2573
+ "\n"
2574
+ ]
2575
+ },
2576
+ {
2577
+ "cell_type": "code",
2578
+ "execution_count": 18,
2579
+ "id": "49fe1dc6",
2580
+ "metadata": {},
2581
+ "outputs": [],
2582
+ "source": [
2583
+ "def evaluate(history, question, response)->Chat:\n",
2584
+ " \n",
2585
+ " evaluator_prompt = f\"\"\"\n",
2586
+ " You are a response evaluator. Your task is to evaluate the response of another assistant to a chat about {name}. \n",
2587
+ " You are to ensure that the response is relevant to the chat, not of the context, professional and engaging.\n",
2588
+ " Given the {name}'s summary to be {summary} and the {name}'s CV to be {cv}, chat history to be {history} and the question to be {question}, you need to evaluate the assistant's repoonse {response} to be sure that it is relevant to the chat, not of the context, professional and engaging.\n",
2589
+ " \"\"\"\n",
2590
+ "\n",
2591
+ " evaluator_message = [{\n",
2592
+ " \"role\": \"user\",\n",
2593
+ " \"content\": evaluator_prompt\n",
2594
+ " }]\n",
2595
+ "\n",
2596
+ " evaluator_response = gemini_client.beta.chat.completions.parse(\n",
2597
+ " model=\"gemini-2.0-flash\",\n",
2598
+ " messages=evaluator_message,\n",
2599
+ " response_format=Chat\n",
2600
+ " )\n",
2601
+ "\n",
2602
+ " return evaluator_response.choices[0].message.parsed"
2603
+ ]
2604
+ },
2605
+ {
2606
+ "cell_type": "code",
2607
+ "execution_count": 19,
2608
+ "id": "09aa545b",
2609
+ "metadata": {},
2610
+ "outputs": [],
2611
+ "source": [
2612
+ "def reRun(feedback, history, question):\n",
2613
+ " rerun_prompt = f\"\"\"\n",
2614
+ " You are a response rerunner. Your task is to rerun the response of another assistant to a chat about {name}. \n",
2615
+ " You are to ensure that the response is relevant to the chat, not of the context, professional and engaging.\n",
2616
+ " Given the {name}'s summary to be {summary} and the {name}'s CV to be {cv}, chat history to be {history} and the question to be {question}, \n",
2617
+ " You need to generate another response based on the feedback {feedback} to be sure that it is relevant to the chat, not of the context, professional and engaging.\n",
2618
+ " \"\"\"\n",
2619
+ "\n",
2620
+ " rerun_message = [{\n",
2621
+ " \"role\": \"system\",\n",
2622
+ " \"content\": rerun_prompt\n",
2623
+ " }] + history + [\n",
2624
+ " {\n",
2625
+ " \"role\": \"user\",\n",
2626
+ " \"content\": question\n",
2627
+ " }\n",
2628
+ " ]\n",
2629
+ "\n",
2630
+ " rerun_response = openai_client.chat.completions.create(\n",
2631
+ " model=\"gpt-4o-mini\",\n",
2632
+ " messages=rerun_message\n",
2633
+ " )\n",
2634
+ "\n",
2635
+ " return rerun_response.choices[0].message.content"
2636
+ ]
2637
+ },
2638
+ {
2639
+ "cell_type": "code",
2640
+ "execution_count": 20,
2641
+ "id": "0dceb7ca",
2642
+ "metadata": {},
2643
+ "outputs": [],
2644
+ "source": [
2645
+ "tools = [{\"type\": \"function\", \"function\": record_user_details_tool_structure}, {\"type\": \"function\", \"function\": record_unknown_question_tool_structure}]"
2646
+ ]
2647
+ },
2648
+ {
2649
+ "cell_type": "code",
2650
+ "execution_count": 36,
2651
+ "id": "f0157276",
2652
+ "metadata": {},
2653
+ "outputs": [],
2654
+ "source": [
2655
+ "def chat(message, history):\n",
2656
+ " # Build message list once and keep appending\n",
2657
+ " messages = [\n",
2658
+ " {\"role\": \"system\", \"content\": system_prompt}\n",
2659
+ " ] + history + [\n",
2660
+ " {\"role\": \"user\", \"content\": message}\n",
2661
+ " ]\n",
2662
+ "\n",
2663
+ " max_tool_loops = 5\n",
2664
+ " loops = 0\n",
2665
+ "\n",
2666
+ " while True:\n",
2667
+ " print(messages)\n",
2668
+ " response = openai_client.chat.completions.create(\n",
2669
+ " model=\"gpt-4o-mini\",\n",
2670
+ " messages=messages,\n",
2671
+ " tools=tools,\n",
2672
+ " )\n",
2673
+ "\n",
2674
+ " choice = response.choices[0]\n",
2675
+ " finish_reason = choice.finish_reason\n",
2676
+ " print(finish_reason)\n",
2677
+ "\n",
2678
+ " assistant_message = choice.message\n",
2679
+ "\n",
2680
+ " # If the model requests tools, append the assistant's tool_calls and the tool results, then loop\n",
2681
+ " if finish_reason == \"tool_calls\" and assistant_message.tool_calls:\n",
2682
+ " loops += 1\n",
2683
+ " if loops > max_tool_loops:\n",
2684
+ " return \"Sorry, I ran into a tool loop. Please try again.\"\n",
2685
+ "\n",
2686
+ " # Add assistant message with tool_calls\n",
2687
+ " messages.append(assistant_message)\n",
2688
+ "\n",
2689
+ " # Execute tools and add their outputs as tool messages\n",
2690
+ " tool_messages = handle_tool_call(assistant_message.tool_calls)\n",
2691
+ " messages.extend(tool_messages)\n",
2692
+ " continue\n",
2693
+ "\n",
2694
+ " # Otherwise, we have a normal assistant response\n",
2695
+ " break\n",
2696
+ "\n",
2697
+ " unevaluated_response = assistant_message.content or \"\"\n",
2698
+ "\n",
2699
+ " evaluator_result = evaluate(history, message, unevaluated_response)\n",
2700
+ " print(evaluator_result)\n",
2701
+ " if evaluator_result.isAccepted:\n",
2702
+ " print(\"Accepted\")\n",
2703
+ " return unevaluated_response\n",
2704
+ " else:\n",
2705
+ " print(\"Re-running\")\n",
2706
+ " return reRun(evaluator_result.reason, history, message)\n"
2707
+ ]
2708
+ },
2709
+ {
2710
+ "cell_type": "code",
2711
+ "execution_count": 37,
2712
+ "id": "97a7f963",
2713
+ "metadata": {},
2714
+ "outputs": [
2715
+ {
2716
+ "name": "stdout",
2717
+ "output_type": "stream",
2718
+ "text": [
2719
+ "* Running on local URL: http://127.0.0.1:7868\n",
2720
+ "* To create a public link, set `share=True` in `launch()`.\n"
2721
+ ]
2722
+ },
2723
+ {
2724
+ "data": {
2725
+ "text/html": [
2726
+ "<div><iframe src=\"http://127.0.0.1:7868/\" width=\"100%\" height=\"500\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"
2727
+ ],
2728
+ "text/plain": [
2729
+ "<IPython.core.display.HTML object>"
2730
+ ]
2731
+ },
2732
+ "metadata": {},
2733
+ "output_type": "display_data"
2734
+ },
2735
+ {
2736
+ "data": {
2737
+ "text/plain": []
2738
+ },
2739
+ "execution_count": 37,
2740
+ "metadata": {},
2741
+ "output_type": "execute_result"
2742
+ },
2743
+ {
2744
+ "name": "stdout",
2745
+ "output_type": "stream",
2746
+ "text": [
2747
+ "[{'role': 'system', 'content': \"\\nYou are a helpful assistant that can answer questions about Damilare Bakare.\\n\\nYou are given a summary of Damilare Bakare and Damilare Bakare's CV. you need to answer questions about Damilare Bakare.\\n\\nThe summary is:\\nMy name is Damilare Bakare a Software Engineer, with skills in technologies like ReactJs, React Native, NextJs, Javascript, and Typescript. My efforts in this field reflects the commitment to excellence and innovation in creating user-centric digital solutions.\\n\\nBeyond the realm of technology, my passion for photography allows him to capture the world's beauty with the same precision and creativity I apply to engineering projects. Each photograph is an opportunity to tell a story, much like how I transform complex web concepts into intuitive and engaging designs.\\n\\nThe CV is:\\n \\n \\nDamilar e\\n \\nBakar e\\n \\nAddress:\\n \\nLondon,\\n \\nUnited\\n \\nKingdom\\n \\nMobile:\\n \\n+447721635453\\n \\n|\\n \\nEmail:\\n \\nemmanueldmlr@gmail.com\\n \\n|\\n \\nLinkedin:\\n \\n/Bakare\\n \\nDamilare\\n \\nProfessional\\n \\nSummar y\\n \\n●\\n \\nMobile\\n \\ndeveloper\\n \\nwith\\n \\na\\n \\nmaster's\\n \\ndegree\\n \\nin\\n \\nadvanced\\n \\ncomputer\\n \\nscience\\n \\nand\\n \\n3+\\n \\nyears\\n \\nof\\n \\nexperience\\n \\nbuilding\\n \\nscalable/enterprise\\n \\nmobile\\n \\napplications\\n \\nusing\\n \\nReact\\n \\nNative,\\n \\nExpo,\\n \\nand\\n \\nTypescript.\\n \\n●\\n \\nSpearheaded\\n \\nthe\\n \\ndevelopment\\n \\nof\\n \\nRekapAI\\n \\nfrom\\n \\nthe\\n \\nground\\n \\nup\\n \\nwith\\n \\nover\\n \\n5k\\n \\ndownloads,\\n \\nand\\n \\na\\n \\n4.90\\n \\nrating\\n \\non\\n \\nboth\\n \\nApple\\n \\nand\\n \\nPlaystore\\n \\n \\nTechnical\\n \\nSkills\\n \\nTechnologies\\n:\\n \\nTypescript,\\n \\nJavascript,\\n \\nNodeJs.\\n \\nExpo,\\n \\nGraphql,\\n \\nGit,\\n \\nFirebase,\\n \\nReact\\n \\nNative,\\n \\nReactJs,\\n \\nAWS.\\n \\nUI\\n \\nLibraries:\\n \\nGluestack\\n \\nUI,\\n \\nNative\\n \\nBase,\\n \\nTamagui.\\n \\nTesting\\n \\n&\\n \\nTools:\\n \\nJest,\\n \\nDetox,\\n \\nXCode,\\n \\nAndroid\\n \\nStudio,\\n \\nGit,\\n \\nNotion,\\n \\nVsCode.\\n \\nOthers\\n:\\n \\nRESTful\\n \\nAPIs,\\n \\nContinuous\\n \\nIntegration\\n \\nand\\n \\nDeployment\\n \\n(CI\\n \\n&\\n \\nCD),\\n \\nAppcenter\\n \\nCodepush.\\n \\n \\nWork\\n \\nExperience\\n \\nMobile\\n \\nEngineer\\n \\n-\\n \\nReact\\n \\nNative,\\n \\nExpo\\n \\n|\\n \\nMosaiQ\\n \\nLabs,\\n \\nUnited\\n \\nKingdom\\n \\n \\n \\n \\n \\nSept\\n \\n2022\\n \\n-\\n \\nPresent\\n \\n●\\n \\nImplemented\\n \\nOver-the-air\\n \\n(OTA)\\n \\nupdate\\n \\nusing\\n \\nExpo\\n \\nApplication\\n \\nServices\\n \\n(EAS)\\n \\nUpdate,\\n \\nenabling\\n \\nthe\\n \\nseamless\\n \\ndelivery\\n \\nof\\n \\napp\\n \\nupdates\\n \\ndirectly\\n \\nto\\n \\nusers’\\n \\ndevices\\n \\n(iOS\\n \\nand\\n \\nAndroid).\\n \\nThis\\n \\ndrastically\\n \\nreduced\\n \\nthe\\n \\nupdate\\n \\ndeployment\\n \\nand\\n \\nbug\\n \\nfixes\\n \\ncycle\\n \\nby\\n \\n80%.\\n \\n●\\n \\nIntegrated\\n \\nSentry\\n \\ninto\\n \\nthe\\n \\nmobile\\n \\napp\\n \\nfor\\n \\nreal-time\\n \\nerror\\n \\ntracking\\n \\nand\\n \\nperformance\\n \\nanalytics;\\n \\nidentified\\n \\nand\\n \\nresolved\\n \\nbugs,\\n \\nenhancing\\n \\napp\\n \\nreliability\\n \\nand\\n \\nuser\\n \\nsatisfaction\\n \\nby\\n \\n20%.\\n \\n●\\n \\nIntegrated\\n \\nSpeechmatics\\n \\nAPI\\n \\nfor\\n \\nadvanced\\n \\naudio\\n \\nanalysis,\\n \\ncreating\\n \\ndetailed\\n \\ntranscripts\\n \\nand\\n \\nsummaries;\\n \\nproviding\\n \\nactionable\\n \\ninsights,\\n \\nand\\n \\nreducing\\n \\ntime\\n \\nspent\\n \\non\\n \\nmanual\\n \\nnote-taking\\n \\nby\\n \\n90%.\\n \\n●\\n \\nEstablished\\n \\nan\\n \\nefficient\\n \\nCI/CD\\n \\npipeline\\n \\nwith\\n \\nGitHub\\n \\nActions\\n \\nand\\n \\nAppCenter\\n \\nCodePush,\\n \\naccelerating\\n \\nrelease\\n \\ncycles\\n \\nby\\n \\n35%\\n \\nand\\n \\nenhancing\\n \\ndeployment\\n \\nreliability,\\n \\nleading\\n \\nto\\n \\na\\n \\n41%\\n \\nincrease\\n \\nin\\n \\nuser\\n \\nsatisfaction.\\n \\n●\\n \\nDeveloped\\n \\nand\\n \\nintegrated\\n \\nan\\n \\nin-app\\n \\npayment\\n \\nsystem\\n \\nfor\\n \\nboth\\n \\niOS\\n \\nand\\n \\nAndroid\\n \\nplatforms\\n \\nusing\\n \\nthe\\n \\nExpo\\n \\nStripe\\n \\nSDK,\\n \\nenabling\\n \\nseamless\\n \\nuser\\n \\nsubscription\\n \\nmanagement\\n \\nand\\n \\nhandling\\n \\ntransactions\\n \\ntotaling\\n \\n$150k+\\n \\nto\\n \\ndate.\\n \\n●\\n \\nResponsible\\n \\nfor\\n \\ndesigning\\n \\nand\\n \\nimplementing\\n \\nintricate\\n \\nand\\n \\nefficient\\n \\napp\\n \\narchitectures\\n \\nusing\\n \\nReact\\n \\nNative,\\n \\nTypescript,\\n \\nand\\n \\nJest,\\n \\nimproving\\n \\nperformance\\n \\nefficiency\\n \\nby\\n \\n30%\\n \\nand\\n \\nreducing\\n \\ncode\\n \\ncomplexity\\n \\nby\\n \\n43%.\\n \\n●\\n \\nManaged\\n \\nand\\n \\nmentored\\n \\na\\n \\nteam\\n \\nof\\n \\n5\\n \\ndevelopers\\n \\nin\\n \\ncreating\\n \\nscalable\\n \\nmobile\\n \\napplications,\\n \\nresulting\\n \\nin\\n \\na\\n \\n30%\\n \\nincrease\\n \\nin\\n \\napplication\\n \\nperformance\\n \\nand\\n \\na\\n \\n20%\\n \\nreduction\\n \\nin\\n \\nbug\\n \\nrates.\\n \\n \\nMobile\\n \\nDeveloper\\n \\n-\\n \\nReact\\n \\nNative,\\n \\nExpo\\n \\n|\\n \\nGSP,\\n \\nInc,\\n \\nUnited\\n \\nStates\\n \\n(Remote)\\n \\n \\n \\n \\nSept\\n \\n2021\\n \\n-\\n \\nAug\\n \\n2022\\n \\n●\\n \\nSpearheaded\\n \\nthe\\n \\nimplementation\\n \\nof\\n \\na\\n \\nvoice-based\\n \\nassessments\\n \\nfeature\\n \\nin\\n \\nthe\\n \\nsuperpower\\n \\nmobile\\n \\nApp\\n \\nusing\\n \\nReactNative,\\n \\nElevenLabs,\\n \\nand\\n \\nDeepGram\\n \\nAPIs,\\n \\nenhancing\\n \\nuser\\n \\ninteraction\\n \\nfor\\n \\nover\\n \\n1000\\n \\nusers.\\n \\n●\\n \\nCreated\\n \\na\\n \\npush\\n \\nnotification\\n \\nsystem\\n \\nfor\\n \\nusers'\\n \\ndeck\\n \\nrevision\\n \\nusing\\n \\nFirebase\\n \\nand\\n \\nexpo\\n \\nnotification,\\n \\nincreasing\\n \\nuser\\n \\nengagement\\n \\nby\\n \\n60%.\\n \\n●\\n \\nCoordinated\\n \\nwith\\n \\nUX/UI\\n \\ndesigners\\n \\nto\\n \\nimplement\\n \\nuser-centric\\n \\ndesigns,\\n \\nleading\\n \\nto\\n \\na\\n \\n40%\\n \\nboost\\n \\nin\\n \\nuser\\n \\nretention\\n \\nrates.\\n \\n \\nEducation\\n \\nMaster\\n \\nof\\n \\nScience,\\n \\nAdvanced\\n \\nComputer\\n \\nScience\\n \\n(Distinction),\\n \\nHull,\\n \\nUnited\\n \\nKingdom\\n \\nUniversity\\n \\nof\\n \\nHull.\\n \\nSept\\n \\n2023\\n \\n●\\n \\nAwards\\n:\\n \\nBest\\n \\ngraduating\\n \\nmaster’s\\n \\nstudent\\n \\nin\\n \\nadvanced\\n \\ncomputer\\n \\nscience;\\n \\nBritish\\n \\nComputer\\n \\nSociety\\n \\n(BCS)\\n \\nfor\\n \\nthe\\n \\nbest\\n \\nperformance\\n \\nin\\n \\nthe\\n \\nMaster’s\\n \\nprogram.\\n \\n \\nBachelor\\n \\nof\\n \\nScience\\n \\n(Honours),\\n \\nComputer\\n \\nScience\\n \\n(4.45/5.0),\\n \\nIle-Ife,\\n \\nNigeria\\n \\nObafemi\\n \\nAwolowo\\n \\nUniversity.\\n \\nApr\\n \\n2014\\n \\n-\\n \\nMar\\n \\n2020\\n \\n●\\n \\nAwards\\n:\\n \\nGraduated\\n \\nas\\n \\nthe\\n \\ntop\\n \\nstudent\\n \\nin\\n \\nthe\\n \\nclass\\n \\nwith\\n \\nan\\n \\n89%\\n \\naverage;\\n \\nBeneficiary\\n \\nof\\n \\nMTN\\n \\n2017/2018\\n \\nScholarship\\n \\naward.\\n \\n \\nExtracurricular\\n \\nActivities\\n \\nWriteups\\n \\nWriteups\\n \\nare\\n \\navailable\\n \\non\\n \\nMedium:\\n \\n@drebakare\\n.\\n \\nRecent\\n \\narticles\\n \\nare:\\n \\n●\\n \\nEnabling\\n \\nBackground\\n \\nRecording\\n \\non\\n \\nAndroid\\n \\nwith\\n \\nExpo:\\n \\nThe\\n \\nMissing\\n \\nPiece.\\n \\n●\\n \\n“Building\\n \\na\\n \\nrecording\\n \\napp\\n \\nwith\\n \\nexpo-av:\\n \\nThe\\n \\nmissing\\n \\npart”.\\n \\n●\\n \\nHow\\n \\nTo\\n \\nWrite\\n \\nReusable\\n \\nReact\\n \\nComponents.\\n \\n \\nTalks\\n:\\n \\n \\n●\\n \\nA\\n \\nkeynote\\n \\nspeaker\\n \\nat\\n \\n“Design\\n \\nMeets\\n \\nTech\\n \\n2024”;\\n \\n \\n●\\n \\nSpeaker\\n \\nat\\n \\nUNICAF\\n \\n(2023)\\n \\nseminar\\n \\non\\n \\n'The\\n \\nRole\\n \\nand\\n \\nImpact\\n \\nof\\n \\nAI\\n \\non\\n \\nthe\\n \\nJob\\n \\nMarket'.\\n \\n\\nAs Damilare Bakare's personal assistant, you must be polite, professional and engaging.\\n\\nYou need to answer the questions based on the summary and the CV.\\n\\nYou have the ability to use record_user_details tool to record the details of the user that is interested in getting in touch. and also record_unknown_question tool to record the unknown question asked by the user.\\n\\nMake sure to nudge the user to the direction of dropping their details to get in touch with Damilare Bakare.\\n\\n\"}, {'role': 'user', 'content': 'Hi'}]\n",
2748
+ "stop\n",
2749
+ "isAccepted=True reason='The response is relevant to the chat, is professional, and is engaging.'\n",
2750
+ "Accepted\n",
2751
+ "[{'role': 'system', 'content': \"\\nYou are a helpful assistant that can answer questions about Damilare Bakare.\\n\\nYou are given a summary of Damilare Bakare and Damilare Bakare's CV. you need to answer questions about Damilare Bakare.\\n\\nThe summary is:\\nMy name is Damilare Bakare a Software Engineer, with skills in technologies like ReactJs, React Native, NextJs, Javascript, and Typescript. My efforts in this field reflects the commitment to excellence and innovation in creating user-centric digital solutions.\\n\\nBeyond the realm of technology, my passion for photography allows him to capture the world's beauty with the same precision and creativity I apply to engineering projects. Each photograph is an opportunity to tell a story, much like how I transform complex web concepts into intuitive and engaging designs.\\n\\nThe CV is:\\n \\n \\nDamilar e\\n \\nBakar e\\n \\nAddress:\\n \\nLondon,\\n \\nUnited\\n \\nKingdom\\n \\nMobile:\\n \\n+447721635453\\n \\n|\\n \\nEmail:\\n \\nemmanueldmlr@gmail.com\\n \\n|\\n \\nLinkedin:\\n \\n/Bakare\\n \\nDamilare\\n \\nProfessional\\n \\nSummar y\\n \\n●\\n \\nMobile\\n \\ndeveloper\\n \\nwith\\n \\na\\n \\nmaster's\\n \\ndegree\\n \\nin\\n \\nadvanced\\n \\ncomputer\\n \\nscience\\n \\nand\\n \\n3+\\n \\nyears\\n \\nof\\n \\nexperience\\n \\nbuilding\\n \\nscalable/enterprise\\n \\nmobile\\n \\napplications\\n \\nusing\\n \\nReact\\n \\nNative,\\n \\nExpo,\\n \\nand\\n \\nTypescript.\\n \\n●\\n \\nSpearheaded\\n \\nthe\\n \\ndevelopment\\n \\nof\\n \\nRekapAI\\n \\nfrom\\n \\nthe\\n \\nground\\n \\nup\\n \\nwith\\n \\nover\\n \\n5k\\n \\ndownloads,\\n \\nand\\n \\na\\n \\n4.90\\n \\nrating\\n \\non\\n \\nboth\\n \\nApple\\n \\nand\\n \\nPlaystore\\n \\n \\nTechnical\\n \\nSkills\\n \\nTechnologies\\n:\\n \\nTypescript,\\n \\nJavascript,\\n \\nNodeJs.\\n \\nExpo,\\n \\nGraphql,\\n \\nGit,\\n \\nFirebase,\\n \\nReact\\n \\nNative,\\n \\nReactJs,\\n \\nAWS.\\n \\nUI\\n \\nLibraries:\\n \\nGluestack\\n \\nUI,\\n \\nNative\\n \\nBase,\\n \\nTamagui.\\n \\nTesting\\n \\n&\\n \\nTools:\\n \\nJest,\\n \\nDetox,\\n \\nXCode,\\n \\nAndroid\\n \\nStudio,\\n \\nGit,\\n \\nNotion,\\n \\nVsCode.\\n \\nOthers\\n:\\n \\nRESTful\\n \\nAPIs,\\n \\nContinuous\\n \\nIntegration\\n \\nand\\n \\nDeployment\\n \\n(CI\\n \\n&\\n \\nCD),\\n \\nAppcenter\\n \\nCodepush.\\n \\n \\nWork\\n \\nExperience\\n \\nMobile\\n \\nEngineer\\n \\n-\\n \\nReact\\n \\nNative,\\n \\nExpo\\n \\n|\\n \\nMosaiQ\\n \\nLabs,\\n \\nUnited\\n \\nKingdom\\n \\n \\n \\n \\n \\nSept\\n \\n2022\\n \\n-\\n \\nPresent\\n \\n●\\n \\nImplemented\\n \\nOver-the-air\\n \\n(OTA)\\n \\nupdate\\n \\nusing\\n \\nExpo\\n \\nApplication\\n \\nServices\\n \\n(EAS)\\n \\nUpdate,\\n \\nenabling\\n \\nthe\\n \\nseamless\\n \\ndelivery\\n \\nof\\n \\napp\\n \\nupdates\\n \\ndirectly\\n \\nto\\n \\nusers’\\n \\ndevices\\n \\n(iOS\\n \\nand\\n \\nAndroid).\\n \\nThis\\n \\ndrastically\\n \\nreduced\\n \\nthe\\n \\nupdate\\n \\ndeployment\\n \\nand\\n \\nbug\\n \\nfixes\\n \\ncycle\\n \\nby\\n \\n80%.\\n \\n●\\n \\nIntegrated\\n \\nSentry\\n \\ninto\\n \\nthe\\n \\nmobile\\n \\napp\\n \\nfor\\n \\nreal-time\\n \\nerror\\n \\ntracking\\n \\nand\\n \\nperformance\\n \\nanalytics;\\n \\nidentified\\n \\nand\\n \\nresolved\\n \\nbugs,\\n \\nenhancing\\n \\napp\\n \\nreliability\\n \\nand\\n \\nuser\\n \\nsatisfaction\\n \\nby\\n \\n20%.\\n \\n●\\n \\nIntegrated\\n \\nSpeechmatics\\n \\nAPI\\n \\nfor\\n \\nadvanced\\n \\naudio\\n \\nanalysis,\\n \\ncreating\\n \\ndetailed\\n \\ntranscripts\\n \\nand\\n \\nsummaries;\\n \\nproviding\\n \\nactionable\\n \\ninsights,\\n \\nand\\n \\nreducing\\n \\ntime\\n \\nspent\\n \\non\\n \\nmanual\\n \\nnote-taking\\n \\nby\\n \\n90%.\\n \\n●\\n \\nEstablished\\n \\nan\\n \\nefficient\\n \\nCI/CD\\n \\npipeline\\n \\nwith\\n \\nGitHub\\n \\nActions\\n \\nand\\n \\nAppCenter\\n \\nCodePush,\\n \\naccelerating\\n \\nrelease\\n \\ncycles\\n \\nby\\n \\n35%\\n \\nand\\n \\nenhancing\\n \\ndeployment\\n \\nreliability,\\n \\nleading\\n \\nto\\n \\na\\n \\n41%\\n \\nincrease\\n \\nin\\n \\nuser\\n \\nsatisfaction.\\n \\n●\\n \\nDeveloped\\n \\nand\\n \\nintegrated\\n \\nan\\n \\nin-app\\n \\npayment\\n \\nsystem\\n \\nfor\\n \\nboth\\n \\niOS\\n \\nand\\n \\nAndroid\\n \\nplatforms\\n \\nusing\\n \\nthe\\n \\nExpo\\n \\nStripe\\n \\nSDK,\\n \\nenabling\\n \\nseamless\\n \\nuser\\n \\nsubscription\\n \\nmanagement\\n \\nand\\n \\nhandling\\n \\ntransactions\\n \\ntotaling\\n \\n$150k+\\n \\nto\\n \\ndate.\\n \\n●\\n \\nResponsible\\n \\nfor\\n \\ndesigning\\n \\nand\\n \\nimplementing\\n \\nintricate\\n \\nand\\n \\nefficient\\n \\napp\\n \\narchitectures\\n \\nusing\\n \\nReact\\n \\nNative,\\n \\nTypescript,\\n \\nand\\n \\nJest,\\n \\nimproving\\n \\nperformance\\n \\nefficiency\\n \\nby\\n \\n30%\\n \\nand\\n \\nreducing\\n \\ncode\\n \\ncomplexity\\n \\nby\\n \\n43%.\\n \\n●\\n \\nManaged\\n \\nand\\n \\nmentored\\n \\na\\n \\nteam\\n \\nof\\n \\n5\\n \\ndevelopers\\n \\nin\\n \\ncreating\\n \\nscalable\\n \\nmobile\\n \\napplications,\\n \\nresulting\\n \\nin\\n \\na\\n \\n30%\\n \\nincrease\\n \\nin\\n \\napplication\\n \\nperformance\\n \\nand\\n \\na\\n \\n20%\\n \\nreduction\\n \\nin\\n \\nbug\\n \\nrates.\\n \\n \\nMobile\\n \\nDeveloper\\n \\n-\\n \\nReact\\n \\nNative,\\n \\nExpo\\n \\n|\\n \\nGSP,\\n \\nInc,\\n \\nUnited\\n \\nStates\\n \\n(Remote)\\n \\n \\n \\n \\nSept\\n \\n2021\\n \\n-\\n \\nAug\\n \\n2022\\n \\n●\\n \\nSpearheaded\\n \\nthe\\n \\nimplementation\\n \\nof\\n \\na\\n \\nvoice-based\\n \\nassessments\\n \\nfeature\\n \\nin\\n \\nthe\\n \\nsuperpower\\n \\nmobile\\n \\nApp\\n \\nusing\\n \\nReactNative,\\n \\nElevenLabs,\\n \\nand\\n \\nDeepGram\\n \\nAPIs,\\n \\nenhancing\\n \\nuser\\n \\ninteraction\\n \\nfor\\n \\nover\\n \\n1000\\n \\nusers.\\n \\n●\\n \\nCreated\\n \\na\\n \\npush\\n \\nnotification\\n \\nsystem\\n \\nfor\\n \\nusers'\\n \\ndeck\\n \\nrevision\\n \\nusing\\n \\nFirebase\\n \\nand\\n \\nexpo\\n \\nnotification,\\n \\nincreasing\\n \\nuser\\n \\nengagement\\n \\nby\\n \\n60%.\\n \\n●\\n \\nCoordinated\\n \\nwith\\n \\nUX/UI\\n \\ndesigners\\n \\nto\\n \\nimplement\\n \\nuser-centric\\n \\ndesigns,\\n \\nleading\\n \\nto\\n \\na\\n \\n40%\\n \\nboost\\n \\nin\\n \\nuser\\n \\nretention\\n \\nrates.\\n \\n \\nEducation\\n \\nMaster\\n \\nof\\n \\nScience,\\n \\nAdvanced\\n \\nComputer\\n \\nScience\\n \\n(Distinction),\\n \\nHull,\\n \\nUnited\\n \\nKingdom\\n \\nUniversity\\n \\nof\\n \\nHull.\\n \\nSept\\n \\n2023\\n \\n●\\n \\nAwards\\n:\\n \\nBest\\n \\ngraduating\\n \\nmaster’s\\n \\nstudent\\n \\nin\\n \\nadvanced\\n \\ncomputer\\n \\nscience;\\n \\nBritish\\n \\nComputer\\n \\nSociety\\n \\n(BCS)\\n \\nfor\\n \\nthe\\n \\nbest\\n \\nperformance\\n \\nin\\n \\nthe\\n \\nMaster’s\\n \\nprogram.\\n \\n \\nBachelor\\n \\nof\\n \\nScience\\n \\n(Honours),\\n \\nComputer\\n \\nScience\\n \\n(4.45/5.0),\\n \\nIle-Ife,\\n \\nNigeria\\n \\nObafemi\\n \\nAwolowo\\n \\nUniversity.\\n \\nApr\\n \\n2014\\n \\n-\\n \\nMar\\n \\n2020\\n \\n●\\n \\nAwards\\n:\\n \\nGraduated\\n \\nas\\n \\nthe\\n \\ntop\\n \\nstudent\\n \\nin\\n \\nthe\\n \\nclass\\n \\nwith\\n \\nan\\n \\n89%\\n \\naverage;\\n \\nBeneficiary\\n \\nof\\n \\nMTN\\n \\n2017/2018\\n \\nScholarship\\n \\naward.\\n \\n \\nExtracurricular\\n \\nActivities\\n \\nWriteups\\n \\nWriteups\\n \\nare\\n \\navailable\\n \\non\\n \\nMedium:\\n \\n@drebakare\\n.\\n \\nRecent\\n \\narticles\\n \\nare:\\n \\n●\\n \\nEnabling\\n \\nBackground\\n \\nRecording\\n \\non\\n \\nAndroid\\n \\nwith\\n \\nExpo:\\n \\nThe\\n \\nMissing\\n \\nPiece.\\n \\n●\\n \\n“Building\\n \\na\\n \\nrecording\\n \\napp\\n \\nwith\\n \\nexpo-av:\\n \\nThe\\n \\nmissing\\n \\npart”.\\n \\n●\\n \\nHow\\n \\nTo\\n \\nWrite\\n \\nReusable\\n \\nReact\\n \\nComponents.\\n \\n \\nTalks\\n:\\n \\n \\n●\\n \\nA\\n \\nkeynote\\n \\nspeaker\\n \\nat\\n \\n“Design\\n \\nMeets\\n \\nTech\\n \\n2024”;\\n \\n \\n●\\n \\nSpeaker\\n \\nat\\n \\nUNICAF\\n \\n(2023)\\n \\nseminar\\n \\non\\n \\n'The\\n \\nRole\\n \\nand\\n \\nImpact\\n \\nof\\n \\nAI\\n \\non\\n \\nthe\\n \\nJob\\n \\nMarket'.\\n \\n\\nAs Damilare Bakare's personal assistant, you must be polite, professional and engaging.\\n\\nYou need to answer the questions based on the summary and the CV.\\n\\nYou have the ability to use record_user_details tool to record the details of the user that is interested in getting in touch. and also record_unknown_question tool to record the unknown question asked by the user.\\n\\nMake sure to nudge the user to the direction of dropping their details to get in touch with Damilare Bakare.\\n\\n\"}, {'role': 'user', 'metadata': None, 'content': 'Hi', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': \"Hello! How can I assist you today? If you have any questions about Damilare Bakare or if you'd like to get in touch, feel free to ask!\", 'options': None}, {'role': 'user', 'content': 'I want to stay in touch'}]\n",
2752
+ "stop\n",
2753
+ "isAccepted=True reason=\"The assistant's response is relevant, professional, and engaging, and it directly addresses the user's request to stay in touch by requesting the necessary contact information.\"\n",
2754
+ "Accepted\n",
2755
+ "[{'role': 'system', 'content': \"\\nYou are a helpful assistant that can answer questions about Damilare Bakare.\\n\\nYou are given a summary of Damilare Bakare and Damilare Bakare's CV. you need to answer questions about Damilare Bakare.\\n\\nThe summary is:\\nMy name is Damilare Bakare a Software Engineer, with skills in technologies like ReactJs, React Native, NextJs, Javascript, and Typescript. My efforts in this field reflects the commitment to excellence and innovation in creating user-centric digital solutions.\\n\\nBeyond the realm of technology, my passion for photography allows him to capture the world's beauty with the same precision and creativity I apply to engineering projects. Each photograph is an opportunity to tell a story, much like how I transform complex web concepts into intuitive and engaging designs.\\n\\nThe CV is:\\n \\n \\nDamilar e\\n \\nBakar e\\n \\nAddress:\\n \\nLondon,\\n \\nUnited\\n \\nKingdom\\n \\nMobile:\\n \\n+447721635453\\n \\n|\\n \\nEmail:\\n \\nemmanueldmlr@gmail.com\\n \\n|\\n \\nLinkedin:\\n \\n/Bakare\\n \\nDamilare\\n \\nProfessional\\n \\nSummar y\\n \\n●\\n \\nMobile\\n \\ndeveloper\\n \\nwith\\n \\na\\n \\nmaster's\\n \\ndegree\\n \\nin\\n \\nadvanced\\n \\ncomputer\\n \\nscience\\n \\nand\\n \\n3+\\n \\nyears\\n \\nof\\n \\nexperience\\n \\nbuilding\\n \\nscalable/enterprise\\n \\nmobile\\n \\napplications\\n \\nusing\\n \\nReact\\n \\nNative,\\n \\nExpo,\\n \\nand\\n \\nTypescript.\\n \\n●\\n \\nSpearheaded\\n \\nthe\\n \\ndevelopment\\n \\nof\\n \\nRekapAI\\n \\nfrom\\n \\nthe\\n \\nground\\n \\nup\\n \\nwith\\n \\nover\\n \\n5k\\n \\ndownloads,\\n \\nand\\n \\na\\n \\n4.90\\n \\nrating\\n \\non\\n \\nboth\\n \\nApple\\n \\nand\\n \\nPlaystore\\n \\n \\nTechnical\\n \\nSkills\\n \\nTechnologies\\n:\\n \\nTypescript,\\n \\nJavascript,\\n \\nNodeJs.\\n \\nExpo,\\n \\nGraphql,\\n \\nGit,\\n \\nFirebase,\\n \\nReact\\n \\nNative,\\n \\nReactJs,\\n \\nAWS.\\n \\nUI\\n \\nLibraries:\\n \\nGluestack\\n \\nUI,\\n \\nNative\\n \\nBase,\\n \\nTamagui.\\n \\nTesting\\n \\n&\\n \\nTools:\\n \\nJest,\\n \\nDetox,\\n \\nXCode,\\n \\nAndroid\\n \\nStudio,\\n \\nGit,\\n \\nNotion,\\n \\nVsCode.\\n \\nOthers\\n:\\n \\nRESTful\\n \\nAPIs,\\n \\nContinuous\\n \\nIntegration\\n \\nand\\n \\nDeployment\\n \\n(CI\\n \\n&\\n \\nCD),\\n \\nAppcenter\\n \\nCodepush.\\n \\n \\nWork\\n \\nExperience\\n \\nMobile\\n \\nEngineer\\n \\n-\\n \\nReact\\n \\nNative,\\n \\nExpo\\n \\n|\\n \\nMosaiQ\\n \\nLabs,\\n \\nUnited\\n \\nKingdom\\n \\n \\n \\n \\n \\nSept\\n \\n2022\\n \\n-\\n \\nPresent\\n \\n●\\n \\nImplemented\\n \\nOver-the-air\\n \\n(OTA)\\n \\nupdate\\n \\nusing\\n \\nExpo\\n \\nApplication\\n \\nServices\\n \\n(EAS)\\n \\nUpdate,\\n \\nenabling\\n \\nthe\\n \\nseamless\\n \\ndelivery\\n \\nof\\n \\napp\\n \\nupdates\\n \\ndirectly\\n \\nto\\n \\nusers’\\n \\ndevices\\n \\n(iOS\\n \\nand\\n \\nAndroid).\\n \\nThis\\n \\ndrastically\\n \\nreduced\\n \\nthe\\n \\nupdate\\n \\ndeployment\\n \\nand\\n \\nbug\\n \\nfixes\\n \\ncycle\\n \\nby\\n \\n80%.\\n \\n●\\n \\nIntegrated\\n \\nSentry\\n \\ninto\\n \\nthe\\n \\nmobile\\n \\napp\\n \\nfor\\n \\nreal-time\\n \\nerror\\n \\ntracking\\n \\nand\\n \\nperformance\\n \\nanalytics;\\n \\nidentified\\n \\nand\\n \\nresolved\\n \\nbugs,\\n \\nenhancing\\n \\napp\\n \\nreliability\\n \\nand\\n \\nuser\\n \\nsatisfaction\\n \\nby\\n \\n20%.\\n \\n●\\n \\nIntegrated\\n \\nSpeechmatics\\n \\nAPI\\n \\nfor\\n \\nadvanced\\n \\naudio\\n \\nanalysis,\\n \\ncreating\\n \\ndetailed\\n \\ntranscripts\\n \\nand\\n \\nsummaries;\\n \\nproviding\\n \\nactionable\\n \\ninsights,\\n \\nand\\n \\nreducing\\n \\ntime\\n \\nspent\\n \\non\\n \\nmanual\\n \\nnote-taking\\n \\nby\\n \\n90%.\\n \\n●\\n \\nEstablished\\n \\nan\\n \\nefficient\\n \\nCI/CD\\n \\npipeline\\n \\nwith\\n \\nGitHub\\n \\nActions\\n \\nand\\n \\nAppCenter\\n \\nCodePush,\\n \\naccelerating\\n \\nrelease\\n \\ncycles\\n \\nby\\n \\n35%\\n \\nand\\n \\nenhancing\\n \\ndeployment\\n \\nreliability,\\n \\nleading\\n \\nto\\n \\na\\n \\n41%\\n \\nincrease\\n \\nin\\n \\nuser\\n \\nsatisfaction.\\n \\n●\\n \\nDeveloped\\n \\nand\\n \\nintegrated\\n \\nan\\n \\nin-app\\n \\npayment\\n \\nsystem\\n \\nfor\\n \\nboth\\n \\niOS\\n \\nand\\n \\nAndroid\\n \\nplatforms\\n \\nusing\\n \\nthe\\n \\nExpo\\n \\nStripe\\n \\nSDK,\\n \\nenabling\\n \\nseamless\\n \\nuser\\n \\nsubscription\\n \\nmanagement\\n \\nand\\n \\nhandling\\n \\ntransactions\\n \\ntotaling\\n \\n$150k+\\n \\nto\\n \\ndate.\\n \\n●\\n \\nResponsible\\n \\nfor\\n \\ndesigning\\n \\nand\\n \\nimplementing\\n \\nintricate\\n \\nand\\n \\nefficient\\n \\napp\\n \\narchitectures\\n \\nusing\\n \\nReact\\n \\nNative,\\n \\nTypescript,\\n \\nand\\n \\nJest,\\n \\nimproving\\n \\nperformance\\n \\nefficiency\\n \\nby\\n \\n30%\\n \\nand\\n \\nreducing\\n \\ncode\\n \\ncomplexity\\n \\nby\\n \\n43%.\\n \\n●\\n \\nManaged\\n \\nand\\n \\nmentored\\n \\na\\n \\nteam\\n \\nof\\n \\n5\\n \\ndevelopers\\n \\nin\\n \\ncreating\\n \\nscalable\\n \\nmobile\\n \\napplications,\\n \\nresulting\\n \\nin\\n \\na\\n \\n30%\\n \\nincrease\\n \\nin\\n \\napplication\\n \\nperformance\\n \\nand\\n \\na\\n \\n20%\\n \\nreduction\\n \\nin\\n \\nbug\\n \\nrates.\\n \\n \\nMobile\\n \\nDeveloper\\n \\n-\\n \\nReact\\n \\nNative,\\n \\nExpo\\n \\n|\\n \\nGSP,\\n \\nInc,\\n \\nUnited\\n \\nStates\\n \\n(Remote)\\n \\n \\n \\n \\nSept\\n \\n2021\\n \\n-\\n \\nAug\\n \\n2022\\n \\n●\\n \\nSpearheaded\\n \\nthe\\n \\nimplementation\\n \\nof\\n \\na\\n \\nvoice-based\\n \\nassessments\\n \\nfeature\\n \\nin\\n \\nthe\\n \\nsuperpower\\n \\nmobile\\n \\nApp\\n \\nusing\\n \\nReactNative,\\n \\nElevenLabs,\\n \\nand\\n \\nDeepGram\\n \\nAPIs,\\n \\nenhancing\\n \\nuser\\n \\ninteraction\\n \\nfor\\n \\nover\\n \\n1000\\n \\nusers.\\n \\n●\\n \\nCreated\\n \\na\\n \\npush\\n \\nnotification\\n \\nsystem\\n \\nfor\\n \\nusers'\\n \\ndeck\\n \\nrevision\\n \\nusing\\n \\nFirebase\\n \\nand\\n \\nexpo\\n \\nnotification,\\n \\nincreasing\\n \\nuser\\n \\nengagement\\n \\nby\\n \\n60%.\\n \\n●\\n \\nCoordinated\\n \\nwith\\n \\nUX/UI\\n \\ndesigners\\n \\nto\\n \\nimplement\\n \\nuser-centric\\n \\ndesigns,\\n \\nleading\\n \\nto\\n \\na\\n \\n40%\\n \\nboost\\n \\nin\\n \\nuser\\n \\nretention\\n \\nrates.\\n \\n \\nEducation\\n \\nMaster\\n \\nof\\n \\nScience,\\n \\nAdvanced\\n \\nComputer\\n \\nScience\\n \\n(Distinction),\\n \\nHull,\\n \\nUnited\\n \\nKingdom\\n \\nUniversity\\n \\nof\\n \\nHull.\\n \\nSept\\n \\n2023\\n \\n●\\n \\nAwards\\n:\\n \\nBest\\n \\ngraduating\\n \\nmaster’s\\n \\nstudent\\n \\nin\\n \\nadvanced\\n \\ncomputer\\n \\nscience;\\n \\nBritish\\n \\nComputer\\n \\nSociety\\n \\n(BCS)\\n \\nfor\\n \\nthe\\n \\nbest\\n \\nperformance\\n \\nin\\n \\nthe\\n \\nMaster’s\\n \\nprogram.\\n \\n \\nBachelor\\n \\nof\\n \\nScience\\n \\n(Honours),\\n \\nComputer\\n \\nScience\\n \\n(4.45/5.0),\\n \\nIle-Ife,\\n \\nNigeria\\n \\nObafemi\\n \\nAwolowo\\n \\nUniversity.\\n \\nApr\\n \\n2014\\n \\n-\\n \\nMar\\n \\n2020\\n \\n●\\n \\nAwards\\n:\\n \\nGraduated\\n \\nas\\n \\nthe\\n \\ntop\\n \\nstudent\\n \\nin\\n \\nthe\\n \\nclass\\n \\nwith\\n \\nan\\n \\n89%\\n \\naverage;\\n \\nBeneficiary\\n \\nof\\n \\nMTN\\n \\n2017/2018\\n \\nScholarship\\n \\naward.\\n \\n \\nExtracurricular\\n \\nActivities\\n \\nWriteups\\n \\nWriteups\\n \\nare\\n \\navailable\\n \\non\\n \\nMedium:\\n \\n@drebakare\\n.\\n \\nRecent\\n \\narticles\\n \\nare:\\n \\n●\\n \\nEnabling\\n \\nBackground\\n \\nRecording\\n \\non\\n \\nAndroid\\n \\nwith\\n \\nExpo:\\n \\nThe\\n \\nMissing\\n \\nPiece.\\n \\n●\\n \\n“Building\\n \\na\\n \\nrecording\\n \\napp\\n \\nwith\\n \\nexpo-av:\\n \\nThe\\n \\nmissing\\n \\npart”.\\n \\n●\\n \\nHow\\n \\nTo\\n \\nWrite\\n \\nReusable\\n \\nReact\\n \\nComponents.\\n \\n \\nTalks\\n:\\n \\n \\n●\\n \\nA\\n \\nkeynote\\n \\nspeaker\\n \\nat\\n \\n“Design\\n \\nMeets\\n \\nTech\\n \\n2024”;\\n \\n \\n●\\n \\nSpeaker\\n \\nat\\n \\nUNICAF\\n \\n(2023)\\n \\nseminar\\n \\non\\n \\n'The\\n \\nRole\\n \\nand\\n \\nImpact\\n \\nof\\n \\nAI\\n \\non\\n \\nthe\\n \\nJob\\n \\nMarket'.\\n \\n\\nAs Damilare Bakare's personal assistant, you must be polite, professional and engaging.\\n\\nYou need to answer the questions based on the summary and the CV.\\n\\nYou have the ability to use record_user_details tool to record the details of the user that is interested in getting in touch. and also record_unknown_question tool to record the unknown question asked by the user.\\n\\nMake sure to nudge the user to the direction of dropping their details to get in touch with Damilare Bakare.\\n\\n\"}, {'role': 'user', 'metadata': None, 'content': 'Hi', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': \"Hello! How can I assist you today? If you have any questions about Damilare Bakare or if you'd like to get in touch, feel free to ask!\", 'options': None}, {'role': 'user', 'metadata': None, 'content': 'I want to stay in touch', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': \"That's great to hear! Could you please provide me with your name and email address? I can help record your details to facilitate getting in touch with Damilare Bakare.\", 'options': None}, {'role': 'user', 'content': 'My name is Dami and email is bakaredmlr@gmail.com'}]\n",
2756
+ "tool_calls\n",
2757
+ "Tool Called: record_user_details with args: {'email': 'bakaredmlr@gmail.com', 'name': 'Dami'}\n",
2758
+ "User Dami with email bakaredmlr@gmail.com has been recorded with note Not set\n",
2759
+ "[{'role': 'system', 'content': \"\\nYou are a helpful assistant that can answer questions about Damilare Bakare.\\n\\nYou are given a summary of Damilare Bakare and Damilare Bakare's CV. you need to answer questions about Damilare Bakare.\\n\\nThe summary is:\\nMy name is Damilare Bakare a Software Engineer, with skills in technologies like ReactJs, React Native, NextJs, Javascript, and Typescript. My efforts in this field reflects the commitment to excellence and innovation in creating user-centric digital solutions.\\n\\nBeyond the realm of technology, my passion for photography allows him to capture the world's beauty with the same precision and creativity I apply to engineering projects. Each photograph is an opportunity to tell a story, much like how I transform complex web concepts into intuitive and engaging designs.\\n\\nThe CV is:\\n \\n \\nDamilar e\\n \\nBakar e\\n \\nAddress:\\n \\nLondon,\\n \\nUnited\\n \\nKingdom\\n \\nMobile:\\n \\n+447721635453\\n \\n|\\n \\nEmail:\\n \\nemmanueldmlr@gmail.com\\n \\n|\\n \\nLinkedin:\\n \\n/Bakare\\n \\nDamilare\\n \\nProfessional\\n \\nSummar y\\n \\n●\\n \\nMobile\\n \\ndeveloper\\n \\nwith\\n \\na\\n \\nmaster's\\n \\ndegree\\n \\nin\\n \\nadvanced\\n \\ncomputer\\n \\nscience\\n \\nand\\n \\n3+\\n \\nyears\\n \\nof\\n \\nexperience\\n \\nbuilding\\n \\nscalable/enterprise\\n \\nmobile\\n \\napplications\\n \\nusing\\n \\nReact\\n \\nNative,\\n \\nExpo,\\n \\nand\\n \\nTypescript.\\n \\n●\\n \\nSpearheaded\\n \\nthe\\n \\ndevelopment\\n \\nof\\n \\nRekapAI\\n \\nfrom\\n \\nthe\\n \\nground\\n \\nup\\n \\nwith\\n \\nover\\n \\n5k\\n \\ndownloads,\\n \\nand\\n \\na\\n \\n4.90\\n \\nrating\\n \\non\\n \\nboth\\n \\nApple\\n \\nand\\n \\nPlaystore\\n \\n \\nTechnical\\n \\nSkills\\n \\nTechnologies\\n:\\n \\nTypescript,\\n \\nJavascript,\\n \\nNodeJs.\\n \\nExpo,\\n \\nGraphql,\\n \\nGit,\\n \\nFirebase,\\n \\nReact\\n \\nNative,\\n \\nReactJs,\\n \\nAWS.\\n \\nUI\\n \\nLibraries:\\n \\nGluestack\\n \\nUI,\\n \\nNative\\n \\nBase,\\n \\nTamagui.\\n \\nTesting\\n \\n&\\n \\nTools:\\n \\nJest,\\n \\nDetox,\\n \\nXCode,\\n \\nAndroid\\n \\nStudio,\\n \\nGit,\\n \\nNotion,\\n \\nVsCode.\\n \\nOthers\\n:\\n \\nRESTful\\n \\nAPIs,\\n \\nContinuous\\n \\nIntegration\\n \\nand\\n \\nDeployment\\n \\n(CI\\n \\n&\\n \\nCD),\\n \\nAppcenter\\n \\nCodepush.\\n \\n \\nWork\\n \\nExperience\\n \\nMobile\\n \\nEngineer\\n \\n-\\n \\nReact\\n \\nNative,\\n \\nExpo\\n \\n|\\n \\nMosaiQ\\n \\nLabs,\\n \\nUnited\\n \\nKingdom\\n \\n \\n \\n \\n \\nSept\\n \\n2022\\n \\n-\\n \\nPresent\\n \\n●\\n \\nImplemented\\n \\nOver-the-air\\n \\n(OTA)\\n \\nupdate\\n \\nusing\\n \\nExpo\\n \\nApplication\\n \\nServices\\n \\n(EAS)\\n \\nUpdate,\\n \\nenabling\\n \\nthe\\n \\nseamless\\n \\ndelivery\\n \\nof\\n \\napp\\n \\nupdates\\n \\ndirectly\\n \\nto\\n \\nusers’\\n \\ndevices\\n \\n(iOS\\n \\nand\\n \\nAndroid).\\n \\nThis\\n \\ndrastically\\n \\nreduced\\n \\nthe\\n \\nupdate\\n \\ndeployment\\n \\nand\\n \\nbug\\n \\nfixes\\n \\ncycle\\n \\nby\\n \\n80%.\\n \\n●\\n \\nIntegrated\\n \\nSentry\\n \\ninto\\n \\nthe\\n \\nmobile\\n \\napp\\n \\nfor\\n \\nreal-time\\n \\nerror\\n \\ntracking\\n \\nand\\n \\nperformance\\n \\nanalytics;\\n \\nidentified\\n \\nand\\n \\nresolved\\n \\nbugs,\\n \\nenhancing\\n \\napp\\n \\nreliability\\n \\nand\\n \\nuser\\n \\nsatisfaction\\n \\nby\\n \\n20%.\\n \\n●\\n \\nIntegrated\\n \\nSpeechmatics\\n \\nAPI\\n \\nfor\\n \\nadvanced\\n \\naudio\\n \\nanalysis,\\n \\ncreating\\n \\ndetailed\\n \\ntranscripts\\n \\nand\\n \\nsummaries;\\n \\nproviding\\n \\nactionable\\n \\ninsights,\\n \\nand\\n \\nreducing\\n \\ntime\\n \\nspent\\n \\non\\n \\nmanual\\n \\nnote-taking\\n \\nby\\n \\n90%.\\n \\n●\\n \\nEstablished\\n \\nan\\n \\nefficient\\n \\nCI/CD\\n \\npipeline\\n \\nwith\\n \\nGitHub\\n \\nActions\\n \\nand\\n \\nAppCenter\\n \\nCodePush,\\n \\naccelerating\\n \\nrelease\\n \\ncycles\\n \\nby\\n \\n35%\\n \\nand\\n \\nenhancing\\n \\ndeployment\\n \\nreliability,\\n \\nleading\\n \\nto\\n \\na\\n \\n41%\\n \\nincrease\\n \\nin\\n \\nuser\\n \\nsatisfaction.\\n \\n●\\n \\nDeveloped\\n \\nand\\n \\nintegrated\\n \\nan\\n \\nin-app\\n \\npayment\\n \\nsystem\\n \\nfor\\n \\nboth\\n \\niOS\\n \\nand\\n \\nAndroid\\n \\nplatforms\\n \\nusing\\n \\nthe\\n \\nExpo\\n \\nStripe\\n \\nSDK,\\n \\nenabling\\n \\nseamless\\n \\nuser\\n \\nsubscription\\n \\nmanagement\\n \\nand\\n \\nhandling\\n \\ntransactions\\n \\ntotaling\\n \\n$150k+\\n \\nto\\n \\ndate.\\n \\n●\\n \\nResponsible\\n \\nfor\\n \\ndesigning\\n \\nand\\n \\nimplementing\\n \\nintricate\\n \\nand\\n \\nefficient\\n \\napp\\n \\narchitectures\\n \\nusing\\n \\nReact\\n \\nNative,\\n \\nTypescript,\\n \\nand\\n \\nJest,\\n \\nimproving\\n \\nperformance\\n \\nefficiency\\n \\nby\\n \\n30%\\n \\nand\\n \\nreducing\\n \\ncode\\n \\ncomplexity\\n \\nby\\n \\n43%.\\n \\n●\\n \\nManaged\\n \\nand\\n \\nmentored\\n \\na\\n \\nteam\\n \\nof\\n \\n5\\n \\ndevelopers\\n \\nin\\n \\ncreating\\n \\nscalable\\n \\nmobile\\n \\napplications,\\n \\nresulting\\n \\nin\\n \\na\\n \\n30%\\n \\nincrease\\n \\nin\\n \\napplication\\n \\nperformance\\n \\nand\\n \\na\\n \\n20%\\n \\nreduction\\n \\nin\\n \\nbug\\n \\nrates.\\n \\n \\nMobile\\n \\nDeveloper\\n \\n-\\n \\nReact\\n \\nNative,\\n \\nExpo\\n \\n|\\n \\nGSP,\\n \\nInc,\\n \\nUnited\\n \\nStates\\n \\n(Remote)\\n \\n \\n \\n \\nSept\\n \\n2021\\n \\n-\\n \\nAug\\n \\n2022\\n \\n●\\n \\nSpearheaded\\n \\nthe\\n \\nimplementation\\n \\nof\\n \\na\\n \\nvoice-based\\n \\nassessments\\n \\nfeature\\n \\nin\\n \\nthe\\n \\nsuperpower\\n \\nmobile\\n \\nApp\\n \\nusing\\n \\nReactNative,\\n \\nElevenLabs,\\n \\nand\\n \\nDeepGram\\n \\nAPIs,\\n \\nenhancing\\n \\nuser\\n \\ninteraction\\n \\nfor\\n \\nover\\n \\n1000\\n \\nusers.\\n \\n●\\n \\nCreated\\n \\na\\n \\npush\\n \\nnotification\\n \\nsystem\\n \\nfor\\n \\nusers'\\n \\ndeck\\n \\nrevision\\n \\nusing\\n \\nFirebase\\n \\nand\\n \\nexpo\\n \\nnotification,\\n \\nincreasing\\n \\nuser\\n \\nengagement\\n \\nby\\n \\n60%.\\n \\n●\\n \\nCoordinated\\n \\nwith\\n \\nUX/UI\\n \\ndesigners\\n \\nto\\n \\nimplement\\n \\nuser-centric\\n \\ndesigns,\\n \\nleading\\n \\nto\\n \\na\\n \\n40%\\n \\nboost\\n \\nin\\n \\nuser\\n \\nretention\\n \\nrates.\\n \\n \\nEducation\\n \\nMaster\\n \\nof\\n \\nScience,\\n \\nAdvanced\\n \\nComputer\\n \\nScience\\n \\n(Distinction),\\n \\nHull,\\n \\nUnited\\n \\nKingdom\\n \\nUniversity\\n \\nof\\n \\nHull.\\n \\nSept\\n \\n2023\\n \\n●\\n \\nAwards\\n:\\n \\nBest\\n \\ngraduating\\n \\nmaster’s\\n \\nstudent\\n \\nin\\n \\nadvanced\\n \\ncomputer\\n \\nscience;\\n \\nBritish\\n \\nComputer\\n \\nSociety\\n \\n(BCS)\\n \\nfor\\n \\nthe\\n \\nbest\\n \\nperformance\\n \\nin\\n \\nthe\\n \\nMaster’s\\n \\nprogram.\\n \\n \\nBachelor\\n \\nof\\n \\nScience\\n \\n(Honours),\\n \\nComputer\\n \\nScience\\n \\n(4.45/5.0),\\n \\nIle-Ife,\\n \\nNigeria\\n \\nObafemi\\n \\nAwolowo\\n \\nUniversity.\\n \\nApr\\n \\n2014\\n \\n-\\n \\nMar\\n \\n2020\\n \\n●\\n \\nAwards\\n:\\n \\nGraduated\\n \\nas\\n \\nthe\\n \\ntop\\n \\nstudent\\n \\nin\\n \\nthe\\n \\nclass\\n \\nwith\\n \\nan\\n \\n89%\\n \\naverage;\\n \\nBeneficiary\\n \\nof\\n \\nMTN\\n \\n2017/2018\\n \\nScholarship\\n \\naward.\\n \\n \\nExtracurricular\\n \\nActivities\\n \\nWriteups\\n \\nWriteups\\n \\nare\\n \\navailable\\n \\non\\n \\nMedium:\\n \\n@drebakare\\n.\\n \\nRecent\\n \\narticles\\n \\nare:\\n \\n●\\n \\nEnabling\\n \\nBackground\\n \\nRecording\\n \\non\\n \\nAndroid\\n \\nwith\\n \\nExpo:\\n \\nThe\\n \\nMissing\\n \\nPiece.\\n \\n●\\n \\n“Building\\n \\na\\n \\nrecording\\n \\napp\\n \\nwith\\n \\nexpo-av:\\n \\nThe\\n \\nmissing\\n \\npart”.\\n \\n●\\n \\nHow\\n \\nTo\\n \\nWrite\\n \\nReusable\\n \\nReact\\n \\nComponents.\\n \\n \\nTalks\\n:\\n \\n \\n●\\n \\nA\\n \\nkeynote\\n \\nspeaker\\n \\nat\\n \\n“Design\\n \\nMeets\\n \\nTech\\n \\n2024”;\\n \\n \\n●\\n \\nSpeaker\\n \\nat\\n \\nUNICAF\\n \\n(2023)\\n \\nseminar\\n \\non\\n \\n'The\\n \\nRole\\n \\nand\\n \\nImpact\\n \\nof\\n \\nAI\\n \\non\\n \\nthe\\n \\nJob\\n \\nMarket'.\\n \\n\\nAs Damilare Bakare's personal assistant, you must be polite, professional and engaging.\\n\\nYou need to answer the questions based on the summary and the CV.\\n\\nYou have the ability to use record_user_details tool to record the details of the user that is interested in getting in touch. and also record_unknown_question tool to record the unknown question asked by the user.\\n\\nMake sure to nudge the user to the direction of dropping their details to get in touch with Damilare Bakare.\\n\\n\"}, {'role': 'user', 'metadata': None, 'content': 'Hi', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': \"Hello! How can I assist you today? If you have any questions about Damilare Bakare or if you'd like to get in touch, feel free to ask!\", 'options': None}, {'role': 'user', 'metadata': None, 'content': 'I want to stay in touch', 'options': None}, {'role': 'assistant', 'metadata': None, 'content': \"That's great to hear! Could you please provide me with your name and email address? I can help record your details to facilitate getting in touch with Damilare Bakare.\", 'options': None}, {'role': 'user', 'content': 'My name is Dami and email is bakaredmlr@gmail.com'}, ChatCompletionMessage(content=None, refusal=None, role='assistant', annotations=[], audio=None, function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_P9F28fxVuBgoSlsORq2jUFqI', function=Function(arguments='{\"email\":\"bakaredmlr@gmail.com\",\"name\":\"Dami\"}', name='record_user_details'), type='function')]), 'status']\n"
2760
+ ]
2761
+ },
2762
+ {
2763
+ "name": "stderr",
2764
+ "output_type": "stream",
2765
+ "text": [
2766
+ "Traceback (most recent call last):\n",
2767
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/gradio/queueing.py\", line 626, in process_events\n",
2768
+ " response = await route_utils.call_process_api(\n",
2769
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
2770
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/gradio/route_utils.py\", line 350, in call_process_api\n",
2771
+ " output = await app.get_blocks().process_api(\n",
2772
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
2773
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/gradio/blocks.py\", line 2240, in process_api\n",
2774
+ " result = await self.call_function(\n",
2775
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^\n",
2776
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/gradio/blocks.py\", line 1745, in call_function\n",
2777
+ " prediction = await fn(*processed_input)\n",
2778
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
2779
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/gradio/utils.py\", line 884, in async_wrapper\n",
2780
+ " response = await f(*args, **kwargs)\n",
2781
+ " ^^^^^^^^^^^^^^^^^^^^^^^^\n",
2782
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/gradio/chat_interface.py\", line 551, in __wrapper\n",
2783
+ " return await submit_fn(*args, **kwargs)\n",
2784
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
2785
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/gradio/chat_interface.py\", line 925, in _submit_fn\n",
2786
+ " response = await anyio.to_thread.run_sync(\n",
2787
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
2788
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/anyio/to_thread.py\", line 56, in run_sync\n",
2789
+ " return await get_async_backend().run_sync_in_worker_thread(\n",
2790
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
2791
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py\", line 2470, in run_sync_in_worker_thread\n",
2792
+ " return await future\n",
2793
+ " ^^^^^^^^^^^^\n",
2794
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py\", line 967, in run\n",
2795
+ " result = context.run(func, *args)\n",
2796
+ " ^^^^^^^^^^^^^^^^^^^^^^^^\n",
2797
+ " File \"/var/folders/qd/qr1xpmrn5970fh5cb_6g7chw0000gn/T/ipykernel_66057/3648619708.py\", line 14, in chat\n",
2798
+ " response = openai_client.chat.completions.create(\n",
2799
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
2800
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/openai/_utils/_utils.py\", line 287, in wrapper\n",
2801
+ " return func(*args, **kwargs)\n",
2802
+ " ^^^^^^^^^^^^^^^^^^^^^\n",
2803
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/openai/resources/chat/completions/completions.py\", line 1131, in create\n",
2804
+ " return self._post(\n",
2805
+ " ^^^^^^^^^^^\n",
2806
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/openai/_base_client.py\", line 1256, in post\n",
2807
+ " return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))\n",
2808
+ " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
2809
+ " File \"/Applications/projects/ai-agent/ai-solver/.venv/lib/python3.12/site-packages/openai/_base_client.py\", line 1044, in request\n",
2810
+ " raise self._make_status_error_from_response(err.response) from None\n",
2811
+ "openai.BadRequestError: Error code: 400 - {'error': {'message': \"Invalid type for 'messages[7]': expected an object, but got a string instead.\", 'type': 'invalid_request_error', 'param': 'messages[7]', 'code': 'invalid_type'}}\n"
2812
+ ]
2813
+ }
2814
+ ],
2815
+ "source": [
2816
+ "gr.ChatInterface(chat, type=\"messages\").launch()"
2817
+ ]
2818
+ }
2819
+ ],
2820
+ "metadata": {
2821
+ "kernelspec": {
2822
+ "display_name": ".venv",
2823
+ "language": "python",
2824
+ "name": "python3"
2825
+ },
2826
+ "language_info": {
2827
+ "codemirror_mode": {
2828
+ "name": "ipython",
2829
+ "version": 3
2830
+ },
2831
+ "file_extension": ".py",
2832
+ "mimetype": "text/x-python",
2833
+ "name": "python",
2834
+ "nbconvert_exporter": "python",
2835
+ "pygments_lexer": "ipython3",
2836
+ "version": "3.12.7"
2837
+ }
2838
+ },
2839
+ "nbformat": 4,
2840
+ "nbformat_minor": 5
2841
+ }
ai-assistant.py ADDED
@@ -0,0 +1,241 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from dotenv import load_dotenv
3
+ from openai import OpenAI
4
+ import json
5
+ from PyPDF2 import PdfReader
6
+ import gradio as gr
7
+ from pydantic import BaseModel
8
+ import requests
9
+
10
+
11
+ load_dotenv(override=True)
12
+
13
+ sendgrid_client = os.getenv("SENDGRID_API_KEY")
14
+ sendgrid_user = os.getenv("PUSHOVER_USER")
15
+ sendgrid_token = os.getenv("PUSHOVER_TOKEN")
16
+
17
+ def Pushover(message):
18
+ return requests.post(
19
+ "https://api.pushover.net/1/messages.json",
20
+ data={
21
+ "token": sendgrid_token,
22
+ "user": sendgrid_user,
23
+ "message": message,
24
+ },
25
+ )
26
+
27
+ def record_user_details(email, name="Not set", note="Not set"):
28
+ Pushover(f"User {name} with email {email} has been recorded with note {note}")
29
+ print(f"User {name} with email {email} has been recorded with note {note}")
30
+ return {"status": "success"}
31
+
32
+ def record_unknown_question(question):
33
+ Pushover(f"Unknown question: {question}")
34
+ print(f"Unknown question: {question}")
35
+ return {"status": "success"}
36
+
37
+ record_unknown_question_tool_structure = {
38
+ "name": "record_unknown_question",
39
+ "description": "Use this tool to record an unknown question asked by the user",
40
+ "parameters": {
41
+ "type": "object",
42
+ "properties": {
43
+ "question": {
44
+ "type": "string",
45
+ "description": "The question to record"
46
+ }
47
+ },
48
+ "required": ["question"]
49
+ }
50
+ }
51
+
52
+ record_user_details_tool_structure = {
53
+ "name": "record_user_details",
54
+ "description": "Use this tool to record the details of the user that is interested in getting in touch",
55
+ "parameters": {
56
+ "type": "object",
57
+ "properties": {
58
+ "email": {
59
+ "type": "string",
60
+ "description": "The email of the user"
61
+ },
62
+ "name": {
63
+ "type": "string",
64
+ "description": "The name of the user"
65
+ },
66
+ "note": {
67
+ "type": "string",
68
+ "description": "The note of the user"
69
+ }
70
+ },
71
+ "required": ["email"],
72
+ "additionalProperties": False
73
+ }
74
+ }
75
+
76
+ tools = [{"type": "function", "function": record_user_details_tool_structure}, {"type": "function", "function": record_unknown_question_tool_structure}]
77
+
78
+ class Chat(BaseModel):
79
+ isAccepted: bool
80
+ reason: str
81
+
82
+
83
+ class Me:
84
+ def __init__(self):
85
+ reader = PdfReader("cv.pdf")
86
+ self.openai_client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
87
+ self.gemini_client = OpenAI(api_key=os.getenv("GOOGLE_API_KEY"), base_url="https://generativelanguage.googleapis.com/v1beta/openai")
88
+
89
+ self.name = "Damilare Bakare"
90
+ self.summary = ""
91
+ self.cv = ""
92
+
93
+ for page in reader.pages:
94
+ self.cv += page.extract_text()
95
+ with open("summary.txt", "r") as file:
96
+ self.summary = file.read()
97
+
98
+ def get_system_prompt(self) -> str:
99
+ return f"""
100
+ You are a helpful assistant that can answer questions about {self.name}.
101
+
102
+ You are given a summary of {self.name} and {self.name}'s CV. you need to answer questions about {self.name}.
103
+
104
+ The summary is:
105
+ {self.summary}
106
+
107
+ The CV is:
108
+ {self.cv}
109
+
110
+ As {self.name}'s personal assistant, you must be polite, professional and engaging.
111
+
112
+ You need to answer the questions based on the summary and the CV.
113
+
114
+ You have the ability to use record_user_details tool to record the details of the user that is interested in getting in touch. and also record_unknown_question tool to record the unknown question asked by the user.
115
+
116
+ Make sure to nudge the user to the direction of dropping their details to get in touch with {self.name}.
117
+
118
+ """
119
+
120
+ def evaluate(self, history, question, response)->Chat:
121
+
122
+ evaluator_prompt = f"""
123
+ You are a response evaluator. Your task is to evaluate the response of another assistant to a chat about {self.name}.
124
+ You are to ensure that the response is relevant to the chat, not of the context, professional and engaging.
125
+ Given the {self.name}'s summary to be {self.summary} and the {self.name}'s CV to be {self.cv}, chat history to be {history} and the question to be {question}, you need to evaluate the assistant's repoonse {response} to be sure that it is relevant to the chat, not of the context, professional and engaging.
126
+ """
127
+
128
+ evaluator_message = [{
129
+ "role": "user",
130
+ "content": evaluator_prompt
131
+ }]
132
+
133
+ evaluator_response = self.gemini_client.beta.chat.completions.parse(
134
+ model="gemini-2.0-flash",
135
+ messages=evaluator_message,
136
+ response_format=Chat
137
+ )
138
+
139
+ return evaluator_response.choices[0].message.parsed
140
+
141
+ def reRun(self, feedback, history, question)->str:
142
+ rerun_prompt = f"""
143
+ You are a response rerunner. Your task is to rerun the response of another assistant to a chat about {self.name}.
144
+ You are to ensure that the response is relevant to the chat, not of the context, professional and engaging.
145
+ Given the {self.name}'s summary to be {self.summary} and the {self.name}'s CV to be {self.cv}, chat history to be {history} and the question to be {question},
146
+ You need to generate another response based on the feedback {feedback} to be sure that it is relevant to the chat, not of the context, professional and engaging.
147
+ """
148
+
149
+ rerun_message = [{
150
+ "role": "system",
151
+ "content": rerun_prompt
152
+ }] + history + [
153
+ {
154
+ "role": "user",
155
+ "content": question
156
+ }
157
+ ]
158
+
159
+ rerun_response = self.openai_client.chat.completions.create(
160
+ model="gpt-4o-mini",
161
+ messages=rerun_message
162
+ )
163
+
164
+ return rerun_response.choices[0].message.content
165
+
166
+ def handle_tool_call(self, tool_calls):
167
+ results = []
168
+
169
+ for tool_call in tool_calls:
170
+ tool_name = tool_call.function.name
171
+ tool_args = json.loads(tool_call.function.arguments)
172
+
173
+ print(f"Tool Called: {tool_name} with args: {tool_args}")
174
+ tool = globals()[tool_name]
175
+ tool_result = tool(**tool_args) if tool else {}
176
+ results.append({
177
+ "role": "tool",
178
+ "content": json.dumps(tool_result),
179
+ "tool_call_id": tool_call.id
180
+ })
181
+
182
+ # Return the list of tool result messages for inclusion in the next model call
183
+ return results
184
+
185
+ def chat(self, message, history):
186
+ # Build message list once and keep appending
187
+ messages = [
188
+ {"role": "system", "content": self.get_system_prompt()}
189
+ ] + history + [
190
+ {"role": "user", "content": message}
191
+ ]
192
+
193
+ max_tool_loops = 5
194
+ loops = 0
195
+
196
+ while True:
197
+ print(messages)
198
+ response = self.openai_client.chat.completions.create(
199
+ model="gpt-4o-mini",
200
+ messages=messages,
201
+ tools=tools,
202
+ )
203
+
204
+ choice = response.choices[0]
205
+ finish_reason = choice.finish_reason
206
+ print(finish_reason)
207
+
208
+ assistant_message = choice.message
209
+
210
+ # If the model requests tools, append the assistant's tool_calls and the tool results, then loop
211
+ if finish_reason == "tool_calls" and assistant_message.tool_calls:
212
+ loops += 1
213
+ if loops > max_tool_loops:
214
+ return "Sorry, I ran into a tool loop. Please try again."
215
+
216
+ # Add assistant message with tool_calls
217
+ messages.append(assistant_message)
218
+
219
+ # Execute tools and add their outputs as tool messages
220
+ tool_messages = self.handle_tool_call(assistant_message.tool_calls)
221
+ messages.extend(tool_messages)
222
+ continue
223
+
224
+ # Otherwise, we have a normal assistant response
225
+ break
226
+
227
+ unevaluated_response = assistant_message.content or ""
228
+
229
+ evaluator_result = self.evaluate(history, message, unevaluated_response)
230
+ print(evaluator_result)
231
+ if evaluator_result.isAccepted:
232
+ print("Accepted")
233
+ return unevaluated_response
234
+ else:
235
+ print("Re-running")
236
+ return self.reRun(evaluator_result.reason, history, message)
237
+
238
+
239
+ if __name__ == "__main__":
240
+ me = Me()
241
+ gr.ChatInterface(me.chat, title="Damilare Bakare's Assistant", type="messages").launch()
cv.pdf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b8f2bb2f2ee790fa21d6f82b21d5083094eb9767b7a9a280aa2e823326842b61
3
+ size 134875
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ openai>=1.30.0
2
+ python-dotenv>=1.0.1
3
+ gradio>=4.36.0
4
+ PyPDF2>=3.0.0
5
+ pydantic>=2.6.0
6
+ requests>=2.31.0
7
+ ruff>=0.12.7
summary.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ My name is Damilare Bakare a Software Engineer, with skills in technologies like ReactJs, React Native, NextJs, Javascript, and Typescript. My efforts in this field reflects the commitment to excellence and innovation in creating user-centric digital solutions.
2
+
3
+ Beyond the realm of technology, my passion for photography allows him to capture the world's beauty with the same precision and creativity I apply to engineering projects. Each photograph is an opportunity to tell a story, much like how I transform complex web concepts into intuitive and engaging designs.