Inspiration

Financial markets move fast. By the time most retail investors hear about a significant market event — an earnings surprise, a regulatory filing, an analyst upgrade — the institutional players have already acted. The information exists; it's just buried in noise.

We wanted to build something that closes that gap. Not a dashboard you have to actively monitor, and not a rule-based alert system that fires on every 1% price move. Something genuinely intelligent — a system that watches everything, filters ruthlessly, and only reaches out when something actually matters.

The release of Amazon Nova's agentic capabilities made this the right moment to build it.

What We Built

SentinelIQ is an autonomous market intelligence assistant. It continuously ingests signals from financial news, Twitter/X, Reddit, and SEC EDGAR filings, then uses Amazon Nova Lite to decide — completely on its own — whether a signal is worth acting on.

The key word is autonomous. We don't tell Nova what to do step by step. We give it a set of tools and a raw market signal, and it figures out what to investigate. It might run sentiment analysis first, check whether the anomaly score is high enough, verify the source credibility, search for similar historical events, and then either compose an alert or silently drop the signal. Most signals get dropped. That selectivity is what makes the alerts actually meaningful.

When an alert fires, it reaches users in real time via WebSocket and a rich HTML email — complete with a TradingView chart and an analysis of the company's latest SEC filings, both generated by Nova Act browser automation.

How We Built It

The backend is a fully async FastAPI application backed by PostgreSQL and Redis. The core of the system is the agent orchestrator, which implements a true agentic loop using the Bedrock Converse API with tool-calling. Nova Lite receives a structured prompt describing the signal and a set of 6 tools — sentiment analysis, anomaly detection, credibility scoring, historical similarity search, user targeting, and alert composition — then iterates through up to 10 rounds of tool calls until it reaches a decision.

The ML layer uses FinBERT for financial sentiment classification and scikit-learn's IsolationForest for anomaly detection against volume z-scores and price changes. Historical similarity search is powered by FAISS with Nova Multimodal Embeddings.

The most technically interesting piece is the SEC EDGAR integration. Rather than just screenshotting a filing list — which tells you nothing — we use Nova Act to navigate into each individual filing document. Nova Act opens the SEC EDGAR page, extracts the top 3 filings, then for each one navigates through the documents index, finds the primary .htm document, opens it, and reads the content. Nova Lite then structures the raw extraction into key facts, sentiment, and an impact summary. These filing cards appear in both the alert email and the Market page in the UI.

The frontend is React 18 with TypeScript, Tailwind CSS, and TanStack Query, deployed on AWS Amplify. The backend runs as a Docker container on AWS App Runner, with PostgreSQL hosted on Supabase and Redis on Upstash.

Challenges We Faced

Nova Act's API surface is minimal by design. The act() method only accepts a plain string instruction — no Pydantic response models, no structured output. Our initial implementation passed response_model= as a kwarg, which failed immediately. We had to shift to embedding the desired JSON structure directly in the natural language instruction and parsing result.response manually with regex and json.loads(). This actually led to a more robust implementation since we added proper fallback parsing for malformed responses.

Nova Lite's tool-calling can produce malformed tool-use sequences under certain conditions, causing a ModelErrorException from the Converse API. We handled this with a single retry that drops the last assistant turn from the message history before retrying, which resolved it without breaking the agentic loop.

Multi-step browser navigation with Nova Act requires careful instruction design. The EDGAR flow involves three separate page navigations — filing list, documents index, primary document — and each act() call needs to be precise enough that Nova knows exactly what URL or content to return. Getting this reliable took significant iteration.

Keeping the demo compelling without sacrificing authenticity. We built a full mock mode (MOCK_MODE=true) that deterministically simulates Nova's agentic decisions so the system works end-to-end without any API keys. But we also needed the real mode to behave identically. The solution was making each tool implementation dual-mode — the same interface, different backends — so the orchestrator code is identical in both cases.

What We Learned

Giving an AI model tools and letting it reason is genuinely different from chaining it through a fixed pipeline. The orchestrator code became dramatically simpler once we stopped thinking about sequences and started thinking about capabilities. Nova decides the sequence. We just need to implement the tools faithfully and trust the model.

Nova Act occupies a unique niche: it can do things that are impossible with a REST API — navigating dynamic pages, reading rendered content, handling redirects and authentication flows. The SEC EDGAR integration would be a multi-week scraping project without it. With Nova Act it was hours.

We also learned that selectivity is a feature, not a limitation. An alert system that fires constantly is worse than useless. Building in the explicit decision to drop most signals — and making Nova responsible for that decision rather than a hardcoded threshold — was the right call.

Note:

The demo video runs Nova Act in headed mode — with the browser visible — to make the agentic browsing behavior observable to judges. In the deployed version, Nova Act runs in headless mode (configured via NOVA_ACT_HEADLESS=true in the environment), which is appropriate for a server environment with no display. The toggle is a single config flag; the browser automation logic is
identical in both modes.

Live Link:

https://dev.d298cyp4lj4l0k.amplifyapp.com/

What's Next

  • Portfolio impact analysis — when an alert fires, calculate the direct exposure across a user's holdings
  • Cross-ticker correlation — detect when a signal for one stock implies movement in correlated names
  • Adaptive sensitivity — let Nova learn each user's response patterns and calibrate alert frequency accordingly
  • Options flow integration — unusual options activity is often the earliest signal of a major move

Built With

Share this project:

Updates