// the find
juanjuandog/FinSight-AI
AI equity research agent with resilient workflows, Redis Lua single-flight, pgvector RAG, versioned reports, evidence tracing, and RAG evaluation.
FinSight is a Spring Boot backend that wraps an LLM-based equity research workflow around A-share Chinese stocks. It is aimed at backend engineers who want a reference implementation of production-grade patterns — idempotent task queues, Redis lease/fencing, pgvector retrieval, versioned AI reports — rather than anyone who needs a working research product.
The workflow concurrency model is well thought out: Redis Lua single-flight leases with fencing tokens prevent the split-brain duplicate execution problem that most hobbyist workflow engines ignore. The dual-repository pattern (in-memory default, JDBC behind Spring profiles) lets the app run in an interview or demo context without Docker, which is practically useful. Report versioning is tied to a `dataSnapshotHash`, so stale AI conclusions aren't served when underlying financials change — that's the right invariant. The evaluation layer (RAG hit rate, hallucination risk, conclusion consistency) is more than decoration; having regression cases baked into the repo means you can actually tell if a retrieval change broke something.
The AI layer is almost entirely a deterministic stub: without a running Ollama instance, every 'AI analysis' is a rule-based fallback that returns `aiGenerated=false`. The README buries this, but it means the pgvector and RAG machinery mostly exercises itself against fake embeddings (384-dim deterministic vectors) rather than real ones. The data is also A-share specific with hardcoded symbols like `600519` (Kweichow Moutai) and Chinese-language query examples, so adapting it to any other market means ripping out the Eastmoney/Sina data clients and the stock universe sync. The FastAPI sidecar is a thin wrapper that mostly proxies to Ollama — it adds a deployment dependency without adding much abstraction value over calling Ollama directly.