GhostDragon01 commited on
Commit
da3a984
·
1 Parent(s): 96e481c

refactor: Update application agents to use InferenceClientModel and enhance README for clarity and detail

Browse files
.gitignore CHANGED
@@ -4,6 +4,14 @@ gcp-oauth.keys.json
4
  # Gradio cache
5
  .gradio/
6
 
 
 
 
 
 
 
 
 
7
  # Byte-compiled / optimized / DLL files
8
  __pycache__/
9
  *.py[cod]
 
4
  # Gradio cache
5
  .gradio/
6
 
7
+ # Binary files in data directory
8
+ data/*.png
9
+ data/*.jpg
10
+ data/*.jpeg
11
+ data/*.gif
12
+ data/*.bmp
13
+ data/*.tiff
14
+
15
  # Byte-compiled / optimized / DLL files
16
  __pycache__/
17
  *.py[cod]
README.md CHANGED
@@ -36,19 +36,19 @@ Built for the **Agents & MCP Hackathon 2025 — Track 3: Agentic Demo Showcase**
36
  | Newsletter overload every morning | One-click OAuth fetch, auto-tagging & summarisation |
37
  | Thousand-tab bookmark graveyard | AI categorisation & semantic search |
38
  | Context-switching between inbox, browser, search | Single chat interface powered by agents |
39
- | Opaque AI answers | Real-time thought process trace & clickable citations |
40
 
41
  ---
42
 
43
  ## 🚀 Live Demo — 30-Second Flow
44
 
45
- 1. **Open the Space** and switch to **Tab 1 — Connect**.
46
- 2. Click **“Connect Gmail”**, grant read-only access, then hit **“Ingest”**.
47
- 3. Jump to **Tab 2 Analytics** to see tag clouds and sender stats.
48
- 4. Ask questions in **Tab 3 — Ask ReMind** e.g. “Summarise recent Anthropic updates.
49
- 5. Watch the agents think, then follow the citations back to the original email or bookmark.
50
 
51
- [▶︎ **4-min video demo**](https://youtu.be/xxxxxxxx)
52
 
53
  ---
54
 
@@ -57,21 +57,21 @@ Built for the **Agents & MCP Hackathon 2025 — Track 3: Agentic Demo Showcase**
57
  ```
58
  ReMind/
59
  ├─ config/ # default prompts, yaml configs
60
- ├─ data/ # sample inbox & bookmark JSON (redacted)
61
  ├─ src/ # package root (importable as `remind`)
62
- │ ├─ agents/ # Manager, Gmail, Bookmark, RAG, etc.
63
- │ ├─ interfaces/ # Gradio Blocks & helper UI widgets
64
  │ ├─ tools/ # Gmail API wrapper, bookmark parser, utils
65
  │ ├─ __init__.py
66
  │ └─ main.py # entrypoint when imported as a module
67
- ├─ app.py # HF Spaces entrypoint (imports src.main)
68
  ├─ .env.example # copy → .env and fill in secrets
69
  ├─ requirements.txt # runtime deps
70
  ├─ pyproject.toml # tooling & formatting
71
  └─ README.md # you are here
72
  ```
73
 
74
- The **root‐level `app.py`** is the single entrypoint required by Hugging Face Spaces. It bootstraps the Gradio UI by calling `remind.interfaces.build()` inside `src/`.
75
 
76
  ---
77
 
@@ -93,45 +93,54 @@ $ python app.py # opens http://localhost:7860
93
 
94
  | Key | Description |
95
  | ---------------------------------------------- | -------------------------------------------------------- |
96
- | `HF_TOKEN` | Hugging Face token for optional Inference API calls |
97
- | `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET` | OAuth credentials from Google Cloud Console |
98
- | `GOOGLE_REFRESH_TOKEN` / `GOOGLE_ACCESS_TOKEN` | Generated by `python scripts/setup_gmail_credentials.py` |
99
 
100
- > **Tip — Gmail setup**: Run `python scripts/setup_gmail_credentials.py` (included in `src/tools`) once. It opens a browser window, you sign in, and it prints the refresh & access tokens for `.env`.
101
 
102
  ---
103
 
104
  ## 🛠️ Key Components
105
 
 
 
 
106
  * **Multi-Agent Orchestrator** — built with *SmolagentS*; assigns Gmail parsing, bookmarking, and RAG tasks to specialists.
107
- * **LLM Stack** — OpenAI GPT-4o for reasoning, ADA-002 for embeddings (pluggable).
108
- * **Vector Store** — in-memory FAISS during hackathon (MongoDB Atlas planned).
109
- * **Gradio 5 UI** — three-tab layout + real-time agent thoughts” accordion.
110
 
111
  ---
112
 
113
  ## 🎯 Core Features (MVP)
114
 
115
- 1. **Gmail Ingestion (read-only)**
116
- Detect newsletters via `List-Unsubscribe` header
117
- Parse HTML Markdown clean text
118
- 2. **Bookmark Brain**
119
- Import `Bookmarks.json`
120
- Zero-shot topic tagging
121
- 3. **Natural-Language Q\&A**
122
- RAG over combined email+bookmark corpus
123
- Inline citations
124
- 4. **Analytics Dashboard**
125
- Tag cloud, sender histogram, engagement insights
 
 
 
 
 
126
 
127
  ---
128
 
129
  ## 🛣️ Roadmap (Post-Hackathon)
130
 
131
- * Gmail push notifications for near real-time ingest
132
- * Atlas Vector Search backend
133
- * Shared team workspaces
134
- * Mobile PWA wrapper
 
135
 
136
  Contribute ideas → [Discussions](https://huggingface.co/spaces/Agents-MCP-Hackathon/ReMind/discussions).
137
 
@@ -144,7 +153,7 @@ PRs welcome! During hack-week we operate on a **fast-merge** basis.
144
  * README with live demo & video ✔️
145
  * HF Space public & reproducible ✔️
146
 
147
- If ReMind sparks joy, **⭐️ the repo & Like the Space** — community engagement counts!
148
 
149
  ---
150
 
@@ -156,7 +165,7 @@ If ReMind sparks joy, **⭐️ the repo & “Like” the Space** — community e
156
  | Omar Issa | [@omarissa24](https://github.com/omarissa24) | Contributor |
157
  | Ziad Mazzawi | [@zmazz](https://github.com/zmazz) | Contributor |
158
 
159
- Thanks to **Modal Labs**, **Hugging Face**, **OpenAI**, **MistralAI**, and **Anthropic** for credits that power this demo.
160
 
161
  ---
162
 
 
36
  | Newsletter overload every morning | One-click OAuth fetch, auto-tagging & summarisation |
37
  | Thousand-tab bookmark graveyard | AI categorisation & semantic search |
38
  | Context-switching between inbox, browser, search | Single chat interface powered by agents |
39
+ | Opaque AI answers | Real-time "thought process" trace & clickable citations |
40
 
41
  ---
42
 
43
  ## 🚀 Live Demo — 30-Second Flow
44
 
45
+ 1. **Open the Space** and start with the **"ℹ️ About"** tab to understand the system architecture.
46
+ 2. Switch to **"💬 Chat Assistant"** tab to interact with the multi-agent system.
47
+ 3. Ask questions like "Search my AI bookmarks" or "Show me my latest emails from news@alphasignal.ai".
48
+ 4. Check the **"🏷️ Categories Dashboard"** to see your bookmarks organized by AI categories.
49
+ 5. Watch the agents think in real-time and explore your organized digital knowledge.
50
 
51
+ [▶︎ **Live Demo Space**](https://huggingface.co/spaces/Agents-MCP-Hackathon/ReMind)
52
 
53
  ---
54
 
 
57
  ```
58
  ReMind/
59
  ├─ config/ # default prompts, yaml configs
60
+ ├─ data/ # AI bookmarks cache & diagram
61
  ├─ src/ # package root (importable as `remind`)
62
+ │ ├─ agents/ # Manager, Gmail, Bookmark, Categorizer, Web Search
63
+ │ ├─ interfaces/ # Gradio interface with 3 tabs
64
  │ ├─ tools/ # Gmail API wrapper, bookmark parser, utils
65
  │ ├─ __init__.py
66
  │ └─ main.py # entrypoint when imported as a module
67
+ ├─ app.py # HF Spaces entrypoint
68
  ├─ .env.example # copy → .env and fill in secrets
69
  ├─ requirements.txt # runtime deps
70
  ├─ pyproject.toml # tooling & formatting
71
  └─ README.md # you are here
72
  ```
73
 
74
+ The **root‐level `app.py`** is the single entrypoint required by Hugging Face Spaces. It loads the Gradio interface from `src/interfaces/gradio_interface.py`.
75
 
76
  ---
77
 
 
93
 
94
  | Key | Description |
95
  | ---------------------------------------------- | -------------------------------------------------------- |
96
+ | `HF_TOKEN` | Hugging Face token for Qwen3-32B model access |
97
+ | `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET` | OAuth credentials from Google Cloud Console |
98
+ | `GOOGLE_REFRESH_TOKEN` / `GOOGLE_ACCESS_TOKEN` | Generated by Gmail OAuth setup for trusted email access |
99
 
100
+ > **Tip — Gmail setup**: Configure Google Cloud Console OAuth for Gmail API access. Email reading is restricted to `news@alphasignal.ai` for security.
101
 
102
  ---
103
 
104
  ## 🛠️ Key Components
105
 
106
+ ![ReMind AI System Architecture](data/ai_diagram.png)
107
+ *System architecture showing the multi-agent orchestration and data flow in ReMind*
108
+
109
  * **Multi-Agent Orchestrator** — built with *SmolagentS*; assigns Gmail parsing, bookmarking, and RAG tasks to specialists.
110
+ * **LLM Stack** — Qwen3-32B for reasoning and natural language understanding
111
+ * **Vector Store** — in-memory JSON caching for fast bookmark and email access
112
+ * **Gradio 5 UI** — three-tab layout: About, Chat Assistant, and Categories Dashboard with real-time agent "thoughts".
113
 
114
  ---
115
 
116
  ## 🎯 Core Features (MVP)
117
 
118
+ 1. **Chrome Bookmark Management**
119
+ Import and cache AI resources from Chrome bookmarks
120
+ Intelligent categorization into 10 AI-focused categories
121
+ Search and filter by domain, keywords, and categories
122
+ 2. **Gmail Integration (read-only)**
123
+ Secure access to trusted AI newsletter sources
124
+ Search and browse recent emails with intelligent filtering
125
+ Email content reading with natural language queries
126
+ 3. **Natural-Language Q&A**
127
+ Multi-agent system for complex query handling
128
+ Real-time web search integration for current information
129
+ • Transparent agent reasoning with step-by-step thinking display
130
+ 4. **Categories Dashboard**
131
+ • Visual organization of AI bookmarks by category
132
+ • Statistics and insights about your AI knowledge base
133
+ • Easy browsing and discovery of forgotten resources
134
 
135
  ---
136
 
137
  ## 🛣️ Roadmap (Post-Hackathon)
138
 
139
+ * Enhanced bookmark import from multiple browsers
140
+ * Advanced categorization with machine learning
141
+ * Email notification integration for real-time updates
142
+ * Shared knowledge bases for teams and communities
143
+ * Mobile-optimized interface for on-the-go access
144
 
145
  Contribute ideas → [Discussions](https://huggingface.co/spaces/Agents-MCP-Hackathon/ReMind/discussions).
146
 
 
153
  * README with live demo & video ✔️
154
  * HF Space public & reproducible ✔️
155
 
156
+ If ReMind sparks joy, **⭐️ the repo & "Like" the Space** — community engagement counts!
157
 
158
  ---
159
 
 
165
  | Omar Issa | [@omarissa24](https://github.com/omarissa24) | Contributor |
166
  | Ziad Mazzawi | [@zmazz](https://github.com/zmazz) | Contributor |
167
 
168
+ Thanks to **Modal Labs**, **Hugging Face**, **Nebius**, **Anthropic**, **OpenAI**, **Hyperbolic Labs**, **MistralAI**, and **Sambanova.AI** for providing credits that power this demo.
169
 
170
  ---
171
 
app.py CHANGED
@@ -8,10 +8,8 @@ import os
8
  import sys
9
  from dotenv import load_dotenv
10
 
11
- # Load environment variables
12
  load_dotenv()
13
 
14
- # Add debug information for deployment
15
  print(f"Python version: {sys.version}")
16
 
17
 
@@ -19,12 +17,10 @@ def main():
19
  """Main application entry point for Hugging Face Spaces"""
20
  print("🚀 Starting ReMind Digital Assistant...")
21
 
22
- # Check for required environment variables
23
  hf_token = os.getenv("HF_TOKEN")
24
  if not hf_token:
25
  print("⚠️ Warning: HF_TOKEN not found. Some features may be limited.")
26
 
27
- # Check for Gmail OAuth credentials
28
  google_client_id = os.getenv("GOOGLE_CLIENT_ID")
29
  google_client_secret = os.getenv("GOOGLE_CLIENT_SECRET")
30
  google_refresh_token = os.getenv("GOOGLE_REFRESH_TOKEN")
@@ -37,20 +33,17 @@ def main():
37
  print("✅ Gmail OAuth credentials configured.")
38
 
39
  try:
40
- # Import the Gradio interface
41
  from src.interfaces.gradio_interface import demo
42
 
43
  print("✅ ReMind Digital Assistant ready!")
44
  print("🤔 Real-time AI thinking display enabled")
45
  print("📧 Email • 🌐 Web Search • 🔖 Bookmarks")
46
 
47
- # Return the demo for Hugging Face Spaces
48
  return demo
49
 
50
  except ImportError as e:
51
  print(f"❌ Import error: {e}")
52
  print("Please ensure all dependencies are installed.")
53
- # Print more detailed error info for debugging
54
  import traceback
55
 
56
  traceback.print_exc()
@@ -58,19 +51,16 @@ def main():
58
 
59
  except Exception as e:
60
  print(f"❌ Error starting ReMind: {e}")
61
- # Print more detailed error info for debugging
62
  import traceback
63
 
64
  traceback.print_exc()
65
  raise
66
 
67
 
68
- # For Hugging Face Spaces
69
  if __name__ == "__main__":
70
  try:
71
  demo = main()
72
- # Simple launch configuration for maximum compatibility
73
- demo.launch()
74
  except Exception as e:
75
  print(f"❌ Critical error during launch: {e}")
76
  import traceback
@@ -78,5 +68,4 @@ if __name__ == "__main__":
78
  traceback.print_exc()
79
  sys.exit(1)
80
  else:
81
- # When imported, return the demo
82
  demo = main()
 
8
  import sys
9
  from dotenv import load_dotenv
10
 
 
11
  load_dotenv()
12
 
 
13
  print(f"Python version: {sys.version}")
14
 
15
 
 
17
  """Main application entry point for Hugging Face Spaces"""
18
  print("🚀 Starting ReMind Digital Assistant...")
19
 
 
20
  hf_token = os.getenv("HF_TOKEN")
21
  if not hf_token:
22
  print("⚠️ Warning: HF_TOKEN not found. Some features may be limited.")
23
 
 
24
  google_client_id = os.getenv("GOOGLE_CLIENT_ID")
25
  google_client_secret = os.getenv("GOOGLE_CLIENT_SECRET")
26
  google_refresh_token = os.getenv("GOOGLE_REFRESH_TOKEN")
 
33
  print("✅ Gmail OAuth credentials configured.")
34
 
35
  try:
 
36
  from src.interfaces.gradio_interface import demo
37
 
38
  print("✅ ReMind Digital Assistant ready!")
39
  print("🤔 Real-time AI thinking display enabled")
40
  print("📧 Email • 🌐 Web Search • 🔖 Bookmarks")
41
 
 
42
  return demo
43
 
44
  except ImportError as e:
45
  print(f"❌ Import error: {e}")
46
  print("Please ensure all dependencies are installed.")
 
47
  import traceback
48
 
49
  traceback.print_exc()
 
51
 
52
  except Exception as e:
53
  print(f"❌ Error starting ReMind: {e}")
 
54
  import traceback
55
 
56
  traceback.print_exc()
57
  raise
58
 
59
 
 
60
  if __name__ == "__main__":
61
  try:
62
  demo = main()
63
+ demo.queue(default_concurrency_limit=20).launch(ssr_mode=False)
 
64
  except Exception as e:
65
  print(f"❌ Critical error during launch: {e}")
66
  import traceback
 
68
  traceback.print_exc()
69
  sys.exit(1)
70
  else:
 
71
  demo = main()
data/ai_bookmarks_cache.json CHANGED
@@ -1,417 +1,265 @@
1
  {
2
  "bookmarks": [
3
  {
4
- "title": "Google Paul Picard",
5
- "url": "https://docs.google.com/spreadsheets/d/e/2PACX-1vT0Id93M-6TDpgqtxHj0aZiq7_ukmwBcLHz9Iyzp-zUZaEqpeROBwiIVKgZ7QXS9e1-GgfngY3waieu/pubhtml?gid=292409471&single=true",
6
- "date_added": "13328224891850904",
7
  "date_modified": "",
8
- "id": "32",
9
  "category": "model_releases",
10
  "category_name": "Model Releases & Updates"
11
  },
12
  {
13
- "title": "lm-sys/FastChat: An open platform for training, serving, and evaluating large languages. Release repo for Vicuna and FastChat-T5.",
14
- "url": "https://github.com/lm-sys/FastChat",
15
- "date_added": "13327875742920347",
16
  "date_modified": "",
17
- "id": "33",
18
- "category": "tools_frameworks",
19
- "category_name": "Tools, Frameworks & Platforms"
20
- },
21
- {
22
- "title": "ai_tools",
23
- "url": "https://lmsys.org/blog/2023-03-30-vicuna/",
24
- "date_added": "13327875714212791",
25
- "date_modified": "",
26
- "id": "34",
27
- "category": "uncategorized",
28
- "category_name": "Uncategorized"
29
- },
30
- {
31
- "title": "Classement des images  |  TensorFlow Core",
32
- "url": "https://www.tensorflow.org/tutorials/images/classification?hl=fr",
33
- "date_added": "13326233575357207",
34
- "date_modified": "",
35
- "id": "35",
36
- "category": "community_events",
37
- "category_name": "Community, Events & Education"
38
- },
39
- {
40
- "title": "Google I/O 2023",
41
- "url": "https://io.google/2023/intl/fr/",
42
- "date_added": "13328225028518287",
43
- "date_modified": "",
44
- "id": "36",
45
- "category": "model_releases",
46
- "category_name": "Model Releases & Updates"
47
- },
48
- {
49
- "title": "Streamlit • A faster way to build and share data apps",
50
- "url": "https://streamlit.io/",
51
- "date_added": "13330650437583985",
52
- "date_modified": "",
53
- "id": "37",
54
- "category": "uncategorized",
55
- "category_name": "Uncategorized"
56
- },
57
- {
58
- "title": "AI Demos - Discover Latest AI Tools with Video Demos",
59
- "url": "https://www.aidemos.com/",
60
- "date_added": "13330824848974471",
61
- "date_modified": "",
62
- "id": "38",
63
- "category": "benchmarks_leaderboards",
64
- "category_name": "Benchmarks & Leaderboards"
65
- },
66
- {
67
- "title": "PrivateGPT - Running \"ChatGPT\" offline on local documents - DEV Community",
68
- "url": "https://dev.to/codepo8/privategpt-running-chatgpt-offline-on-local-documents-5b17",
69
- "date_added": "13330859800928018",
70
- "date_modified": "",
71
- "id": "39",
72
- "category": "model_releases",
73
- "category_name": "Model Releases & Updates"
74
  },
75
  {
76
- "title": "imartinez/privateGPT: Interact privately with your documents using the power of GPT, 100% privately, no data leaks",
77
- "url": "https://github.com/imartinez/privateGPT",
78
- "date_added": "13330859943995663",
79
  "date_modified": "",
80
- "id": "40",
81
  "category": "model_releases",
82
  "category_name": "Model Releases & Updates"
83
  },
84
  {
85
- "title": "🚀 Introducing ✨ Bose Framework - The Swiss Army Knife for Bot Developers 🤖 - DEV Community",
86
- "url": "https://dev.to/chetanam/introducing-bose-framework-the-swiss-army-knife-for-bot-developers-10k9",
87
- "date_added": "13330859999083707",
88
  "date_modified": "",
89
- "id": "41",
90
  "category": "tools_frameworks",
91
- "category_name": "Tools, Frameworks & Platforms"
 
 
92
  },
93
  {
94
- "title": "Making LLMs lighter with AutoGPTQ and transformers",
95
- "url": "https://huggingface.co/blog/gptq-integration",
96
- "date_added": "13337978791318677",
97
  "date_modified": "",
98
- "id": "42",
99
- "category": "model_releases",
100
- "category_name": "Model Releases & Updates"
 
 
101
  },
102
  {
103
- "title": "AutoGPTQ-transformers.ipynb - Colaboratory",
104
- "url": "https://colab.research.google.com/drive/1_TIrmuKOFhuRRiTWN94iLKUFu6ZX4ceb?usp=sharing",
105
- "date_added": "13337978800270019",
106
  "date_modified": "",
107
- "id": "43",
108
  "category": "model_releases",
109
  "category_name": "Model Releases & Updates"
110
  },
111
  {
112
- "title": "📛 Awesome Badges - DEV Community",
113
- "url": "https://dev.to/envoy_/150-badges-for-github-pnk",
114
- "date_added": "13338039236944519",
115
- "date_modified": "",
116
- "id": "44",
117
- "category": "community_events",
118
- "category_name": "Community, Events & Education"
119
- },
120
- {
121
- "title": "GitHub Profile Readme Generator | GitHub Profile Readme Generator",
122
- "url": "https://rahuldkjain.github.io/gh-profile-readme-generator/",
123
- "date_added": "13338039247239177",
124
- "date_modified": "",
125
- "id": "45",
126
- "category": "uncategorized",
127
- "category_name": "Uncategorized"
128
- },
129
- {
130
- "title": "Celian Raimbault",
131
- "url": "https://portfolio.celian.dev/",
132
- "date_added": "13338117115620269",
133
- "date_modified": "",
134
- "id": "46",
135
- "category": "uncategorized",
136
- "category_name": "Uncategorized"
137
- },
138
- {
139
- "title": "DataPen | Free online resources for data scientist and analyst",
140
- "url": "https://www.datapen.io/",
141
- "date_added": "13338557687104615",
142
- "date_modified": "",
143
- "id": "47",
144
- "category": "market_trends",
145
- "category_name": "Market Trends & Analysis"
146
- },
147
- {
148
- "title": "Jour 0: Cours",
149
- "url": "https://cours.cocadmin.com/view/courses/formation-aws-gratuite/2130055-jour-0-iam-et-cli/6712605-jour-0-cours",
150
- "date_added": "13338557712719184",
151
  "date_modified": "",
152
- "id": "48",
153
  "category": "tools_frameworks",
154
- "category_name": "Tools, Frameworks & Platforms"
155
- },
156
- {
157
- "title": "Free Online PDF Tools - TinyWow",
158
- "url": "https://tinywow.com/tools/pdf",
159
- "date_added": "13338931697845265",
160
- "date_modified": "",
161
- "id": "49",
162
- "category": "uncategorized",
163
- "category_name": "Uncategorized"
164
- },
165
- {
166
- "title": "Top 45 Machine Learning Interview Questions (2023) | Simplilearn",
167
- "url": "https://www.simplilearn.com/tutorials/machine-learning-tutorial/machine-learning-interview-questions",
168
- "date_added": "13338981165101756",
169
- "date_modified": "",
170
- "id": "50",
171
- "category": "community_events",
172
- "category_name": "Community, Events & Education"
173
- },
174
- {
175
- "title": "20 Must-Know Topics In Deep Learning For Beginners | Medium",
176
- "url": "https://medium.com/@aspershupadhyay/mastering-deep-learning-20-key-concepts-explained-ea405aa6603d",
177
- "date_added": "13344077670993478",
178
- "date_modified": "",
179
- "id": "51",
180
- "category": "community_events",
181
- "category_name": "Community, Events & Education"
182
  },
183
  {
184
- "title": "notebook6a50ab3981 | Kaggle",
185
- "url": "https://www.kaggle.com/code/habibadoum/notebook6a50ab3981/edit",
186
- "date_added": "13345048952028071",
187
  "date_modified": "",
188
- "id": "52",
189
- "category": "uncategorized",
190
- "category_name": "Uncategorized"
 
 
191
  },
192
  {
193
- "title": "Open LLM Leaderboard - a Hugging Face Space by HuggingFaceH4",
194
- "url": "https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard",
195
- "date_added": "13346410937933676",
196
  "date_modified": "",
197
- "id": "53",
198
- "category": "model_releases",
199
- "category_name": "Model Releases & Updates"
 
 
200
  },
201
  {
202
- "title": "How to fine-tune Google Gemma with ChatML and Hugging Face TRL",
203
- "url": "https://www.philschmid.de/fine-tune-google-gemma",
204
- "date_added": "13355266820152491",
205
  "date_modified": "",
206
- "id": "54",
207
  "category": "model_releases",
208
  "category_name": "Model Releases & Updates"
209
  },
210
  {
211
- "title": "Parsio | Extract Data From Emails and Documents",
212
- "url": "https://parsio.io/",
213
- "date_added": "13360067789467033",
214
  "date_modified": "",
215
- "id": "55",
216
- "category": "uncategorized",
217
- "category_name": "Uncategorized"
218
  },
219
  {
220
- "title": "How to export pptx to image (png, jpeg) in Python? - Stack Overflow",
221
- "url": "https://stackoverflow.com/questions/61815883/how-to-export-pptx-to-image-png-jpeg-in-python",
222
- "date_added": "13361144199629412",
223
  "date_modified": "",
224
- "id": "56",
225
- "category": "uncategorized",
226
- "category_name": "Uncategorized"
227
  },
228
  {
229
- "title": "I2VEdit: First-Frame-Guided Video Editing via Image-to-Video Diffusion Models",
230
- "url": "https://i2vedit.github.io/index.html",
231
- "date_added": "13361459321806042",
232
  "date_modified": "",
233
- "id": "57",
234
  "category": "model_releases",
235
  "category_name": "Model Releases & Updates"
236
  },
237
  {
238
- "title": "MT4 Traders rating",
239
- "url": "https://my.roboforex.com/en/copyfx/providers/show/326561/?pg=4&grid_token=pamm_providers_trades_closed#pamm_providers_trades_closed",
240
- "date_added": "13361912358287325",
241
- "date_modified": "",
242
- "id": "58",
243
- "category": "uncategorized",
244
- "category_name": "Uncategorized"
245
- },
246
- {
247
- "title": "APiCS Online - Survey chapter: Sango",
248
- "url": "https://apics-online.info/surveys/59",
249
- "date_added": "13362494909928555",
250
- "date_modified": "",
251
- "id": "59",
252
- "category": "tools_frameworks",
253
- "category_name": "Tools, Frameworks & Platforms"
254
- },
255
- {
256
- "title": "OLAC resources in and about the Sango language",
257
- "url": "http://www.language-archives.org/language/sag",
258
- "date_added": "13362494915646492",
259
- "date_modified": "",
260
- "id": "60",
261
- "category": "uncategorized",
262
- "category_name": "Uncategorized"
263
- },
264
- {
265
- "title": "Language Data | SIL International",
266
- "url": "https://www.sil.org/linguistics/language-data",
267
- "date_added": "13362494955881924",
268
  "date_modified": "",
269
- "id": "61",
270
- "category": "uncategorized",
271
- "category_name": "Uncategorized"
272
  },
273
  {
274
- "title": "27 Best Free Human Annotated Datasets for Machine Learning",
275
- "url": "https://www.iguazio.com/blog/best-free-human-annotated-datasets-for-ml/",
276
- "date_added": "13362570265375490",
277
  "date_modified": "",
278
- "id": "62",
279
- "category": "benchmarks_leaderboards",
280
- "category_name": "Benchmarks & Leaderboards"
281
  },
282
  {
283
- "title": "RLHFlow/ArmoRM-Llama3-8B-v0.1 · Hugging Face",
284
- "url": "https://huggingface.co/RLHFlow/ArmoRM-Llama3-8B-v0.1",
285
- "date_added": "13362665423352229",
286
  "date_modified": "",
287
- "id": "63",
288
- "category": "model_releases",
289
- "category_name": "Model Releases & Updates"
290
  },
291
  {
292
- "title": "OpenAI Platform",
293
- "url": "https://platform.openai.com/tokenizer",
294
- "date_added": "13363193528079875",
295
  "date_modified": "",
296
- "id": "64",
297
- "category": "model_releases",
298
- "category_name": "Model Releases & Updates"
299
  },
300
  {
301
- "title": "#397 - Yann Le Cun - Chief AI Scientist chez Meta - L'Intelligence Artificielle Générale ne viend... - YouTube",
302
- "url": "https://www.youtube.com/watch?v=8CNgaLOdfzU&list=PLWT7hkKacBMKEQlMyOMt6qSzKHTGguP9I&index=14&ab_channel=MatthieuStefani",
303
- "date_added": "13363990777765160",
304
  "date_modified": "",
305
- "id": "65",
306
- "category": "model_releases",
307
- "category_name": "Model Releases & Updates"
308
  },
309
  {
310
- "title": "willccbb/mlx_parallm: Fast parallel LLM inference for MLX",
311
- "url": "https://github.com/willccbb/mlx_parallm",
312
- "date_added": "13364301917826829",
313
  "date_modified": "",
314
- "id": "66",
315
- "category": "model_releases",
316
- "category_name": "Model Releases & Updates"
317
  },
318
  {
319
- "title": "ParaLLM: 1600+ tok/s on a MacBook - William Brown",
320
- "url": "https://willcb.com/blog/parallm/",
321
- "date_added": "13364301928658934",
322
  "date_modified": "",
323
- "id": "67",
324
- "category": "model_releases",
325
- "category_name": "Model Releases & Updates"
326
  },
327
  {
328
- "title": "Learn RAG with Langchain 🦜⛓️‍💥 Ragatouille",
329
- "url": "https://www.sakunaharinda.xyz/ragatouille-book/intro.html",
330
- "date_added": "13364432382297750",
331
  "date_modified": "",
332
- "id": "68",
333
- "category": "uncategorized",
334
- "category_name": "Uncategorized"
335
  },
336
  {
337
- "title": "Read the newest State of AI report | Retool Blog | Cache",
338
- "url": "https://retool.com/blog/reports/state-of-ai-h1-2024?utm_source=alphasignal&utm_medium=newsletter&utm_campaign=as_main_ad",
339
- "date_added": "13364457119344625",
340
  "date_modified": "",
341
- "id": "69",
342
- "category": "market_trends",
343
- "category_name": "Market Trends & Analysis"
344
  },
345
  {
346
- "title": "proj-persona/PersonaHub · Datasets at Hugging Face",
347
- "url": "https://huggingface.co/datasets/proj-persona/PersonaHub",
348
- "date_added": "13364457150691623",
349
  "date_modified": "",
350
- "id": "70",
351
  "category": "benchmarks_leaderboards",
352
  "category_name": "Benchmarks & Leaderboards"
353
  },
354
  {
355
- "title": "Demystifying PDF Parsing 04: OCR-Free Large Multimodal Model-Based Method | by Florian June | Jul, 2024 | AI Advances",
356
- "url": "https://ai.gopubby.com/demystifying-pdf-parsing-04-ocr-free-large-multimodal-model-based-method-0fdab50db048",
357
- "date_added": "13364457177701861",
358
- "date_modified": "",
359
- "id": "71",
360
- "category": "model_releases",
361
- "category_name": "Model Releases & Updates"
362
- },
363
- {
364
- "title": "Single Neuron (easy) - Deep-ML",
365
- "url": "https://www.deep-ml.com/problem/Single%20Neuron",
366
- "date_added": "13373457508348775",
367
- "date_modified": "",
368
- "id": "72",
369
- "category": "uncategorized",
370
- "category_name": "Uncategorized"
371
- },
372
- {
373
- "title": "React Terminal Component",
374
- "url": "https://primereact.org/terminal/",
375
- "date_added": "13381418171099712",
376
  "date_modified": "",
377
- "id": "364",
378
- "category": "uncategorized",
379
- "category_name": "Uncategorized"
380
  },
381
  {
382
- "title": "The 7 best AI image generators in 2025 | Zapier",
383
- "url": "https://zapier.com/blog/best-ai-image-generator/?utm_campaign=yt-gbl-nua-evr-Kevin_Stratvert_121624_Third_Party_Channel-vid&utm_medium=social&utm_source=youtube",
384
- "date_added": "13385992373817306",
385
  "date_modified": "",
386
- "id": "366",
387
- "category": "tools_frameworks",
388
- "category_name": "Tools, Frameworks & Platforms"
389
  },
390
  {
391
- "title": "Satvik Shrivastava",
392
- "url": "https://www.satvikshrivastava.tech/#top",
393
- "date_added": "13393074779680121",
394
  "date_modified": "",
395
- "id": "370",
396
- "category": "uncategorized",
397
- "category_name": "Uncategorized"
398
  }
399
  ],
400
- "last_updated": "2025-06-09T00:16:13.739024",
401
  "folder_name": "AI ressources",
402
- "total_count": 44,
403
- "last_categorized": "2025-06-09T00:19:15.060481",
404
  "categorization_stats": {
405
  "research_breakthroughs": 0,
406
- "model_releases": 15,
407
- "tools_frameworks": 5,
408
- "applications_industry": 0,
409
  "regulation_ethics": 0,
410
- "investment_funding": 0,
411
- "benchmarks_leaderboards": 3,
412
- "community_events": 4,
413
  "security_privacy": 0,
414
- "market_trends": 2,
415
- "uncategorized": 15
416
  }
417
  }
 
1
  {
2
  "bookmarks": [
3
  {
4
+ "title": "Meet the Foundation Models framework - WWDC25 - Videos - Apple Developer",
5
+ "url": "https://developer.apple.com/videos/play/wwdc2025/286/?utm_source=alphasignal",
6
+ "date_added": "13394059459581980",
7
  "date_modified": "",
8
+ "id": "372",
9
  "category": "model_releases",
10
  "category_name": "Model Releases & Updates"
11
  },
12
  {
13
+ "title": "Powering Enterprise Innovation with Voice AI | Speechmatics",
14
+ "url": "https://www.speechmatics.com/enterprise?utm_source=alphasignal",
15
+ "date_added": "13394059486797980",
16
  "date_modified": "",
17
+ "id": "375",
18
+ "category": "applications_industry",
19
+ "category_name": "Applications & Industry Use Cases"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  },
21
  {
22
+ "title": "Connect Your MCP Client to the Hugging Face Hub",
23
+ "url": "https://huggingface.co/changelog/hf-mcp-server?utm_source=alphasignal",
24
+ "date_added": "13394059490698359",
25
  "date_modified": "",
26
+ "id": "376",
27
  "category": "model_releases",
28
  "category_name": "Model Releases & Updates"
29
  },
30
  {
31
+ "title": "Conversational Agents",
32
+ "url": "https://www.sarvam.ai/products/conversational-agents?utm_source=alphasignal",
33
+ "date_added": "13394059497403423",
34
  "date_modified": "",
35
+ "id": "377",
36
  "category": "tools_frameworks",
37
+ "category_name": "Tools, Frameworks & Platforms",
38
+ "manually_categorized": true,
39
+ "recategorized_at": "2025-06-11T00:07:04.495495"
40
  },
41
  {
42
+ "title": "ManusAI on X: \"Today, Manus Integrates Veo3! Manus isn't just where you generate videos — it's where you craft cinematic experiences. Characters speak naturally with synchronized audio, scenes unfold longer to tell complete narratives, and everything feels sharper, richer, more alive than https://t.co/odnDx4qnYP\" / X",
43
+ "url": "https://x.com/ManusAI_HQ/status/1932091372766720454?utm_source=alphasignal",
44
+ "date_added": "13394059515786279",
45
  "date_modified": "",
46
+ "id": "378",
47
+ "category": "tools_frameworks",
48
+ "category_name": "Tools, Frameworks & Platforms",
49
+ "manually_categorized": true,
50
+ "recategorized_at": "2025-06-11T00:07:04.508229"
51
  },
52
  {
53
+ "title": "OpenAI Developers on X: \"Evals now supports tool use. 🛠️ You can now use tools and Structured Outputs when completing eval runs, and evaluate tool calls based on the arguments passed and responses returned. This supports tools that are OpenAI-hosted, MCP, and non-hosted. Read more in our guides below. https://t.co/4ZhWy2via3\" / X",
54
+ "url": "https://x.com/OpenAIDevs/status/1932169029147557924?utm_source=alphasignal",
55
+ "date_added": "13394059519641524",
56
  "date_modified": "",
57
+ "id": "379",
58
  "category": "model_releases",
59
  "category_name": "Model Releases & Updates"
60
  },
61
  {
62
+ "title": "What’s new in Xcode - WWDC25 - Videos - Apple Developer",
63
+ "url": "https://developer.apple.com/videos/play/wwdc2025/247/?utm_source=alphasignal",
64
+ "date_added": "13394059524952396",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  "date_modified": "",
66
+ "id": "380",
67
  "category": "tools_frameworks",
68
+ "category_name": "Tools, Frameworks & Platforms",
69
+ "manually_categorized": true,
70
+ "recategorized_at": "2025-06-11T00:07:04.520691"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  },
72
  {
73
+ "title": "apple/containerization: Containerization is a Swift package for running Linux containers on macOS.",
74
+ "url": "https://github.com/apple/containerization?utm_source=alphasignal",
75
+ "date_added": "13394059528265943",
76
  "date_modified": "",
77
+ "id": "381",
78
+ "category": "tools_frameworks",
79
+ "category_name": "Tools, Frameworks & Platforms",
80
+ "manually_categorized": true,
81
+ "recategorized_at": "2025-06-11T00:07:04.531689"
82
  },
83
  {
84
+ "title": "eyaltoledano/claude-task-master: An AI-powered task-management system you can drop into Cursor, Lovable, Windsurf, Roo, and others.",
85
+ "url": "https://github.com/eyaltoledano/claude-task-master?utm_source=alphasignal",
86
+ "date_added": "13394059531928742",
87
  "date_modified": "",
88
+ "id": "382",
89
+ "category": "tools_frameworks",
90
+ "category_name": "Tools, Frameworks & Platforms",
91
+ "manually_categorized": true,
92
+ "recategorized_at": "2025-06-11T00:07:04.542724"
93
  },
94
  {
95
+ "title": "SkyworkAI/SkyReels-V2: SkyReels-V2: Infinite-length Film Generative model",
96
+ "url": "https://github.com/SkyworkAI/SkyReels-V2?utm_source=alphasignal",
97
+ "date_added": "13394059535234556",
98
  "date_modified": "",
99
+ "id": "383",
100
  "category": "model_releases",
101
  "category_name": "Model Releases & Updates"
102
  },
103
  {
104
+ "title": "Apple introduces AI-powered live translation tools at WWDC 2025",
105
+ "url": "https://www.engadget.com/big-tech/apple-introduces-ai-powered-live-translation-tools-at-wwdc-2025-173605234.html?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=edbf7c220cff05f72b697c9008e4f95e761dedc0",
106
+ "date_added": "13394059551111244",
107
  "date_modified": "",
108
+ "id": "384",
109
+ "category": "applications_industry",
110
+ "category_name": "Applications & Industry Use Cases"
111
  },
112
  {
113
+ "title": "At WWDC 2025, Apple introduces an AI-powered Shortcuts app | TechCrunch",
114
+ "url": "https://techcrunch.com/2025/06/09/at-wwdc-2025-apple-introduces-an-ai-powered-shortcuts-app/?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=e988e4d8e5999088bffbfa21243a712ef600c540",
115
+ "date_added": "13394059555675724",
116
  "date_modified": "",
117
+ "id": "385",
118
+ "category": "applications_industry",
119
+ "category_name": "Applications & Industry Use Cases"
120
  },
121
  {
122
+ "title": "Apple lets developers tap into its offline AI models | TechCrunch",
123
+ "url": "https://techcrunch.com/2025/06/09/apple-lets-developers-tap-into-its-offline-ai-models/?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=102e38e21406624c226873e61e297474dc88f0c4",
124
+ "date_added": "13394059561293093",
125
  "date_modified": "",
126
+ "id": "386",
127
  "category": "model_releases",
128
  "category_name": "Model Releases & Updates"
129
  },
130
  {
131
+ "title": "watchOS 26 delivers more personalized ways to stay active and connected - Apple",
132
+ "url": "https://www.apple.com/newsroom/2025/06/watchos-26-delivers-more-personalized-ways-to-stay-active-and-connected/?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=184978928f9499ec9b73494dad98b040c4ecba42",
133
+ "date_added": "13394059563988409",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  "date_modified": "",
135
+ "id": "387",
136
+ "category": "applications_industry",
137
+ "category_name": "Applications & Industry Use Cases"
138
  },
139
  {
140
+ "title": "👾 A2A vs. MCP: Two Paths to Smarter, More Connected AI Agents",
141
+ "url": "https://www.forwardfuture.ai/p/a2a-vs-mcp-two-paths-to-smarter-more-connected-ai-agents?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=c0b131924f2ec1d7348cc3d85f3c644f71347be4&last_resource_guid=Post%3A7debb1e7-12f9-4dba-978a-ecc39e11e88a",
142
+ "date_added": "13394059566957892",
143
  "date_modified": "",
144
+ "id": "388",
145
+ "category": "applications_industry",
146
+ "category_name": "Applications & Industry Use Cases"
147
  },
148
  {
149
+ "title": "AI agents are turning Salesforce and SAP into rivals",
150
+ "url": "https://www.economist.com/business/2025/06/05/ai-agents-are-turning-salesforce-and-sap-into-rivals?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=b5b66ce12f790085d56ae45ee7744b85f89ad81f",
151
+ "date_added": "13394059569883698",
152
  "date_modified": "",
153
+ "id": "389",
154
+ "category": "applications_industry",
155
+ "category_name": "Applications & Industry Use Cases"
156
  },
157
  {
158
+ "title": "AMD takes aim at Nvidia's AI hardware dominance with Brium acquisition | TechCrunch",
159
+ "url": "https://techcrunch.com/2025/06/04/amd-takes-aim-at-nvidias-ai-hardware-dominance-with-brium-acquisition/?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=94fc138f8a2d76042f7fdca0e92adc9e37c18130",
160
+ "date_added": "13394059574346870",
161
  "date_modified": "",
162
+ "id": "390",
163
+ "category": "investment_funding",
164
+ "category_name": "Investment, Funding & M&A"
165
  },
166
  {
167
+ "title": "Quantum machine learning: Small-scale photonic quantum processor can already outperform classical counterparts",
168
+ "url": "https://phys.org/news/2025-06-quantum-machine-small-scale-photonic.html?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=9c319e9936f6b4c1e3b48bf37d421cdd4f585f71",
169
+ "date_added": "13394059579087347",
170
  "date_modified": "",
171
+ "id": "391",
172
+ "category": "community_events",
173
+ "category_name": "Community, Events & Education"
174
  },
175
  {
176
+ "title": "China shuts down AI tools during nationwide college exams | The Verge",
177
+ "url": "https://www.theverge.com/news/682737/china-shuts-down-ai-chatbots-exam-season?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=0e60ee709a712af1d3cea42885c7b23bc06f4f01",
178
+ "date_added": "13394059583685173",
179
  "date_modified": "",
180
+ "id": "392",
181
+ "category": "applications_industry",
182
+ "category_name": "Applications & Industry Use Cases"
183
  },
184
  {
185
+ "title": "Amazon to invest $20 billion in AI data centers in Pennsylvania - Axios Philadelphia",
186
+ "url": "https://www.axios.com/local/philadelphia/2025/06/09/amazon-data-centers-pennsylvania?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=f2ce235a24c343d50c95e144806ae72074550d97",
187
+ "date_added": "13394059589429770",
188
  "date_modified": "",
189
+ "id": "393",
190
+ "category": "applications_industry",
191
+ "category_name": "Applications & Industry Use Cases"
192
  },
193
  {
194
+ "title": "BFI AI Report: Film & TV Scripts Training AI \"Pose Threat\" To Sector",
195
+ "url": "https://deadline.com/2025/06/bfi-research-film-tv-script-training-poses-threat-to-sector-1236425794/?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=471645e2897413ac4ce12a91e1f9befdbeed32f2",
196
+ "date_added": "13394059593792876",
197
  "date_modified": "",
198
+ "id": "394",
199
+ "category": "community_events",
200
+ "category_name": "Community, Events & Education"
201
  },
202
  {
203
+ "title": "Why Duolingo's Founder is Doing Damage Control After AI Announcement",
204
+ "url": "https://www.inc.com/kit-eaton/why-duolingos-founder-is-doing-damage-control-after-ai-announcement/91199921?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=427c2962c6cea89db6a4a725a3e8f43998faa63a",
205
+ "date_added": "13394059597611815",
206
  "date_modified": "",
207
+ "id": "395",
208
+ "category": "applications_industry",
209
+ "category_name": "Applications & Industry Use Cases"
210
  },
211
  {
212
+ "title": "Microsoft to introduce AI safety ranking for cloud",
213
+ "url": "https://finance.yahoo.com/news/microsoft-introduce-ai-safety-ranking-104049450.html?utm_source=forwardfuture.ai&utm_medium=newsletter&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&_bhlid=a01bac48201992f70e4282a9ad224ff122a64ef7&guccounter=1",
214
+ "date_added": "13394059610068153",
215
  "date_modified": "",
216
+ "id": "396",
217
  "category": "benchmarks_leaderboards",
218
  "category_name": "Benchmarks & Leaderboards"
219
  },
220
  {
221
+ "title": "Flux Kontext AI Tool for Project Managers",
222
+ "url": "https://tools.forwardfuture.ai/tools/flux-kontext/r/reclzsET2G65tIRwr?_bhlid=fdd79136f4e621cd173c244a3a29508b1d9d5645&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&utm_medium=newsletter&utm_source=forwardfuture.ai",
223
+ "date_added": "13394059625235960",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  "date_modified": "",
225
+ "id": "397",
226
+ "category": "applications_industry",
227
+ "category_name": "Applications & Industry Use Cases"
228
  },
229
  {
230
+ "title": "Every AI Tool for Entrepreneurs",
231
+ "url": "https://tools.forwardfuture.ai/tools/every/r/recp063RkknyqMHWp?_bhlid=c12999ed1178a58b7ab0cb01888c9b4ca4da07f3&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&utm_medium=newsletter&utm_source=forwardfuture.ai",
232
+ "date_added": "13394059632241845",
233
  "date_modified": "",
234
+ "id": "398",
235
+ "category": "applications_industry",
236
+ "category_name": "Applications & Industry Use Cases"
237
  },
238
  {
239
+ "title": "Basecamp – AI Tool for Project Managers",
240
+ "url": "https://tools.forwardfuture.ai/tools/basecamp/r/rechBXpXemEfcxh1g?_bhlid=581549671d7e8533e6c348b37ac2f2001b00cc69&utm_campaign=apple-wwdc25-recap-amd-vs-nvidia-enterprise-ai-showdown&utm_medium=newsletter&utm_source=forwardfuture.ai",
241
+ "date_added": "13394059637099620",
242
  "date_modified": "",
243
+ "id": "399",
244
+ "category": "applications_industry",
245
+ "category_name": "Applications & Industry Use Cases"
246
  }
247
  ],
248
+ "last_updated": "2025-06-10T23:40:14.023878",
249
  "folder_name": "AI ressources",
250
+ "total_count": 26,
251
+ "last_categorized": "2025-06-11T00:06:40.271142",
252
  "categorization_stats": {
253
  "research_breakthroughs": 0,
254
+ "model_releases": 5,
255
+ "tools_frameworks": 0,
256
+ "applications_industry": 12,
257
  "regulation_ethics": 0,
258
+ "investment_funding": 1,
259
+ "benchmarks_leaderboards": 1,
260
+ "community_events": 2,
261
  "security_privacy": 0,
262
+ "market_trends": 0,
263
+ "uncategorized": 5
264
  }
265
  }
requirements.txt CHANGED
@@ -1,9 +1,9 @@
1
- gradio>=4.0.0
2
- google-api-python-client>=2.0.0
3
- google-auth-httplib2>=0.1.0
4
- google-auth-oauthlib>=1.0.0
5
- python-dotenv>=1.0.0
6
- smolagents>=0.3.0
7
  smolagents[openai]
8
- openai>=1.0.0
9
- requests>=2.25.0
 
1
+ gradio
2
+ google-api-python-client
3
+ google-auth-httplib2
4
+ google-auth-oauthlib
5
+ python-dotenv
6
+ smolagents
7
  smolagents[openai]
8
+ openai
9
+ requests
src/agents/bookmarks_agent.py CHANGED
@@ -1,5 +1,5 @@
1
  from typing import List, Dict, Any
2
- from smolagents import CodeAgent, OpenAIServerModel, tool
3
  import os
4
  import json
5
  import sys
@@ -328,9 +328,9 @@ def get_cache_info() -> Dict[str, Any]:
328
 
329
  # Instantiate the Bookmarks CodeAgent with enhanced tools
330
  bookmarks_agent = CodeAgent(
331
- model=OpenAIServerModel(
332
- model_id="o4-mini-2025-04-16",
333
- api_key=os.environ["OPENAI_API_KEY"],
334
  ),
335
  tools=[
336
  update_ai_bookmarks_cache,
@@ -343,6 +343,6 @@ bookmarks_agent = CodeAgent(
343
  ],
344
  name="bookmarks_agent",
345
  description="Specialized agent for Chrome bookmarks operations, focusing on AI ressources folder. Extracts bookmarks from Chrome and caches them in data/ai_bookmarks_cache.json to avoid direct interaction with Chrome's raw JSON. Provides search, filtering, statistics, and cache management for AI-related bookmarks.",
346
- max_steps=5,
347
  additional_authorized_imports=["json", "datetime", "urllib.parse", "pathlib"],
348
  )
 
1
  from typing import List, Dict, Any
2
+ from smolagents import CodeAgent, InferenceClientModel, tool
3
  import os
4
  import json
5
  import sys
 
328
 
329
  # Instantiate the Bookmarks CodeAgent with enhanced tools
330
  bookmarks_agent = CodeAgent(
331
+ model=InferenceClientModel(
332
+ provider="nebius",
333
+ token=os.environ["HF_TOKEN"],
334
  ),
335
  tools=[
336
  update_ai_bookmarks_cache,
 
343
  ],
344
  name="bookmarks_agent",
345
  description="Specialized agent for Chrome bookmarks operations, focusing on AI ressources folder. Extracts bookmarks from Chrome and caches them in data/ai_bookmarks_cache.json to avoid direct interaction with Chrome's raw JSON. Provides search, filtering, statistics, and cache management for AI-related bookmarks.",
346
+ max_steps=6,
347
  additional_authorized_imports=["json", "datetime", "urllib.parse", "pathlib"],
348
  )
src/agents/categoriser_agent.py CHANGED
@@ -1,5 +1,5 @@
1
  from typing import List, Dict, Any
2
- from smolagents import CodeAgent, OpenAIServerModel, tool
3
  import os
4
  import json
5
  from pathlib import Path
@@ -524,9 +524,9 @@ def search_bookmarks_by_category_and_query(category: str, query: str) -> List[Di
524
 
525
  # Instantiate the Categoriser CodeAgent
526
  categoriser_agent = CodeAgent(
527
- model=OpenAIServerModel(
528
- model_id="o4-mini-2025-04-16",
529
- api_key=os.environ["OPENAI_API_KEY"],
530
  ),
531
  tools=[
532
  categorize_all_bookmarks,
@@ -538,6 +538,6 @@ categoriser_agent = CodeAgent(
538
  ],
539
  name="categoriser_agent",
540
  description="Specializes in categorizing AI news and bookmarks into 10 predefined categories: Research & Breakthroughs, Model Releases & Updates, Tools/Frameworks/Platforms, Applications & Industry Use Cases, Regulation/Ethics/Policy, Investment/Funding/M&A, Benchmarks & Leaderboards, Community/Events/Education, Security/Privacy/Safety, and Market Trends & Analysis. Uses keyword-based categorization and provides tools for managing and searching categorized content.",
541
- max_steps=5,
542
  additional_authorized_imports=["json", "datetime", "re", "pathlib"],
543
  )
 
1
  from typing import List, Dict, Any
2
+ from smolagents import CodeAgent, InferenceClientModel, tool
3
  import os
4
  import json
5
  from pathlib import Path
 
524
 
525
  # Instantiate the Categoriser CodeAgent
526
  categoriser_agent = CodeAgent(
527
+ model=InferenceClientModel(
528
+ provider="nebius",
529
+ token=os.environ["HF_TOKEN"],
530
  ),
531
  tools=[
532
  categorize_all_bookmarks,
 
538
  ],
539
  name="categoriser_agent",
540
  description="Specializes in categorizing AI news and bookmarks into 10 predefined categories: Research & Breakthroughs, Model Releases & Updates, Tools/Frameworks/Platforms, Applications & Industry Use Cases, Regulation/Ethics/Policy, Investment/Funding/M&A, Benchmarks & Leaderboards, Community/Events/Education, Security/Privacy/Safety, and Market Trends & Analysis. Uses keyword-based categorization and provides tools for managing and searching categorized content.",
541
+ max_steps=6,
542
  additional_authorized_imports=["json", "datetime", "re", "pathlib"],
543
  )
src/agents/gmail_agent.py CHANGED
@@ -1,8 +1,6 @@
1
- # src/agents/gmail_agent.py
2
-
3
  import os
4
  from typing import List, Dict, Any
5
- from smolagents import CodeAgent, OpenAIServerModel, tool
6
 
7
  from src.tools.gmail_mcp_client import get_recent_emails as _get_recent_emails
8
  from src.tools.gmail_mcp_client import search_emails_simple as _search_emails_simple
@@ -22,7 +20,6 @@ def get_recent_emails(max_results: int = 10) -> List[Dict[str, str]]:
22
  List of email dictionaries with 'id', 'subject', 'sender', 'date', and 'snippet' fields.
23
  Returns empty list if no emails found. Each email can be read in detail using read_email_content.
24
  """
25
- # Validate input
26
  if max_results < 1:
27
  max_results = 1
28
  elif max_results > 50:
@@ -45,7 +42,6 @@ def search_emails(query: str, max_results: int = 10) -> List[Dict[str, str]]:
45
  List of email dictionaries with 'id', 'subject', 'sender', 'date', and 'snippet' fields.
46
  Returns empty list if no matching emails found. Use read_email_content to get full email text.
47
  """
48
- # Validate input
49
  if not query or not query.strip():
50
  print("Error: Empty search query provided")
51
  return [{"error": "Search query cannot be empty"}]
@@ -78,15 +74,14 @@ def read_email_content(message_id: str) -> Dict[str, Any]:
78
  return _read_email_content(message_id.strip())
79
 
80
 
81
- # Create a simplified Gmail agent focused on reading emails only
82
  gmail_agent = CodeAgent(
83
- model=OpenAIServerModel(
84
- model_id="o4-mini-2025-04-16",
85
- api_key=os.environ["OPENAI_API_KEY"],
86
  ),
87
  tools=[get_recent_emails, search_emails, read_email_content],
88
  name="gmail_agent",
89
  description="Gmail agent specialized in reading and searching emails from habib.adoum01@gmail.com and news@alphasignal.ai only",
90
- max_steps=6, # Reduced from 10 to prevent token overflow
91
  additional_authorized_imports=["json"],
92
  )
 
 
 
1
  import os
2
  from typing import List, Dict, Any
3
+ from smolagents import CodeAgent, InferenceClientModel, tool
4
 
5
  from src.tools.gmail_mcp_client import get_recent_emails as _get_recent_emails
6
  from src.tools.gmail_mcp_client import search_emails_simple as _search_emails_simple
 
20
  List of email dictionaries with 'id', 'subject', 'sender', 'date', and 'snippet' fields.
21
  Returns empty list if no emails found. Each email can be read in detail using read_email_content.
22
  """
 
23
  if max_results < 1:
24
  max_results = 1
25
  elif max_results > 50:
 
42
  List of email dictionaries with 'id', 'subject', 'sender', 'date', and 'snippet' fields.
43
  Returns empty list if no matching emails found. Use read_email_content to get full email text.
44
  """
 
45
  if not query or not query.strip():
46
  print("Error: Empty search query provided")
47
  return [{"error": "Search query cannot be empty"}]
 
74
  return _read_email_content(message_id.strip())
75
 
76
 
 
77
  gmail_agent = CodeAgent(
78
+ model=InferenceClientModel(
79
+ provider="nebius",
80
+ token=os.environ["HF_TOKEN"],
81
  ),
82
  tools=[get_recent_emails, search_emails, read_email_content],
83
  name="gmail_agent",
84
  description="Gmail agent specialized in reading and searching emails from habib.adoum01@gmail.com and news@alphasignal.ai only",
85
+ max_steps=6,
86
  additional_authorized_imports=["json"],
87
  )
src/agents/manager_agent.py CHANGED
@@ -1,6 +1,6 @@
1
  # src/agents/manager_agent.py
2
 
3
- from smolagents import CodeAgent, OpenAIServerModel
4
  from dotenv import load_dotenv
5
  import os
6
 
@@ -15,9 +15,9 @@ load_dotenv()
15
  # Create a single focused agent instead of complex multi-agent system
16
  # This follows the smolagents principle: "The best agentic systems are the simplest"
17
  manager_agent = CodeAgent(
18
- model=OpenAIServerModel(
19
- model_id="o4-mini-2025-04-16",
20
- api_key=os.environ["OPENAI_API_KEY"],
21
  ),
22
  managed_agents=[web_agent, gmail_agent, bookmarks_agent, categoriser_agent],
23
  name="digital_assistant",
 
1
  # src/agents/manager_agent.py
2
 
3
+ from smolagents import CodeAgent, InferenceClientModel
4
  from dotenv import load_dotenv
5
  import os
6
 
 
15
  # Create a single focused agent instead of complex multi-agent system
16
  # This follows the smolagents principle: "The best agentic systems are the simplest"
17
  manager_agent = CodeAgent(
18
+ model=InferenceClientModel(
19
+ provider="nebius",
20
+ token=os.environ["HF_TOKEN"],
21
  ),
22
  managed_agents=[web_agent, gmail_agent, bookmarks_agent, categoriser_agent],
23
  name="digital_assistant",
src/agents/web_agents.py CHANGED
@@ -1,20 +1,20 @@
 
1
  from smolagents import (
2
  ToolCallingAgent,
3
- OpenAIServerModel,
4
  WebSearchTool,
5
  )
6
 
7
- import os
8
 
9
- model = OpenAIServerModel(
10
- model_id="o4-mini-2025-04-16",
11
- api_key=os.environ["OPENAI_API_KEY"],
12
  )
13
 
14
  web_agent = ToolCallingAgent(
15
  tools=[WebSearchTool()],
16
  model=model,
17
- max_steps=10,
18
  name="web_search_agent",
19
  description="Runs web searches for you.",
20
  )
 
1
+ import os
2
  from smolagents import (
3
  ToolCallingAgent,
4
+ InferenceClientModel,
5
  WebSearchTool,
6
  )
7
 
 
8
 
9
+ model = InferenceClientModel(
10
+ provider="nebius",
11
+ token=os.environ["HF_TOKEN"],
12
  )
13
 
14
  web_agent = ToolCallingAgent(
15
  tools=[WebSearchTool()],
16
  model=model,
17
+ max_steps=6,
18
  name="web_search_agent",
19
  description="Runs web searches for you.",
20
  )
src/interfaces/gradio_interface.py CHANGED
@@ -173,100 +173,129 @@ def create_categories_interface():
173
  def create_about_interface():
174
  """Create the about page interface."""
175
 
176
- about_content = """
177
- # 🧠 About ReMind
178
-
179
- ## Bring your past to mind.
180
 
181
- **ReMind** is your intelligent digital memory assistant that helps you rediscover, organize, and make sense of your accumulated digital knowledge. In our information-rich world, we often bookmark valuable resources only to forget about them later. ReMind solves this problem by intelligently categorizing and surfacing your digital discoveries when you need them most.
182
 
183
- ---
 
184
 
 
185
  ## 🎯 What ReMind Does
186
 
187
  ### 🔖 **Smart Bookmark Management**
188
- - Automatically imports and manages your Chrome bookmarks
189
- - Provides intelligent search and filtering capabilities
190
  - Tracks bookmark statistics and usage patterns
191
- - Focuses specifically on AI and technology resources
 
 
 
 
 
 
 
 
 
 
 
 
192
 
193
  ### 🏷️ **Intelligent Categorization**
194
- ReMind automatically organizes your bookmarks into **10 key AI categories**:
195
-
196
- 1. **🔬 Research & Breakthroughs** - Latest papers and theoretical advances
197
- 2. **🚀 Model Releases & Updates** - New AI models and version updates
198
- 3. **🛠️ Tools, Frameworks & Platforms** - Developer tools and SDKs
199
- 4. **🏭 Applications & Industry Use Cases** - Real-world AI implementations
200
- 5. **⚖️ Regulation, Ethics & Policy** - AI governance and ethical considerations
201
- 6. **💰 Investment, Funding & M&A** - Market movements and startup funding
202
- 7. **🏆 Benchmarks & Leaderboards** - Performance comparisons and competitions
203
- 8. **🎓 Community, Events & Education** - Learning resources and conferences
204
- 9. **🔒 Security, Privacy & Safety** - AI safety and security research
205
- 10. **📈 Market Trends & Analysis** - Industry insights and forecasts
206
-
207
- ### 💬 **Conversational Interface**
208
- - Chat naturally with your AI assistant about your bookmarks
209
- - Ask questions like "Show me my latest AI tools" or "Find research about transformers"
210
- - Get contextual recommendations based on your interests
211
- - Real-time thinking process visualization
212
-
213
- ### 📧 **Email Integration**
214
- - Browse and search through your important emails
215
- - Focus on AI newsletters and updates from trusted sources
216
- - Extract insights from your email-based learning resources
217
 
218
  ---
219
 
220
  ## 🔧 How It Works
221
 
222
- **ReMind** is powered by **Smolagents**, a modern AI agent framework that enables:
223
 
224
- - **🤖 Multi-tool orchestration** - Seamlessly combines bookmark management, email access, and web search
225
- - **🧠 Real-time reasoning** - Watch the AI think through problems step-by-step
226
- - **🔄 Dynamic categorization** - Continuously learns and improves bookmark organization
227
- - **🔍 Semantic search** - Find resources based on meaning, not just keywords
 
228
 
229
  ---
230
 
231
  ## 🚀 Getting Started
232
 
233
- 1. **Load Your Bookmarks**: Use the chat interface to import your Chrome bookmarks
234
- 2. **Categorize Content**: Ask ReMind to automatically categorize your AI resources
235
- 3. **Explore Categories**: Browse organized categories in the Categories Dashboard
236
- 4. **Search & Discover**: Use natural language to find specific resources
237
- 5. **Stay Updated**: Let ReMind help you track new developments in AI
238
 
239
  ---
240
 
241
  ## 🔒 Privacy & Security
242
 
243
- - **Local Processing**: Your bookmarks are processed and stored locally
244
- - **Selective Email Access**: Only accesses specified trusted email sources
245
- - **No Data Sharing**: Your personal information stays on your device
246
- - **Transparent Operations**: All AI operations are visible and explainable
 
247
 
248
  ---
249
 
250
  ## 💡 Why ReMind?
251
 
252
- In the fast-moving world of AI and technology, staying informed while managing information overload is challenging. ReMind transforms your passive bookmark collection into an active, intelligent knowledge base that:
253
 
254
- - **Surfaces forgotten gems** from your browsing history
255
- - **Identifies patterns** in your learning journey
256
- - **Suggests connections** between different resources
257
- - **Keeps you organized** without manual effort
258
- - **Learns your interests** and adapts over time
259
 
260
  ---
261
 
262
- *"The palest ink is better than the best memory, but the smartest AI makes both ink and memory work together."*
263
 
264
- **Welcome to ReMind - where your digital past becomes your future advantage.**
 
 
 
 
 
 
265
  """
266
 
267
  with gr.Blocks() as about_tab:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
268
  gr.Markdown(about_content)
269
-
270
  return about_tab
271
 
272
 
@@ -327,10 +356,10 @@ def chat_with_agent(message: str, history: List) -> Generator[List, None, None]:
327
  # Start with user message in history
328
  new_history = formatted_history.copy()
329
 
330
- # Show initial thinking message
331
  thinking_message = {
332
  "role": "assistant",
333
- "content": "🧠 **Agent Planning**\n\nAnalyzing your request and creating execution plan...",
334
  }
335
  new_history.append(thinking_message)
336
  yield validate_message_history(new_history)
@@ -348,10 +377,10 @@ def chat_with_agent(message: str, history: List) -> Generator[List, None, None]:
348
  for step in agent_stream:
349
  step_count += 1
350
 
351
- # Update thinking message with current step info
352
  if hasattr(step, "step_number") and hasattr(step, "action"):
353
- step_content = "🧠 **Agent Planning & Execution**\n\n"
354
- step_content += f"**Step {step.step_number}:**\n"
355
 
356
  if hasattr(step, "thought") and step.thought:
357
  step_content += f"💭 **Thought:** {step.thought}\n\n"
@@ -365,6 +394,7 @@ def chat_with_agent(message: str, history: List) -> Generator[List, None, None]:
365
  obs_text += "..."
366
  step_content += f"👁️ **Observation:** {obs_text}\n\n"
367
 
 
368
  thinking_message["content"] = step_content
369
  new_history[-1] = thinking_message
370
  yield validate_message_history(new_history)
@@ -373,7 +403,9 @@ def chat_with_agent(message: str, history: List) -> Generator[List, None, None]:
373
  # If streaming fails, fall back to regular execution
374
  print(f"Streaming failed: {stream_error}, falling back to regular execution")
375
 
376
- thinking_message["content"] = "🧠 **Agent Working**\n\nProcessing your request using available tools..."
 
 
377
  new_history[-1] = thinking_message
378
  yield validate_message_history(new_history)
379
 
@@ -428,7 +460,7 @@ def chat_with_agent(message: str, history: List) -> Generator[List, None, None]:
428
 
429
  # Update thinking to show completion
430
  thinking_message["content"] = (
431
- "🧠 **Agent Complete**\n\n✅ Request processed successfully\n✅ Response prepared"
432
  )
433
  new_history[-1] = thinking_message
434
  yield validate_message_history(new_history)
@@ -448,7 +480,7 @@ def chat_with_agent(message: str, history: List) -> Generator[List, None, None]:
448
 
449
  # If we get here, streaming worked, so get the final result
450
  # The streaming should have shown all the steps, now get final answer
451
- thinking_message["content"] = "🧠 **Agent Complete**\n\n✅ All steps executed\n✅ Preparing final response"
452
  new_history[-1] = thinking_message
453
  yield validate_message_history(new_history)
454
 
@@ -482,7 +514,7 @@ def chat_with_agent(message: str, history: List) -> Generator[List, None, None]:
482
  chat_interface = gr.ChatInterface(
483
  fn=chat_with_agent,
484
  type="messages",
485
- title="🔖 Digital Assistant - Powered by Smolagents",
486
  description="""
487
  ## Your Comprehensive AI Assistant! 🤖
488
 
@@ -510,7 +542,7 @@ chat_interface = gr.ChatInterface(
510
  - Research topics and gather up-to-date data
511
 
512
  ---
513
- **🔒 Security Note:** Email read access is limited to `habib.adoum01@gmail.com` and `news@alphasignal.ai`
514
 
515
  **💡 Watch the agent think in real-time** - You'll see my reasoning process, tool selection, and execution steps in collapsible sections!
516
  """,
 
173
  def create_about_interface():
174
  """Create the about page interface."""
175
 
176
+ intro_content = """
177
+ # 🧠 About ReMind - AI and Tech News Assistant
 
 
178
 
179
+ ## Bring your AI knowledge to mind.
180
 
181
+ **ReMind** is your intelligent digital memory assistant that helps you rediscover, organize, and make sense of your accumulated AI and technology knowledge. In our information-rich world, we often bookmark valuable resources and receive important newsletters only to forget about them later. This system solves this problem by intelligently categorizing and surfacing your digital discoveries when you need them most.
182
+ """
183
 
184
+ about_content = """
185
  ## 🎯 What ReMind Does
186
 
187
  ### 🔖 **Smart Bookmark Management**
188
+ - Automatically extracts and caches AI bookmarks from your Chrome "AI ressources" folder
189
+ - Provides intelligent search and filtering capabilities by domain, keywords, and categories
190
  - Tracks bookmark statistics and usage patterns
191
+ - Focuses specifically on AI and technology resources with comprehensive caching system
192
+
193
+ ### 📧 **Newsletter Email Integration**
194
+ - Securely accesses emails from trusted AI news sources (news@alphasignal.ai)
195
+ - Searches through AI newsletters and updates with intelligent filtering
196
+ - Extracts insights from email-based learning resources
197
+ - Provides recent email browsing and content reading capabilities
198
+
199
+ ### 🌐 **Real-time Web Search**
200
+ - Performs live web searches for the latest AI and tech developments
201
+ - Combines cached knowledge with current information
202
+ - Supports up to 6-step search processes for comprehensive research
203
+ - Delivers real-time results and analysis
204
 
205
  ### 🏷️ **Intelligent Categorization**
206
+ The system automatically organizes your content into **10 key AI categories**:
207
+
208
+ 1. **🔬 Research & Breakthroughs** - Latest papers, theoretical advances, and novel architectures
209
+ 2. **🚀 Model Releases & Updates** - New AI models, version upgrades, and open-source checkpoints
210
+ 3. **🛠️ Tools, Frameworks & Platforms** - Developer SDKs, libraries, cloud services, and deployment solutions
211
+ 4. **🏭 Applications & Industry Use Cases** - Real-world AI implementations across healthcare, finance, manufacturing
212
+ 5. **⚖️ Regulation, Ethics & Policy** - AI governance, ethical considerations, and compliance guidelines
213
+ 6. **💰 Investment, Funding & M&A** - Market movements, startup funding, and acquisition news
214
+ 7. **🏆 Benchmarks & Leaderboards** - Performance comparisons, academic challenges, and ranking systems
215
+ 8. **🎓 Community, Events & Education** - Learning resources, conferences, workshops, and tutorials
216
+ 9. **🔒 Security, Privacy & Safety** - AI safety research, adversarial attacks, and privacy protection
217
+ 10. **📈 Market Trends & Analysis** - Industry insights, adoption rates, and market forecasts
218
+
219
+ ### 💬 **Multi-Agent Conversational Interface**
220
+ - **Manager Agent**: Routes queries to specialized agents based on context
221
+ - **Bookmarks Agent**: Handles Chrome bookmark extraction, caching, and management
222
+ - **Gmail Agent**: Manages email access, search, and content reading
223
+ - **Categorizer Agent**: Provides intelligent classification with manual override capabilities
224
+ - **Web Search Agent**: Performs real-time web research and analysis
 
 
 
 
225
 
226
  ---
227
 
228
  ## 🔧 How It Works
229
 
230
+ **ReMind** is powered by HuggingFace's **Smolagents**. Here is how it works:
231
 
232
+ - **🤖 Multi-agent orchestration** - Specialized agents work together seamlessly
233
+ - **🧠 Real-time reasoning** - Watch AI agents think through problems step-by-step
234
+ - **🔄 Dynamic categorization** - Keyword-based classification with manual recategorization
235
+ - **🔍 Semantic search** - Find resources across bookmarks, emails, and web results
236
+ - **💾 Local caching** - Efficient JSON-based storage for offline access
237
 
238
  ---
239
 
240
  ## 🚀 Getting Started
241
 
242
+ 1. **Update Bookmark Cache**: Import your Chrome "AI ressources" bookmarks into the local cache
243
+ 2. **Categorize Content**: Automatically classify your AI resources into organized categories
244
+ 3. **Access Email Updates**: Browse recent newsletters and AI news from trusted sources
245
+ 4. **Search Across Sources**: Use natural language to find specific resources across all data sources
246
+ 5. **Stay Current**: Combine cached knowledge with real-time web search for latest developments
247
 
248
  ---
249
 
250
  ## 🔒 Privacy & Security
251
 
252
+ - **Local JSON Caching**: Bookmarks processed and stored in local cache files
253
+ - **Selective Email Access**: Only accesses specified trusted email sources with OAuth security
254
+ - **Controlled Web Access**: Real-time search with responsible usage limits
255
+ - **Transparent Operations**: All agent operations are visible and explainable
256
+ - **No Data Sharing**: Personal information processed locally with secure authentication
257
 
258
  ---
259
 
260
  ## 💡 Why ReMind?
261
 
262
+ In the fast-moving world of AI and technology, staying informed while managing information overload is challenging. This system transforms your passive bookmark collection and newsletter subscriptions into an active, intelligent knowledge base that:
263
 
264
+ - **Surfaces forgotten resources** from your Chrome bookmarks
265
+ - **Organizes email newsletters** into actionable intelligence
266
+ - **Combines multiple sources** for comprehensive AI knowledge management
267
+ - **Provides real-time updates** through web search integration
268
+ - **Learns and adapts** through intelligent categorization and recategorization
269
 
270
  ---
271
 
272
+ ## 🙏 Acknowledgments
273
 
274
+ Thanks to **Modal Labs**, **Hugging Face**, **Nebius**, **Anthropic**, **OpenAI**, **Hyperbolic Labs**, **MistralAI**, and **Sambanova.AI** for providing credits that power this demo.
275
+
276
+ ---
277
+
278
+ *"The smartest AI system is one that helps you manage AI knowledge itself."*
279
+
280
+ **Welcome to ReMind - where your digital AI knowledge becomes your strategic advantage.**
281
  """
282
 
283
  with gr.Blocks() as about_tab:
284
+ gr.Markdown(intro_content)
285
+
286
+ # Add the AI architecture diagram
287
+ gr.Markdown("## 🏗️ System Architecture")
288
+ gr.Image(
289
+ value="data/ai_diagram.png",
290
+ label="ReMind AI System Architecture",
291
+ show_label=True,
292
+ show_download_button=True,
293
+ height=400,
294
+ width=None,
295
+ interactive=False,
296
+ )
297
+ gr.Markdown("*System architecture showing the multi-agent orchestration and data flow in ReMind*")
298
  gr.Markdown(about_content)
 
299
  return about_tab
300
 
301
 
 
356
  # Start with user message in history
357
  new_history = formatted_history.copy()
358
 
359
+ # Show initial thinking message with spinner
360
  thinking_message = {
361
  "role": "assistant",
362
+ "content": "🔄 **Agent Planning**\n\n💫 Analyzing your request and creating execution plan...\n\n*Please wait while I process your request...*",
363
  }
364
  new_history.append(thinking_message)
365
  yield validate_message_history(new_history)
 
377
  for step in agent_stream:
378
  step_count += 1
379
 
380
+ # Update thinking message with current step info and spinner
381
  if hasattr(step, "step_number") and hasattr(step, "action"):
382
+ step_content = " **Agent Working** 🔄\n\n"
383
+ step_content += f"🔍 **Step {step.step_number}:** *In Progress...*\n\n"
384
 
385
  if hasattr(step, "thought") and step.thought:
386
  step_content += f"💭 **Thought:** {step.thought}\n\n"
 
394
  obs_text += "..."
395
  step_content += f"👁️ **Observation:** {obs_text}\n\n"
396
 
397
+ step_content += "⏳ *Processing next step...*"
398
  thinking_message["content"] = step_content
399
  new_history[-1] = thinking_message
400
  yield validate_message_history(new_history)
 
403
  # If streaming fails, fall back to regular execution
404
  print(f"Streaming failed: {stream_error}, falling back to regular execution")
405
 
406
+ thinking_message["content"] = (
407
+ "⚡ **Agent Working** 🔄\n\n💫 Processing your request using available tools...\n\n⏳ *Please wait...*"
408
+ )
409
  new_history[-1] = thinking_message
410
  yield validate_message_history(new_history)
411
 
 
460
 
461
  # Update thinking to show completion
462
  thinking_message["content"] = (
463
+ " **Agent Complete** 🎉\n\n✅ Request processed successfully\n✅ Response prepared"
464
  )
465
  new_history[-1] = thinking_message
466
  yield validate_message_history(new_history)
 
480
 
481
  # If we get here, streaming worked, so get the final result
482
  # The streaming should have shown all the steps, now get final answer
483
+ thinking_message["content"] = " **Agent Complete** 🎉\n\n✅ All steps executed\n✅ Preparing final response"
484
  new_history[-1] = thinking_message
485
  yield validate_message_history(new_history)
486
 
 
514
  chat_interface = gr.ChatInterface(
515
  fn=chat_with_agent,
516
  type="messages",
517
+ title="🔖 AI and Tech News Assistant - Powered by Smolagents",
518
  description="""
519
  ## Your Comprehensive AI Assistant! 🤖
520
 
 
542
  - Research topics and gather up-to-date data
543
 
544
  ---
545
+ **🔒 Security Note:** Email read access is limited to `news@alphasignal.ai`
546
 
547
  **💡 Watch the agent think in real-time** - You'll see my reasoning process, tool selection, and execution steps in collapsible sections!
548
  """,