Finly is a voice-first, multi-agent investment advisory product prototype built for Lotus Hacks 2026 (March 20-22, 2026, Vietnam).
- Stage: Hackathon MVP with active post-hackathon iteration.
- Product shape: educational, simulation-first investment guidance.
- Safety boundary: no real-money trading and no regulated financial-advice claims.
Finly provides beginner investors a conversational advisory experience powered by a 4-agent team:
- Portfolio Manager
- Market Analyst
- Risk Assessor
- Researcher
The current direction combines:
- Voice and chat-first interactions
- Transparent agent role outputs
- Guided onboarding and investor education
- Mock portfolio simulation and engagement loops
Source of truth PRD: docs/product-specs/finly-agentic-investment-team-prd.md.
This repository is both:
- The working codebase for Finly apps/services
- A harness-style, agent-friendly engineering system with versioned docs and mechanical checks
The harness enforces that decisions live in-repo instead of chat history.
Current runtime shape:
apps/mobile(React Native + Expo): mobile client and UX prototypeapps/backend(Python + FastAPI): application-facing API for user data, reports, chat history, and agent proxyingapps/agents(Python + FastAPI): stateless multi-agent runtime for investment analysis pipelines
Request flow:
Mobile -> Backend API -> Agent Runtime
Architecture source of truth: ARCHITECTURE.md.
Top-level directories and their roles:
apps/: deployable app surfaces (mobile,backend,agents)docs/: product specs, design decisions, quality/reliability/security posture, plansdocs/exec-plans/: active and completed execution plansscripts/: mechanical checks and bootstrap toolingtemplates/: deterministic stack templates.agents/skills/: repository-local skills for repeatable workflows
- Node.js
>=20 pnpm- Python
>=3.10 just(optional but recommended)
just setupThis installs mobile dependencies and prepares virtual environments for:
apps/agentsapps/backend
cp apps/mobile/.env.example apps/mobile/.envFor real devices, set EXPO_PUBLIC_API_URL to your machine LAN IP (not localhost).
Run all services together:
just devOr run each service independently:
just mobile # Expo mobile app
just backend # Backend API (default :8000)
just agent # Agent server (default :8001)Copy each .env.example to .env in its app directory before running.
EXPO_PUBLIC_API_URL(defaulthttp://localhost:8000)EXPO_PUBLIC_MARKET_DATA_URL(optional; falls back to API URL)EXPO_PUBLIC_AGENT_SERVER_URL(reserved for future direct runtime wiring)
FINLY_BACKEND_HOST,FINLY_BACKEND_PORTFINLY_AGENT_SERVER_URL(defaulthttp://localhost:8001)OPENROUTER_API_KEY,OPENROUTER_BASE_URLFINLY_INTAKE_MODEL,FINLY_MEMORY_MODELOPENAI_API_KEY(voice fallback)ELEVENLABS_API_KEY,ELEVENLABS_VOICE_IDFINLY_DEFAULT_TICKERFINLY_DB_PATH
FINLY_AGENTS_HOST,FINLY_AGENT_SERVER_PORTOPENROUTER_API_KEY,OPENROUTER_BASE_URL,OPENAI_API_KEYFINLY_AGENT_MODEL,FINLY_PANEL_MODEL- Data vendor selectors (
FINLY_VENDOR_*) - Optional provider keys (
FINANCIAL_DATASETS_API_KEY,EXA_API_KEY) - Debate controls (
FINLY_MAX_DEBATE_ROUNDS,FINLY_MAX_RISK_ROUNDS)
just setup # install dependencies for mobile + python apps
just dev # run mobile + backend + agents together
just lint # lint/typecheck checks across mobile + python apps
just format # auto-format TS + Python codeBackend key endpoints:
GET /healthzGET /v1/modelsPOST /v1/chat/completionsPOST /api/onboardingPOST /api/report/generatePOST /api/report/chatGET /api/market-data
Agent runtime key endpoints:
GET /healthzPOST /agent/run-pipelinePOST /agent/panel-chat
Start here for repository context:
AGENTS.mdREADME.md(this file)ARCHITECTURE.mddocs/design-docs/harness-template.mddocs/design-docs/core-beliefs.mddocs/PLANS.md
System-of-record docs:
- Product intent:
docs/product-specs/ - Design decisions:
docs/design-docs/ - Reliability constraints:
docs/RELIABILITY.md - Security constraints:
docs/SECURITY.md - Quality posture:
docs/QUALITY_SCORE.md - Active implementation plans:
docs/exec-plans/active/
For non-trivial work:
- Start from
docs/exec-plans/TEMPLATE.md - Create a plan in
docs/exec-plans/active/ - Track progress and decisions in the plan
- Move completed plans to
docs/exec-plans/completed/
- Run harness readiness validation:
python3 scripts/check_harness_readiness.py- Scaffold supported stacks from repo-owned templates:
python3 scripts/bootstrap_codebase.py --helpCurrently supported bootstrap stacks:
mobile-react-nativeweb-nextjs
Railway deployment guide (backend + agent service topology):
DEPLOY.md
Contributions are welcome, especially around:
- mobile UX polish and reliability
- agent orchestration quality and explainability
- backend API consistency and observability
- docs quality and harness enforcement
Before opening a PR:
- Follow the execution-plan workflow for non-trivial changes
- Run
just lint - Run
python3 scripts/check_harness_readiness.pyif docs/repo structure changed - Update docs when behavior or constraints change
- This project is still in MVP/hackathon maturity
- No formal OSS governance files yet (for example:
LICENSE,CONTRIBUTING.md,CODE_OF_CONDUCT.md) - Security and reliability posture is documented but still evolving
Finly is an educational prototype. It does not execute trades and should not be treated as regulated financial advice.