О проекте
Команда: sxd
Кейс HackAlem.ai: Спецтрек — Astana Innovations
Стадия: Рабочий MVP
Задача кейса: «Аким на 5 часов»: городской симулятор, распределяющий бюджет по 5 направлениям и 5 районам
Суть
Городской стратегический симулятор для Астаны: официальная двухлетняя симуляция 5 инициатив, сравнение стратегий, долгосрочный сценарный слой и три AI-агента.
Как устроено
Официальные валидация, симуляция и скоринг выполняются детерминированно в TypeScript. Strategy Agent переводит цель на естественном языке (например, «Green Growth») в валидный набор из 5 инициатив. Future Research Agent собирает долгосрочные факторы через OpenAI Search или Tavily. Analysis Agent объясняет результаты, сравнивает стратегии и отвечает на вопросы. Долгосрочная модель отделена от официальной и стартует из её финального состояния. Next.js API routes: simulate, strategy, analyze, research, outlook, copilot.
Ключевые решения
- multi-agent (Strategy/Future Research/Analysis)
- web research
- deterministic simulator
- long-term scenario model
- sensitivity analysis
Особенности
Официальная симуляция на 2 года строго отделена от долгосрочного сценарного слоя с внешними факторами. Strategy Agent превращает цели на естественном языке в валидный план. Без ключей работает локальный fallback.
Стек
Next.js · TypeScript · Tailwind CSS · shadcn/ui · Recharts · pnpm · GitHub Actions
Модели
OpenAI · OpenAI Search · Tavily
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-99ae8f4c-sxd.
README
README.md██████╗ █████╗ ██████╗ ███████╗██╗ ██████╗ ██╗ ██╗████████╗
██╔════╝ ██╔══██╗██╔══██╗██╔════╝██║██╔════╝ ██║ ██║╚══██╔══╝
█████╗ ███████║██████╔╝███████╗██║██║ ███╗███████║ ██║
██╔══╝ ██╔══██║██╔══██╗╚════██║██║██║ ██║██╔══██║ ██║
██║ ██║ ██║██║ ██║███████║██║╚██████╔╝██║ ██║ ██║
╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝
Future Akim Strategy & Impact Governance Tool
ASTANA · KAZAKHSTAN
FARSIGHT
Future Akim Strategy & Impact Governance Tool
FARSIGHT is an AI-powered urban strategy simulator for Astana.
The main goal is to provide a clear short-term view first, then allow users to explore the same strategy over a longer horizon. The optional long-term layer extends the two-year result into scenario planning under different assumptions and external pressures. It is not presented as an exact forecast. This connects naturally with the Kazakhstan-2050 planning horizon and the idea of evaluating today’s decisions from a longer strategic perspective.
FARSIGHT allows users to compare different strategies side by side, ask why one scenario performs better than another, explore trade-offs between districts and sectors, and request suggestions on how a strategy could be improved. Users can also ask follow-up questions about calculated results and examine how changing individual initiatives affects the overall outcome.
FARSIGHT uses three AI agents.
The Strategy Agent turns natural-language goals such as “Green Growth” or “Industrial-Mobility First” into a valid set of five initiatives.
The Future Research Agent gathers long-term factors such as population growth, water stress, transport demand, infrastructure aging and climate pressure.
The Analysis Agent explains results, compares strategies, highlights trade-offs, answers questions about the simulation and suggests possible improvements.
All official numerical results are calculated by deterministic code, not by the LLM. The long-term scenario model is kept separate from the official two-year simulation and starts from its final state.
The project is built with Next.js, TypeScript, Tailwind CSS, shadcn/ui and Recharts. AI functionality uses OpenAI models and optional web research through OpenAI Search or Tavily. The official simulation, validation and scoring layers run locally and deterministically.
Requirements:
- Node.js 24+
- pnpm 11.25.0
Run locally:
pnpm install --frozen-lockfile
pnpm dev
Optional AI and live research settings are documented in .env.example. The application can still run without API keys using local fallback behavior.
Verify the project:
pnpm test
pnpm typecheck
pnpm build
Авторы коммитов
История коммитов
- 2026-09-23 17:32Fix ASCII art formatting in README.mdsxd147
- 2026-09-23 17:28docs: align README with project requirementssxd147
- 2026-09-23 17:25Merge remote-tracking branch 'origin/main'Daniil Aniskin
- 2026-09-23 17:22Update README.mdsxd147
- 2026-09-23 17:18Prepare GitHub project configuration and finalize FARSIGHT updatesDaniil Aniskin
- 2026-09-23 17:15Update README.mdsxd147
- 2026-09-23 17:14Correctsxd147
- 2026-09-23 17:12docs: simplify FARSIGHT READMEsxd147
Все коммиты (15)
- 2026-09-23 16:30Update FARSIGHT workflows, research integration, UI and documentationDaniil Aniskin
- 2026-09-23 15:50Merge existing GitHub history and preserve project documentationDaniil Aniskin
- 2026-09-23 15:50Preserve GitHub project overview and correct verification endpointDaniil Aniskin
- 2026-09-23 15:49Initial FARSIGHT application with documentation and GitHub CIDaniil Aniskin
- 2026-09-23 14:15docs: replace README architecture diagramsxd147
- 2026-09-23 14:07docs: refine FARSIGHT README and future outlooksxd147
- 2026-09-23 13:43docs: add FARSIGHT project READMEsxd147
Структура репозитория (118 файлов)
.editorconfig .env.example .gitattributes .github/ISSUE_TEMPLATE/bug_report.md .github/ISSUE_TEMPLATE/feature_request.md .github/pull_request_template.md .github/workflows/ci.yml .gitignore .nvmrc CONTRIBUTING.md README.md components.json docs/ACCEPTANCE-FOLLOWUP.md docs/FUTURE-OUTLOOK-AUDIT.md docs/FUTURE_RESEARCH.md docs/HACKALEM-AUDIT.md docs/INTEGRATION-REVIEW.md docs/LONG_TERM_MODEL.md docs/PROJECT_OVERVIEW.md docs/README.md docs/future-outlook-audit-results.json docs/live-outlook-result.json docs/live-research-results.json docs/live-research-source-checks.json docs/live-research.md next-env.d.ts next.config.mjs package.json pnpm-lock.yaml postcss.config.mjs public/images/astana-hero.png scripts/integration-failure-proxy.mjs scripts/verify-live-research.mjs src/app/api/analyze/route.ts src/app/api/copilot/route.ts src/app/api/outlook/route.ts src/app/api/research/route.ts src/app/api/simulate/route.ts src/app/api/strategy/route.ts src/app/globals.css src/app/layout.tsx src/app/page.tsx src/assets/fonts/geist-latin.woff2 src/assets/fonts/geist-mono-latin.woff2 src/components/AnalysisPanel.tsx src/components/CategoryMetric.tsx src/components/ChatSidebar.tsx src/components/ComparisonPicker.tsx src/components/DecisionEditor.tsx src/components/DistrictComparison.tsx src/components/FarsightWorkspace.tsx src/components/ImpactCharts.tsx src/components/MetricCard.tsx src/components/OfficialSimulation.tsx src/components/ScenarioRiskCard.tsx src/components/ScoreCard.tsx src/components/StrategyCard.tsx src/components/TrajectoryChart.tsx src/components/ui/button.tsx src/components/ui/card.tsx src/components/ui/utils.ts src/data/districts.ts src/data/immutable.ts src/data/index.ts src/data/interactions.ts src/data/long-term-assumptions.ts src/data/long-term-sensitivity-results.json src/data/measures.ts src/data/rules.ts src/data/strategy-presets.ts src/lib/agents/analysis.ts src/lib/agents/answer.ts src/lib/agents/copilot.ts src/lib/agents/future-research.ts src/lib/agents/future-search.ts src/lib/agents/model.ts src/lib/agents/openai-search.ts src/lib/agents/strategy.ts src/lib/ai-integration.test.ts src/lib/analysis.test.ts src/lib/answer.test.ts src/lib/api.test.ts src/lib/api.ts src/lib/architecture-api.test.ts src/lib/comparison-intent.test.ts src/lib/comparison-intent.ts src/lib/copilot.test.ts src/lib/future-research.test.ts src/lib/integration.test.ts src/lib/integration.ts src/lib/manual-strategy.test.ts src/lib/manual-strategy.ts src/lib/official-dataset.test.ts src/lib/official-workflow.test.ts src/lib/official-workflow.ts src/lib/official.test.ts src/lib/official.ts src/lib/openai-search.test.ts src/lib/outlook-audit.test.ts src/lib/outlook-sensitivity.test.ts src/lib/outlook.test.ts src/lib/outlook.ts src/lib/product.test.ts src/lib/request-session.ts src/lib/scoring.test.ts src/lib/scoring.ts src/lib/simulator.test.ts src/lib/simulator.ts src/lib/strategy-agent.test.ts src/lib/strategy-presets.test.ts src/lib/strategy-presets.ts src/lib/validator.test.ts src/lib/validator.ts src/types/api.ts src/types/index.ts src/types/outlook.ts src/types/product.ts tsconfig.json
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.