Files
flowsight/docs/PLAN.md
T
asepharyana 8c184ccae1 feat: add Citations and WatchlistChat components, integrate with API
- Implemented Citations component to display citation data.
- Created WatchlistDrawer and ChatSidebar components for managing watchlists and AI chat functionality.
- Integrated API calls for watchlist management and chat interactions.
- Updated index.tsx to include new components in the main application layout.
- Added API client in lib/api.ts for structured API interactions.
- Developed Alerts, Dashboard, Portfolio, Routines, Screener, and Report pages with relevant data fetching and UI components.
- Introduced styles in tokens.css for consistent theming across the application.
- Configured TypeScript and Vite for project setup and development.
2026-09-15 12:36:48 +07:00

11 KiB
Raw Blame History

FlowSight — Track 02: Automation & Workflows

One-liner: FlowSight is for Indonesian retail investors who can't monitor the market all day — it automates institutional money-flow tracking and pushes actionable alerts so they never miss what big players are doing.

1. Problem

6M+ retail SID di Indonesia mengambil keputusan dari harga dan rumor. Data yang dipakai institusi — arus broker, foreign flow, insider filings — tersedia lewat Sectors API tapi mentah dan tercecer di 70 endpoint. Tidak ada retail tool yang mengubahnya menjadi rutinitas otomatis: setiap hari investor harus buka app, tarik data manual, dan interpret sendiri. Produk existing (StockPilot, Invezgo, Stockbit) semuanya on-demand: user bertanya, AI menjawab, selesai. Tidak ada yang bekerja saat user tidur.

2. Concept: Autopilot Routines

FlowSight bukan tool yang ditanya — ia rutinitas yang berjalan sendiri. User berlangganan routine sekali, agent mengeksekusinya sesuai jadwal, hasilnya tiba di Telegram/Discord tanpa user membuka app.

Routine bawaan (v1)

  1. Morning Briefing (07:30 WIB) — top 5 akumulasi semalam, foreign flow kemarin, agenda earnings & ex-div minggu ini. Satu digest, langsung kirim.
  2. Accumulation Radar (tiap 30 mnt, 09:00–16:00) — deteksi ≥3 broker net-buy + volume anomali; temuan langsung jadi alert dengan konteks (siapa, berapa, sejak kapan).
  3. Foreign Reversal Watch — outflow 5 hari berbalik inflow: sinyal pembalikan yang hampir tidak pernah terpantau manual.
  4. Insider Tape — setiap ada director/major-holder buy di watchlist, user tahu hari yang sama beserta volumenya vs rata-rata 30 hari.
  5. Earnings Countdown — H-7, H-3, H-1 sebelum laporan kuartalan ticker watchlist, lengkap dengan ekspektasi dari tren 8 kuartal terakhir.
  6. Dividend Calendar — ex-date mendekat + yield proyeksi + histori payout, otomatis dari corporate-actions.
  7. Weekend Review (Sabtu 09:00) — ringkasan mingguan portofolio: apa yang bergerak, kenapa, dan apa yang perlu perhatian minggu depan.

Kenapa ini unik

  • Kompetitor menunggu ditanya. FlowSight bekerja tanpa ditanya.
  • Setiap routine = pipeline nyata (ingest → detect → synthesize → deliver), bukan satu LLM call. Inilah inti Track 02: data Sectors hidup di dalam rutinitas berulang.
  • User membangun kebiasaan lewat produk, bukan lewat usaha: buka Telegram pagi, briefing sudah ada.

3. Verifiable AI (differentiator kedua)

Setiap angka di setiap output menempel ke sumbernya: endpoint Sectors + timestamp snapshot. Contoh: "Foreign inflow Rp 340M/hari (foreign-flow/BBCA, snapshot 12 Sep 16:00 WIB)". User bisa klik dan memverifikasi. Tidak ada klaim tanpa jejak. Ini menjawab masalah terbesar AI finansial: halusinasi angka yang terdengar meyakinkan.

  • Report menyimpan citations[]: setiap section menunjuk ke snapshot ID.
  • Alert menyertakan data mentah ringkas + link ke dashboard detail.
  • Jika data basi (>1 sesi), output menandainya eksplisit sebagai stale.

4. Accuracy Ledger (differentiator ketiga)

