--- name: kouchou-ai-architecture description: "Project architecture, core services, key directories, data flow, and tech stack for the kouchou-ai repository. Use when you need an overview of components, pipeline structure, or where code lives." --- # Kouchou-AI Architecture ## Overview Use this skill to orient yourself in the repo and explain how the system fits together. Remember that Kouchou-AI is a broadlistening system for the Digital Democracy 2030 project, adapted from Talk to the City for Japanese municipal use cases. ## Core services and ports - Locate the API (FastAPI) in `apps/api/` and expect it on port 8000. - Locate the public viewer (Next.js) in `apps/public-viewer/` and expect it on port 3000. - Locate the admin app (Next.js) in `apps/admin/` and expect it on port 4000. - Locate the static site builder in `apps/static-site-builder/` and expect it on port 3200. - Expect the optional Ollama service on port 11434 for local LLM usage. - Expect Ollama to use the ELYZA-JP model by default. ## Key directories - Use `packages/analysis-core/src/analysis_core/` for analysis steps, orchestration, services, and workflows. - Use `apps/api/broadlistening/pipeline/` for runtime configs, inputs, and outputs managed by the API. - Use `apps/public-viewer/components/charts/` and `apps/public-viewer/components/report/` for report UI and charts. - Use `apps/admin/app/create/` and `apps/admin/app/create/hooks/` for report creation UI. - Use `apps/api/src/routers/`, `apps/api/src/services/`, `apps/api/src/schemas/`, and `apps/api/src/repositories/` for API layers. ## Pipeline architecture and report flow - Follow the flow: CSV upload -> API validation -> pipeline run -> hierarchical output -> public viewer. - Start API-side orchestration at `apps/api/src/services/report_launcher.py`. - Start CLI-side orchestration at `packages/analysis-core/src/analysis_core/__main__.py` and `packages/analysis-core/src/analysis_core/orchestrator.py`. - Expect API-managed outputs under `apps/api/broadlistening/pipeline/outputs/{report_id}/`. ## Technology stack - Treat the backend as FastAPI + OpenAI GPT models + sentence-transformers + pandas/numpy/scipy. - Treat the frontend as Next.js 15 + TypeScript + Chakra UI + Plotly.js. - Use pytest, Jest, and Playwright for testing. - Use Biome (frontend) and Ruff (backend) for linting and formatting. - Expect Azure Blob Storage support for storage needs. - Use Lefthook for Git hooks (pre-push) as configured in `lefthook.yml`. ## Configuration pointers - Check `biome.json`, `apps/api/pyproject.toml`, `lefthook.yml`, and `.env.example` for core config. ## Operational notes - Require an OpenAI API key or local LLM for full pipeline runs. - Validate LLM output for bias before acting on results. - Back up report data before upgrading or applying breaking changes. - Expect breaking changes between versions.