О проекте
Команда: VILIS AI
Кейс HackAlem.ai: Спецтрек — Astana Innovations
Стадия: Рабочий MVP
Задача кейса: «Аким на 5 часов»: городской симулятор, распределяющий бюджет по 5 направлениям и 5 районам
Суть
Городской проектный офис и отдельный симулятор бюджета Астаны (/simulator): распределение 100 виртуальных единиц на пять мер по районам с расчётом Astana Quality of Life Score, плюс паспорт проекта с этапами, KPI и рисками.
Как устроено
Все формулы и разбиение бюджета считаются детерминированным TypeScript-кодом (lib/akim: simulation, scoring, qol), языковая модель не используется. Бюджет по этапам делится по шаблону 10/15/40/10/20/5%. Ответы на вопросы по паспорту собираются из правил. Сценарии сохраняются в localStorage (до 20), паспорт экспортируется в JSON и печатается в PDF.
Ключевые решения
- детерминированная симуляция
- rule-based advisor
- Quality of Life scoring
Особенности
Проект сознательно работает без AI и внешних API: весь расчёт идёт в коде, а в README честно сказано, что KPI и данные синтетические. Весь код залит тремя коммитами за 20 минут в конце дня.
Стек
TypeScript · React · Next.js · Vite · shadcn/ui · Tailwind CSS · Drizzle · Vitest
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-7c0507c8-vilis-ai.
README
README.mdAqmolaCouncil — городской проектный офис
AKIM — городской проектный офис и симулятор бюджета Астаны для планирования инициатив и оценки их влияния на качество жизни.
Интерфейс
Ниже — снимки действующего интерфейса. Интерактивный сайт можно запустить по инструкции после предпросмотра.
Проектный офис

Симулятор городского бюджета

