Разработка AI-системы автоматизации выдачи разрешений и лицензий
Разрешительная деятельность государственных органов — один из самых бюрократически нагруженных процессов. Строительные разрешения, лицензии на медицинскую деятельность, торговые разрешения — каждый тип имеет свой регламент, пакет документов, сроки и основания для отказа. AI-система автоматизирует проверку комплектности, соответствия требованиям и формирование решений.
Архитектура разрешительной системы
Процесс выдачи разрешения состоит из нескольких этапов, каждый из которых автоматизируется по-разному:
Приём и регистрация заявления — проверка корректности заявителя (ЕСИА), регистрация с присвоением номера, расчёт срока рассмотрения по административному регламенту.
Проверка комплектности — AI проверяет наличие и соответствие каждого документа из перечня, предусмотренного регламентом. Автоматическое уведомление заявителя о недостающих документах.
Межведомственные запросы — автоматическое формирование и отправка запросов в СМЭВ к смежным ведомствам (ФНС, Росреестр, МВД, СРО и др.).
Правовая экспертиза — проверка соответствия заявления требованиям НПА, выявление оснований для отказа.
Формирование решения — проект разрешения или мотивированного отказа.
Проверка комплектности документов
class DocumentRequirement(BaseModel):
doc_type: str # тип документа
is_mandatory: bool
conditions: list[str] # при каких условиях требуется
validity_period_days: int | None # срок действия документа
acceptable_formats: list[str] # форматы (pdf, jpg, ...)
issuing_authority: str | None # кем выдаётся
class CompletenessCheck(BaseModel):
is_complete: bool
missing_documents: list[str]
expired_documents: list[str] # документы с истёкшим сроком
suspicious_documents: list[str] # подозрительные / нечитаемые
can_obtain_via_smev: list[str] # что можно запросить межведомственно
def check_completeness(
application: Application,
uploaded_docs: list[UploadedDocument],
regulation: PermitRegulation
) -> CompletenessCheck:
results = []
for req in regulation.required_documents:
# Проверяем условие применимости
if not req.applies_to(application):
continue
# Ищем документ среди загруженных
matched = find_matching_document(uploaded_docs, req)
if matched:
# Проверяем срок действия, подлинность (QR-код, подпись)
validity = check_document_validity(matched, req)
results.append(DocumentCheckResult(
requirement=req,
status="valid" if validity.ok else "expired",
document=matched
))
elif req.is_mandatory and not req.can_be_obtained_via_smev():
results.append(DocumentCheckResult(
requirement=req,
status="missing"
))
return CompletenessCheck.from_results(results)
Извлечение данных из документов
Заявители загружают документы в разных форматах: PDF-сканы, фото, электронные документы с КЭП. Задачи извлечения:
Правоустанавливающие документы на помещение: извлечение адреса, площади, назначения, собственника — для сверки с данными Росреестра.
Медицинские лицензии и сертификаты: специализация, срок действия, ФИО специалиста — для проверки по реестру медицинских работников.
Выписки из ЕГРЮЛ/ЕГРИП: дата регистрации, ОКВЭД, учредители — автоматически запрашиваются из ФНС через СМЭВ, извлечение из ответа.
Технические документы (проекты, СТУ): структурированное извлечение технических параметров для сравнения с нормативами.
class BuildingPermitData(BaseModel):
applicant_inn: str
object_address: str
land_plot_cadastral: str # кадастровый номер участка
construction_type: str # новое строительство / реконструкция
object_category: str # жилой / нежилой / линейный
total_area: float | None
floors: int | None
project_organization: str # проектная организация
project_sro_number: str | None # номер допуска СРО
Правовая экспертиза и основания для отказа
Для каждого типа разрешения система поддерживает базу знаний оснований для отказа (из закона и административного регламента). LLM проверяет заявление по каждому основанию:
def legal_review(application: Application, docs: list) -> LegalReviewResult:
grounds_for_refusal = load_refusal_grounds(application.permit_type)
checks = []
for ground in grounds_for_refusal:
result = llm.parse(
f"""Проверь, есть ли основание для отказа:
Основание: {ground.description}
Нормативная ссылка: {ground.legal_reference}
Данные заявления: {application.to_text()}
Документы: {summarize_docs(docs)}
Ответь: основание применимо (да/нет/требует уточнения) и объясни.""",
response_format=GroundCheck
)
checks.append(result)
refusals = [c for c in checks if c.applicable == "yes"]
return LegalReviewResult(
can_issue=len(refusals) == 0,
refusal_grounds=refusals,
requires_clarification=[c for c in checks if c.applicable == "requires_clarification"],
draft_decision=generate_decision_draft(application, refusals)
)
Межведомственное взаимодействие
СМЭВ-запросы формируются автоматически на основе данных из заявления. Система знает, какие сведения можно запросить для каждого типа разрешения:
| Тип разрешения | Источник | Запрашиваемые сведения |
|---|---|---|
| Строительное | Росреестр | Права на земельный участок, обременения |
| Строительное | ФНС | Данные о юридическом лице |
| Медицинская лицензия | Минздрав | Реестр медицинских работников |
| Розничная торговля | Роспотребнадзор | Предписания, нарушения |
| Алкогольная лицензия | ФСРАР | История лицензий, нарушения |
Уведомления и личный кабинет заявителя
Заявитель в реальном времени отслеживает статус: «Документы приняты», «Направлены межведомственные запросы», «На экспертизе», «Решение принято». Все уведомления — через ЕПГУ или email/SMS. Автоматическое уведомление о необходимости донести документы с детальным указанием, что именно и в какой форме.
Сроки внедрения
Месяц 1–2: Разработка модуля проверки комплектности для одного типа разрешения (пилот)
Месяц 3–4: Интеграция с СМЭВ (Росреестр, ФНС), личный кабинет заявителя
Месяц 5–6: Модуль правовой экспертизы, генерация проектов решений
Месяц 7–8: Подключение второго типа разрешений, административная аналитика
Месяц 9–10: Полный охват типов разрешений ведомства, интеграция с ЕПГУ