Setiap rekomendasi BUY/HOLD/AVOID dicatat dengan tanggal, lalu dievaluasi 30 hari kemudian terhadap actual return. Hasilnya tampil publik per agent di dashboard: "Smart Money Tracker: 68% tepat (47/69 calls)". Bobot agent di synthesizer mengikuti rekam jejak, bukan asumsi. Tidak ada kompetitor IDX yang membuka track record modelnya sendiri.

5. Agent System

7 specialist agents, dieksekusi paralel via goroutine, diorkestrasi scheduler + on-demand.

Agent Input (Sectors API) Output
Smart Money Tracker broker-summary-top, broker-activity-top, foreign-flow Skor -100..+100, fase akumulasi, pemain kunci
Broker Intel broker-registry, broker-activity-by-code, brokers/top Klasifikasi perilaku broker, sinyal rotasi sektor
News Sentiment (Adaptive RAG) news, filings, suspensions Skor sentimen + tren, ringkasan insider, event kunci
Fundamental company/report, quarterly-financials, segments Skor fundamental, valuasi vs peers, grade A–F
Technical daily-transaction, most-traded, top-changes, free-float Sinyal momentum, anomali volume, grade likuiditas
Event Catalyst corporate-actions, quarterly-dates, IPO performance Kalender katalis, skor peluang event
Master Synthesizer 6 output + risk profile + bobot accuracy BUY/HOLD/AVOID + conviction 1–5 + tesis + sizing

Agent features

  1. Watchtower mode — agents jalan tiap 30 menit saat market hours; temuan penting langsung jadi alert.
  2. Cross-signal correlation — confidence naik saat sinyal selaras (fundamental bullish + akumulasi + sentimen naik); conflict flag saat bertentangan (fundamental bagus tapi broker jualan).
  3. Report interrogation — tiap report bisa ditanya follow-up ("kenapa conviction cuma 3?"), jawaban grounding ke data report itu.
  4. Natural-language screener — parameter q= Sectors + filter institusional (broker score, foreign trend, insider buying) yang di-compute sendiri.
  5. Live agent panel — SSE stream status 7 agents + skor real-time di dashboard.

6. Platform Features

  1. Smart Money Dashboard — foreign net flow, tabel akumulasi broker, peta rotasi sektor, activity feed real-time.
  2. Routine Manager — subscribe/unsubscribe routine, atur jadwal + kanal notifikasi per routine, riwayat eksekusi.
  3. Institutional Screener — query builder SQL-like + NL toggle, saved screeners, hasil berperingkat + breakdown sinyal.
  4. Alert Engine — user rules + auto alert → webhook Telegram/Discord.
  5. One-Click Report — research report 7 section, export PDF/HTML/MD/JSON, lengkap dengan citations.
  6. Portfolio Risk — konsentrasi sektor, matriks korelasi, beta vs IHSG.
  7. AI Chat sidebar — context-aware dari watchlist.

7. Architecture (authoritative: docs/ARCHITECTURE.md; stack: docs/TECH-STACK.md)

  • Frontend: SolidJS 1.9 + Vite 6 + TypeScript + typed CSS + Chart.js (SSE streaming, responsive)
  • Backend: Go 1.23 + chi v5 + database/sql (modernc.org/sqlite, pure Go) + goroutine (eksekusi agent paralel)
  • LLM: Plain HTTPS ke endpoint OpenAI-compatible (LLM_BASE_URL); LLM_MODEL_TRIAGE murah + LLM_MODEL_SYNTH kuat
  • Data: Sectors API v2 https://api.sectors.app/v2/, auth Authorization: <key> dari env SECTORS_API_KEY
  • Store: SQLite (stdlib, skema Postgres-compatible) + Redis 7 cache (degradasi in-memory jika kosong)
  • Scheduler: robfig/cron v3 in-process, ingestion tiap 30 min saat market hours + routine harian/mingguan
  • Notify: outbound webhook → Telegram / Discord
  • PDF: gofpdf (pure Go, tanpa system deps); test: go test + httptest (mock upstream Sectors); gate: gofmt + go vet + go test + tsc + vite build

