AAYMA
RU
Войти

FARSIGHT

Городской стратегический симулятор для Астаны: официальная двухлетняя симуляция 5 инициатив, сравнение стратегий, долгосрочный сценарный слой и три…

Рабочий MVP
Команда «sxd» 3💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: 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
Звёзды
⭐ 0
Форки
0
Язык
TypeScript
Последний push
в прошлом месяце
Коммиты
15
Авторы
1
Файлы
118
Ветки
1

Авторы коммитов

sxd147 15

История коммитов

  • 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 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.