-
-
main dashboard - market at a glance
-
G8 economies + trades
-
data flow diagram, with status (green = ok, red = bad) to help visualise system status
-
senkey diagram to visualise relationship and data flow between components
-
trade evaluations (technical trading strategy using indicators)
-
EvalOps integrated (pulled from Phoenix Arize)
-
more of performance
-
performance over time. I started with 100k paper account money.
-
trade history
-
trade performance
-
How this SentinelHub trade process is realised
-
about page
-
Maturity Phases of the project - we trade on Alpaca API real ledger
-
insights via agents + from elasticsearch
-
BigQeuery - via fivetran to get this synced over from mongodb
-
GitLab pipelien for release cicd process pseudo-prod (tag based)
-
Experiments on Phoenix Arize
-
Arize Traces
-
Dynatrace tracing
-
Dynatrace dashboard
-
ElasticSearch Ops Dashboard
-
ElasticSearch Detection Drift
-
Fivetran MongoDB to BQ sync
-
Fivetran MongoDB to BQ synced decisions
-
Cloud Scheduler
-
Web cloud run (same with api service cloudrun)
-
MongoDB collections
-
Mongodb Atlas metcis
-
Gitlab pipelines
-
Project landing
-
Gitlab Slack Integration for pipeline enotifications
-
Gitlab wiki now too
-
Arize Experiments compared
About the project
Inspiration
I'd tried to build something like this before and failed — the models weren't capable enough, the agent tooling wasn't there, and I didn't have the time. This time a few things lined up: Google's Agent Development Kit had matured, I finally had room to experiment, and a couple of previous hackathons meant I could put what I'd already learned to the test.
What it does
The core question I wanted to answer: can you blend a human-style discretionary thesis with the non-determinism of LLMs — without letting a model that hallucinates actually place orders?
So the platform splits the two apart. The agents do the reasoning — they read foundational research, news cycles, and macro/economic data across the G8 economies to make sense of why the market is moving: why a sector is bid up, why another is beaten down. From that they narrow a 13,000–20,000-ticker universe down to ~50–100 names in the sectors most likely to be mispriced in the current regime. (Energy might be the right place to trade in June; tech or financials might not be, in the same business cycle.)
The execution stays deterministic — specific, technical-analysis-driven trades placed through Alpaca as bracket orders. Rule-based and proven, not a model freestyling with my money.
I used Gemini Flash-Lite for fast summaries and self-explanation (so I could share the idea with colleagues in the UK and abroad), and Gemini Flash for the deeper reasoning behind the thesis. A reflection step then feeds insights back so the agent refines its strategy for a sector over time — it gets better. It's an idea, not a guarantee; I don't think any single strategy works forever. But Arize Phoenix was genuinely useful for working out which model fits which job.
How I built it
Built on Google's ADK, deployed on Cloud Run. I ran it like a real product rather than a notebook: develop and test locally, then ship by pushing a git tag — the tag triggers a programmatic deploy (Terraform baseline, integrations, feeds and tests all wired in). A lot of the effort went into the harness around me — a spec-and-doc-driven workflow that let me bootstrap the whole thing. The runbooks, HLDs and ADRs in the repo document how it was put together.
Challenges I ran into
Too many to list. I ended up dropping Fivetran for this cut — it synced Mongo→BigQuery once or twice (I wanted it for ML-driven analytics later), but wiring it back reliably was more pain than it was worth right now.
The integrations themselves are battle-tested; the real challenge was making them tell a story. What's the business value, and how do I show it on screen? If it doesn't make sense visually, there's no point — and that's demoralising. A lot of evenings went into the chat interface so you can ask questions about your own trade history (backed by Elastic) — find anomalies, see which tickers I have an affinity with, and why.
The hardest problem was data coherence. Too often I was unknowingly rendering stale data — something failing silently upstream — so a dashboard number would be quietly wrong. Pulling G8 macro sources was straightforward (web search, plus a Twitter key for social sentiment); keeping it all fresh, clear and consistent was not. The 3D/animation work (three.js, motion.dev) was its own fight.
Accomplishments that Im proud of
First: it works, and it deploys itself. I have a proper harness now — pre-commit hooks and a test gate that catch problems before anything ships, which I'd been burned by before. Five of six integrations are live (Fivetran is the one I cut).
And honestly, cutting a tight 3-minute video after weeks of late-night building and debugging was its own accomplishment — I nearly gave up more than once, and I'm glad I didn't.
What I'm proudest of is that I shipped this the way you'd ship a real product — release pipelines to GCP, decision logs, architecture docs, runbooks and low-level designs for every integration, all version-controlled. As a solo builder you wear every hat — CEO, data engineer, domain expert — and getting it to place real paper trades through Alpaca (paper capital, but real orders and a real performance ledger) made it tangible.
What i learned
A lot — ADK, MCP tools, and the realities of hosting. The biggest lesson is the oldest one: works on my machine doesn't mean works in the cloud. It took real effort to streamline the local pipeline and then hand CI/CD to GitLab with a proper test-and-approval gate.
- Arize Phoenix was the standout — it showed me which evaluation model to use where, how my traces were performing, and whether the multi-agent architecture actually held together. GCP has eval too, but Phoenix (including the open-source edition) was the easiest on-ramp.
- Notifications matter. I wired failed builds to a private Slack channel, so I know immediately when something didn't ship.
- Elastic surprised me — I could generate dashboards just by asking Claude for them, which used to be a manual chore. Genuinely magical.
- MongoDB Atlas quietly handled everything — thousands of documents, AI conversations, and all the ingested feeds (news, FRED economic data, ECB policy) as the persistent store, barely registering on performance.
I expect this to turn into talks in my professional community, and hopefully a Google developer day or two.
What's next for SentinelHub — Agentic G8 Market Opportunity Trader
I'm going to keep building on it — there's genuine, snowballing interest from colleagues, which is the best signal there is. The threads I want to pull next: tightening data-quality guarantees and scheduling, and maturing the operational story from AgentOps into EvalOps + SRE-style monitoring. From there, a small, lean production rollout with room to scale (Firebase as the hosting path). And — given how much I learned — a series of talks on full-stack Agentic systems with MCP tooling.
Built with
google-gemini · google-adk · mongodb-atlas · arize-phoenix · elasticsearch · fivetran · bigquery · dynatrace · alpaca · firebase · next.js · react · fastapi · python · typescript · docker · google-cloud-run
Built With
- adk
- alpaca
- arize
- docker
- elasticsearch
- fastapi
- firebase
- google-cloud
- google-gemini
- mongodb
- nextjs
- phoenix
- python
- react


Log in or sign up for Devpost to join the conversation.