Ironhack Berlin · AI Integration Bootcamp · Week 3 Project

Your market intelligence
agent. Running 24/7.

HERMES watches 590 suppliers across 17 categories, classifies every signal with Claude Haiku, stores everything in two purpose-built databases, and answers natural language questions — including semantic topic search powered by RAG. His partner ICARUS relays everything to you on Telegram.

590
Suppliers tracked
11
Signal types
2
AI agents
~$7
Per month
Built by a procurement professional with 10+ years at TeamViewer, Scout24, and Delivery Hero — to automate what used to take hours of manual research. Two AI agents. Two databases. One natural language interface.
Eugen Mueller · eugnmueller@googlemail.com

Agent Architecture

Two agents with strict roles. Icarus is master — Hermes never pushes, never accesses personal data.

ICARUS
Master Agent — Telegram Interface
Hermes tools available
hermes_greet hermes_query hermes_briefing hermes_search ✦ RAG hermes_crawl build_miro_board
Also manages: Gmail · Calendar · Tasks · GitHub · LinkedIn · Shopping
HTTP API
⇄
JSON
HERMES
Sub-Agent — Market Intelligence
HTTP endpoints
GET /health · GET /greet
GET /query/{company}
GET /briefing
GET /search?q= ← RAG
POST /crawl/rss · /crawl/edgar · /crawl/tavily
POST /miro/landscape · /miro/signals
POST /flush
Upstash Redis
Key-value store — all crawled items, supplier lists, dedup flags. Primary query database.
Upstash Vector
Vector embeddings — BAAI/bge-large-en-v1.5, 1024 dimensions. Powers semantic RAG search.

Database Layer

Two databases, two purposes — every crawled item lands in both simultaneously.

Upstash Redis
Exact lookup
hermes:item:{md5} ← full JSON, 7-day TTL
hermes:supplier:{slug} ← item ID list, max 3000
hermes:seen:{md5} ← dedup flag, 30-day TTL
"What does Hermes have on TSMC?" — slug lookup, returns last N items in milliseconds
Deduplication — URL hash stored before processing; never crawls the same article twice
Auto-expiry — 7-day TTL keeps storage lean; rolling window of fresh intelligence
Upstash Vector
Semantic search (RAG)
id: item MD5 hash
data: "{supplier} ({category}): {title}. {reason}"
metadata: supplier, category, urgency, date
model: BAAI/bge-large-en-v1.5 · 1024-dim
Text → embedding on write — Upstash hosts the model; no OpenAI key needed
Topic queries — "chip export controls" returns ASML + NVIDIA + Applied Materials without naming them
10,000 vectors free — cosine similarity, EU region, zero config
Crawler → Signal Detection (Claude Haiku) → Redis write (key-value) → Vector upsert (embed text) → Both databases updated in one store_item() call

RAG — Semantic Search Across All Suppliers

Retrieval-Augmented Generation: retrieve relevant items by meaning, not by company name.

Before RAG — keyword lookup
"What does Hermes have on NVIDIA?"
Returns NVIDIA-specific items only.

Fails for: "what's happening with chip supply?", "export control signals", "AI compute capacity" — no company name, no results.
After RAG — semantic retrieval
"What are chip suppliers signaling about export controls?"
Returns relevant items from ASML, NVIDIA, Applied Materials, KLA, TSMC — based on semantic similarity, not name matching.

User never mentioned any of these companies.
💬
User query
Natural language topic or theme
→
🔢
Embed query
Upstash Vector embeds query text with BAAI model
→
🔍
Vector search
top-K by cosine similarity across all stored items
→
📦
Redis fetch
Retrieve full item JSON by ID from Redis
→
🤖
LLM synthesis
Claude formats results into a natural response
"any signals about supply chain disruptions this week?"
"what are cloud providers saying about pricing?"
"AI compute capacity news across all suppliers"

Uniqueness Demonstration

Same topic. Two approaches. The difference is live data, two databases, and semantic retrieval.

Dimension Generic ChatGPT Hermes + Icarus
Data freshness Training cutoff — no live data RSS 6h · EDGAR daily · Tavily weekly · 18 industry feeds
Supplier coverage Generic industry knowledge 590 companies, 17 categories, per-supplier signal history
Query type Keyword search or name lookup only RAG: topic/theme queries across all suppliers semantically
Databases None — stateless per-session Redis (exact lookup) + Vector (semantic search) — always on
Agent interaction Single model, single context Icarus (master) ↔ Hermes (sub-agent) via authenticated HTTP API
Cost $0 + hours of manual research ~$7/month total — monitoring + RAG runs 24/7
What's live today
Live — Hermes FastAPI on Railway, 7 endpoints, API key auth
Live — RSS · EDGAR · Tavily + 18 industry feeds
Live — Upstash Redis + Upstash Vector (RAG)
Live — 5 Hermes tools in Icarus Telegram bot
Live — Miro board builder (landscape + signals)
Cost breakdown
Railway hosting — ~$5
Claude Haiku (signals) — ~$1–2
Upstash Redis + Vector — $0
Tavily + EDGAR + RSS — $0
Total — ~$7 / month