8. Data model

  • snapshots(ticker, date, source, payload) — raw ingestion
  • broker_activity(broker_code, ticker, date, buy, sell, net, lots, freq)
  • foreign_flow(ticker, date, net_inflow)
  • news_items(ticker, date, source, sentiment, confidence, url)
  • filings(ticker, date, holder_type, txn_type, volume)
  • routines(id, user_key, type, schedule, channels, enabled)
  • routine_runs(routine_id, started_at, status, payload_json)
  • alerts(id, user_key, name, rule_json, channels, last_fired)
  • alert_events(alert_id, ticker, date, message, context_json, citations_json)
  • watchlists(user_key, ticker, added_at)
  • reports(id, ticker, generated_at, payload_json, citations_json)
  • agent_accuracy(agent, ticker, prediction, date, resolved, hit)
  • briefings(date, payload_json, citations_json)

9. Backend routes

  • GET /api/flow/summary, GET /api/flow/broker, GET /api/flow/foreign
  • POST /api/screen
  • GET /api/routines, POST /api/routines, PATCH /api/routines/:id, GET /api/routine-runs
  • GET /api/briefing/today
  • GET /api/alerts, POST /api/alerts, DELETE /api/alerts/:id, GET /api/alert-events
  • POST /api/report/:ticker
  • POST /api/watchlist, GET /api/watchlist
  • GET /api/portfolio/risk, GET /api/accuracy
  • POST /api/chat, GET /api/health

10. Frontend pages

  • / Smart Money Dashboard + live agent panel + activity feed
  • /routines Routine Manager (subscribe, jadwal, kanal, riwayat)
  • /screener institutional screener
  • /alerts rule builder + event history
  • /portfolio risk heatmap + correlation + accuracy ledger
  • /report/:ticker report + citations + interrogation scoped ke report
  • Global: watchlist drawer + AI chat sidebar

11. Detection rules v1

  1. Accumulation: ≥3 broker net-buy 5d + volume > 1.5× avg 20d
  2. Foreign reversal: net outflow 5d lalu inflow 1d
  3. Insider spike: director buy > 2× avg 30d
  4. Unusual volume: >3× avg 20d, bukan earnings date
  5. Sector rotation: net broker flow subsector balik arah week-over-week
  6. Suspension watch: suspensi baru di watchlist

12. Sectors endpoints (70 paths — detail: docs/API-REFERENCE.md)

Company core: company/report (8 sections), get-segments, quarterly-financial-dates, financials/quarterly, corporate-actions, shareholders-composition, listing-performance. Universe sweeps: close/ (full-universe, paginated), companies/quarterly-financial-dates (since= incremental). Market: daily, idx-total, index-daily, top-changes, most-traded. Brokers: brokers/ (registry), brokers/top, broker-activity, broker-activity/top, broker-summary, broker-summary/top, foreign-flow. Events: news, filings, suspensions. Subsector: subsector/report (6 sections). Phase 2: SGX (9), KLSE (4), mining (19).

13. 48h timeline

| 0–3 | Setup: repo, API client, DB schema, health | | 3–8 | Ingestion scheduler + snapshots | | 8–14 | 7 agents + cross-signal correlation | | 14–20 | Routine engine (briefing + radar) + webhooks | | 20–26 | Screener + citations pipeline | | 26–32 | Report generator + interrogation | | 32–38 | Portfolio risk + accuracy ledger | | 38–44 | Frontend wiring + SSE live panel | | 44–48 | Polish, demo script, deck |

14. Verification

  • GET /api/health balik last cycle + credits today + scheduler state (verifikasi dalam smoke test)
  • Fixture briefing generate dari seed tanpa empty section + citations lengkap (unit test)
  • Fixture akumulasi → alert event tercatat (rules_test) + webhook ke kanal uji bila token di-env
  • Screener balikin ranked list + breakdown per row (api_test)
  • Report BBCA 7 section terisi dari seed/live + citations, export PDF/HTML/MD/JSON (smoke)
  • Key hanya dari env (SECTORS_API_KEY), v2 paths only (client_test: v1 ditolak sebelum HTTP)
  • Market tutup → demo offline pakai historical replay seed (scripts/demo.sh)

15. Risks

  • Butuh Insider API key sebelum jam 0
  • Rate limit → cache Redis + siklus 30 min, tanpa loop per-ticker agresif
  • v1 mati (410) — pakai v2 saja