Запуск в Windows
Запуск в Windows
Требуется Node.js 22.13+. Дважды щёлкните Start-AKIM.bat: при первом запуске он установит зависимости, поднимет локальный сервер и откроет приложение. Для первой установки зависимостей нужны npm и интернет. Чтобы остановить сервер, нажмите Ctrl+C в окне сервера.
Если предпочитаете терминал:
cd akim
node scripts/run-framework.mjs dev
Откройте адрес, напечатанный сервером (по умолчанию http://localhost:5173). Внешние ключи и платные API для работы не нужны.
Что работает
- Проектный офис: бюджеты в ₸, пять городских направлений, районы, KPI, базовый уровень, срок и объём пилота.
- Паспорт решения: распределение бюджета по этапам с точной суммой, последовательный план, роли, технологии, контрольные KPI, риски и go/no-go-условия.
- Вопросы по проекту: локальный детерминированный справочник отвечает по паспорту на вопросы о цели, бюджете, запуске, технологиях, рисках и проверке.
- Сохранение до 20 сценариев в локальном браузере; экспорт паспорта в JSON и печать в PDF.
- Отдельный симулятор городского бюджета по адресу
/simulator: фиксированные 100 виртуальных единиц, ровно пять мер, районы и расчёт учебного Astana Quality of Life Score.
Метод и ограничения
Формулы и разбиение суммы выполняются кодом, не языковой моделью. Ответы на вопросы собираются из правил и профиля проекта; приложение не подключено к ИИ, городским базам, закупкам или подрядчикам. Это позволяет запускать демо без API-ключа и не отправлять проектные данные наружу.
Распределение по этапам (10/15/40/10/20/5%) — стартовый шаблон, а не рыночная смета. KPI в стартовом демо синтетические; продукт не прогнозирует и не гарантирует эффект. Перед инвестиционным решением нужны измеренные исходные данные, коммерческие предложения, оценка эксплуатации, ИБ и профильная экспертиза. Данные симулятора Astana Quality of Life также синтетические и не являются официальной оценкой города.
Проверки
cd akim
node node_modules/vitest/vitest.mjs run
node node_modules/typescript/bin/tsc --noEmit
node scripts/run-framework.mjs build
Авторы коммитов
История коммитов
- 2026-09-23 17:46Shorten project descriptionstvoyvzlomchok-maker
- 2026-09-23 17:41Add product screenshots to READMEtvoyvzlomchok-maker
- 2026-09-23 17:26Add AKIM city budgeting simulatortvoyvzlomchok-maker
Структура репозитория (132 файлов)
.gitignore README.md Start-AKIM.bat akim/.env.example akim/.gitignore akim/.npmrc akim/README.md akim/app/ain.css akim/app/api/analyze/route.ts akim/app/chatgpt-auth.ts akim/app/globals.css akim/app/layout.tsx akim/app/page.tsx akim/app/project-office.css akim/app/simulator-office.css akim/app/simulator/page.tsx akim/cloudflare-env.d.ts akim/components.json akim/components/akim/app.tsx akim/components/akim/city-map.tsx akim/components/akim/controls.tsx akim/components/akim/council-simulator.tsx akim/components/akim/project-desk.tsx akim/components/akim/results.tsx akim/components/ui/accordion.tsx akim/components/ui/alert-dialog.tsx akim/components/ui/alert.tsx akim/components/ui/aspect-ratio.tsx akim/components/ui/attachment.tsx akim/components/ui/avatar.tsx akim/components/ui/badge.tsx akim/components/ui/breadcrumb.tsx akim/components/ui/bubble.tsx akim/components/ui/button-group.tsx akim/components/ui/button.tsx akim/components/ui/calendar.tsx akim/components/ui/card.tsx akim/components/ui/carousel.tsx akim/components/ui/chart.tsx akim/components/ui/checkbox.tsx akim/components/ui/collapsible.tsx akim/components/ui/combobox.tsx akim/components/ui/command.tsx akim/components/ui/context-menu.tsx akim/components/ui/dialog.tsx akim/components/ui/direction.tsx akim/components/ui/drawer.tsx akim/components/ui/dropdown-menu.tsx akim/components/ui/empty.tsx akim/components/ui/field.tsx akim/components/ui/form.tsx akim/components/ui/hover-card.tsx akim/components/ui/input-group.tsx akim/components/ui/input-otp.tsx akim/components/ui/input.tsx akim/components/ui/item.tsx akim/components/ui/kbd.tsx akim/components/ui/label.tsx akim/components/ui/marker.tsx akim/components/ui/menubar.tsx akim/components/ui/message-scroller.tsx akim/components/ui/message.tsx akim/components/ui/native-select.tsx akim/components/ui/navigation-menu.tsx akim/components/ui/pagination.tsx akim/components/ui/popover.tsx akim/components/ui/progress.tsx akim/components/ui/radio-group.tsx akim/components/ui/resizable.tsx akim/components/ui/scroll-area.tsx akim/components/ui/select.tsx akim/components/ui/separator.tsx akim/components/ui/sheet.tsx akim/components/ui/sidebar.tsx akim/components/ui/skeleton.tsx akim/components/ui/slider.tsx akim/components/ui/sonner.tsx akim/components/ui/spinner.tsx akim/components/ui/switch.tsx akim/components/ui/table.tsx akim/components/ui/tabs.tsx akim/components/ui/textarea.tsx akim/components/ui/toggle-group.tsx akim/components/ui/toggle.tsx akim/components/ui/tooltip.tsx akim/db/index.ts akim/db/schema.ts akim/drizzle.config.ts akim/drizzle/meta/_journal.json akim/eslint.config.mjs akim/examples/d1/app/api/notes/route.ts akim/examples/d1/db/schema.ts akim/hooks/use-mobile.ts akim/lib/akim/advisor.ts akim/lib/akim/alternatives.ts akim/lib/akim/catalog.ts akim/lib/akim/data.ts akim/lib/akim/interactions.ts akim/lib/akim/project-planner.ts akim/lib/akim/provider.ts akim/lib/akim/qol.ts akim/lib/akim/scoring.ts akim/lib/akim/simulation.ts akim/lib/akim/storage.ts akim/lib/akim/validation.ts akim/lib/utils.ts akim/next.config.ts akim/package-lock.json akim/package.json akim/postcss.config.mjs akim/public/favicon.svg akim/public/file.svg akim/public/globe.svg akim/public/window.svg akim/scripts/build-verified.sh akim/scripts/execution-profile.mjs akim/scripts/install-ci.mjs akim/scripts/install-ci.sh akim/scripts/install-pnpm.sh akim/scripts/npm-install.mjs akim/scripts/pnpm-install.mjs akim/scripts/run-framework.mjs akim/scripts/sites-env.mjs akim/scripts/sites-env.sh akim/tests/akim.test.ts akim/tests/project-planner.test.ts akim/tests/qol.test.ts akim/tsconfig.json akim/vite.config.ts akim/vitest.config.ts docs/screenshots/budget-simulator.png docs/screenshots/project-office.png
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.