00

AI · 2026

Catalyst

Year
2026 – now
Scope
AI · Hackathon
Role
Frontend Engineer
Team
Team of 4
Stack
Next.js, React, TypeScript, Tailwind CSS
Status
Ongoing

A watchlist change investigator for IDX investors: track the change, check the evidence.

A research agent for event-driven IDX investors that traces a material change on a watched stock from its source, through the mechanism, to the business indicator that should move, and ends every case in one research action.

A discretionary, event-driven investor checks the same 10 to 30 stocks every time something material happens. The questions are always the same: what changed, which explanation is strongest, what business impact should become visible, and what evidence would prove the explanation wrong. Answering them means jumping between price charts, broker summaries, filings, news, and commodity prices, and the reasoning that links them lives only in the investor's head.

Read moreShow less

Catalyst puts that ritual in one place. The Dashboard draws a causal map across every watched issuer (source, mechanism, issuer, business impact) and Research & Analysis turns one change into a Research Case with market confirmation, business impact, and review kept in separate sections. Every link carries its exposure, the indicator to look for, alternative explanations, the expected lag, and the condition that would invalidate it. A case ends in one research action: keep researching, monitor an indicator, or dismiss the trigger. An assistant answers questions in the context of the case on screen.

Every figure comes from recorded Sectors API feeds (price, volume, IHSG, foreign flow, broker summary, free float, quarterly financials, news, and filings) and derived values such as beta, sector return, participant concentration, and robust z-scores are computed from those recordings, never typed in by hand. The model writes the interpreting sentences, and each one is verified before it ships: numerals limited to the material it was given, no invented columns, and no trading advice. A rejected draft renders nothing.

User corrections are stored as open hypotheses rather than silently changing the analysis, and lessons from closed cases become proposed rules that take effect only after the user approves them. The AI Learning page shows everything the agent remembers about the user. The app runs on Google Cloud Run, and a scheduled job re-records the Sectors feeds each trading day, rebuilds the bundle, runs the test gate, and deploys only if it passes.

Built by a team of four for Sectors Hackathon 2026, Track 01.

Catalyst case-study cover beside a dashboard that maps sources and mechanisms to watched IDX issuers
Catalyst product flow from market records through material-change signals, causal reasoning, evidence checks, and a research decision

01 / 02

Brief

Problem

When a watched IDX stock moves, the evidence needed to explain it is spread across price data, broker summaries, filings, news, and commodity prices, and the reasoning that connects a trigger to a business indicator is never written down or tested.

Solution

A research workspace that maps each change from source to mechanism to business impact, gives every link an indicator and an invalidating condition, computes every figure from recorded Sectors data, and verifies every model-written sentence before it is shown.

My role

  1. 01

    Built the AI Learning page that shows the user everything the agent remembers about them, including the teach-the-agent flow

  2. 02

    Changed user corrections to be accepted on save instead of waiting in a review queue

  3. 03

    Built the Pantau web-watch review, with accepted findings above the queue and manual mapping behind an Edit action

  4. 04

    Reworked the prediction panel and added its charts

  5. 05

    Stabilised the causal-chain view: steady edges, toggleable selection, and a simpler layout

  6. 06

    Collapsed onboarding into a single step with issuer search and updated the guided tour

  7. 07

    Fixed the P0 and P1 findings from a QA pass across the agent engine, chat follow-ups, typo tolerance, and web-watch checks

Features

  1. 01

    Causal map across every watched issuer: source, mechanism, issuer, and business impact

  2. 02

    Research Cases that separate summary, market confirmation, business impact, and review

  3. 03

    Every causal link carries exposure, the indicator to watch, alternative explanations, lag, and an invalidating condition

  4. 04

    Cause comparison that ranks candidate explanations by relevance against a user-set threshold

  5. 05

    Each case ends in one research action: keep researching, monitor an indicator, or dismiss the trigger

  6. 06

    Context-aware assistant that answers about the case and the panel on screen

  7. 07

    Model-written sentences verified before display, no invented figures and no trading advice

  8. 08

    User corrections kept as open hypotheses, and lessons proposed as rules that apply only after approval

  9. 09

    AI Learning page showing everything the agent remembers about the user

  10. 10

    Web-watch review for macro, commodity, policy, and weather findings before they reach the evidence

  11. 11

    Formula transparency for every derived metric, computed from recorded Sectors data

Architecture

A Next.js application on Google Cloud Run. Sectors API feeds are recorded into a data bundle by a Python build script, and every figure, threshold, and citation is derived from that bundle and a single registry. An agent engine exposes analyze, impact, causal-graph, and chat routes; the model layer talks to one provider at a time, Gemini or an OpenAI-compatible endpoint, and every sentence it writes passes a verifier before rendering. A scheduled Cloud Build job re-records the feeds each trading day, rebuilds the bundle, runs the test gate, and deploys only if it passes.

Front end
Next.js, React, TypeScript, Tailwind CSS, Radix UI, React Flow, Recharts, Zustand
Back end
Next.js Route Handlers, Zod, Python
Data
Google Cloud Storage
Infrastructure
Google Cloud Run, Google Cloud Build, Google Secret Manager, Docker
Tools
Vitest, Playwright, axe-core, pnpm
Integrations
Sectors API, Gemini, DeepSeek

Challenges

  1. 01

    Problem

    Any number or interpretation typed into the source survives a data refresh and silently contradicts the recordings, while tests keep passing.

    Solution

    Made the recordings the only source of figures, kept every threshold in one table with its provenance, and had the model write interpreting sentences at request time, with a test that fails on fabricated figures.

  2. 02

    Problem

    A language model can invent numbers or slip into buy and sell advice, which a research tool for investors cannot show.

    Solution

    Verified every model-written sentence before display (numerals limited to the given material, no invented columns, no advisory language) and rendered nothing when a draft was rejected rather than filling the gap with unsupported prose.

  3. 03

    Problem

    Letting user corrections rewrite the analysis directly would mix opinion into measured data and make the agent's memory opaque.

    Solution

    Stored corrections as open hypotheses, turned lessons into rules that apply only after approval, and built the AI Learning page so the user can see and manage what the agent remembers.

Lessons

  1. 01

    A literal in the source is a claim nobody re-checks; computing every figure from the data keeps the screen honest after each refresh.

  2. 02

    When a model's sentence cannot be verified, showing nothing is better than showing something plausible.

  3. 03

    Memory an agent keeps about a user should be visible to that user and change only with their approval.