№ 09
P-016 (VHR-16 / MoveInMate) — MoveInMate là nền tảng hỗ trợ cư dân chung cư hoàn tất thủ tục nhận nhà, tra cứu thông tin qua trợ lý AI Mina và gửi yêu cầu cho BQL xử lý.
Người mới nhận nhà thường phải tự tìm hiểu mình cần hoàn tất những thủ tục nào. Đăng ký cư dân, làm thẻ xe, đăng ký internet, khai báo thành viên hộ, đăng ký thi công hay xin trích xuất camera — mỗi việc lại có một biểu mẫu, một đầu mối và một điều kiện khác nhau. Nội quy nằm rải rác trong các file PDF, còn menu trong ứng dụng lại liệt kê chung mọi dịch vụ cho mọi người.
Không có hệ thống nào trả lời được ba câu hỏi quan trọng của một hộ cụ thể:
Hồ sơ của tôi còn thiếu gì? Bước tiếp theo là gì? Ban quản lý đã phê duyệt chưa?
Với ban quản lý, đây cũng là cùng một vấn đề: mỗi ngày phải trả lời lặp lại những câu hỏi giống nhau, tiếp nhận hồ sơ thiếu thông tin rồi hỏi lại, và không thể theo dõi tiến độ onboarding của cả toà nhà nếu phải mở từng hồ sơ riêng lẻ.
Đây không chỉ là bài toán chatbot. Chatbot có thể trả lời một câu hỏi, nhưng không thể tự đưa một hồ sơ đi xuyên suốt quy trình, cũng không biết khi nào cần dừng lại để con người quyết định.
Nhóm đã trình diễn MoveInMate trực tiếp cho Trưởng Ban Quản lý tại Chung cư Viện Bỏng, Triều Khúc, Hà Nội, nơi đang vận hành hơn 400 căn hộ. Buổi trao đổi cho thấy bài toán cấp thiết nhất không phải là bổ sung thêm một tính năng AI, mà là giúp BQL đưa đúng thông tin đến đúng căn hộ với ít thao tác hơn.
Hiện BQL đã có nhóm Zalo chung, nhưng thông báo dễ bị trôi hoặc bị cư dân bỏ qua. Khi cần nhắc phí dịch vụ, nhân sự phải lọc các căn chưa đóng, tìm số điện thoại và gửi riêng cho từng người. Trưởng BQL mô tả nhu cầu thực tế:
“Nhà nào chưa đóng phí thì thông báo riêng.”
“Phải thuận tiện... nếu được thì thẳng luôn trong Zalo.”
Phản hồi cũng chỉ ra rào cản chuyển đổi tại các chung cư đã vận hành nhiều năm: cư dân ngại cài thêm ứng dụng, còn nhân sự BQL cần giao diện đơn giản và dễ học. Vì vậy, hướng pilot được đề xuất là giữ nguyên lõi MoveInMate và BQL Console, đồng thời dùng Zalo OA làm kênh gửi thông báo và Zalo Mini App làm giao diện để cư dân mở MoveInMate trực tiếp trong Zalo. Phần tích hợp này là phạm vi cần kiểm chứng trong pilot, chưa phải tính năng đã hoàn tất trong MVP hiện tại.
Buổi trao đổi đồng thời cung cấp một tín hiệu thương mại ban đầu: BQL cho biết gói đang sử dụng có chi phí khoảng 10 triệu đồng mỗi tháng và đề cập mức 5 triệu đồng mỗi tháng như một ngưỡng cạnh tranh hấp dẫn. Đây là phản hồi trong cuộc họp, không phải mức giá đã được thống nhất.
Từ phản hồi này, nhóm xác định lát cắt pilot rõ ràng: trong bốn tuần, kiểm chứng luồng nhắc phí theo từng căn hộ, đo khả năng gửi đúng người, thời gian thao tác của BQL và số trường hợp phải theo dõi thủ công. Kết quả pilot sẽ quyết định việc mở rộng kênh thông báo và các workflow tiếp theo.
Các câu trích dẫn đã được rút gọn từ biên bản hội thoại để dễ đọc nhưng giữ nguyên ý của người nói.
MoveInMate là nền tảng dành cho cư dân và ban quản lý trong một khu đô thị, với thiết kế dữ liệu sẵn sàng mở rộng cho nhiều khu. Lõi hệ thống gồm ba thành phần, và ranh giới giữa chúng là phần quan trọng nhất.
1. Trả lời có dẫn nguồn — không có nguồn thì không trả lời.
Hệ thống sử dụng RAG trên tập tri thức đã được ban quản lý công bố. Mỗi câu trả lời đều kèm trích dẫn về tài liệu gốc. Khi không tìm được nguồn phù hợp, hệ thống không tự suy đoán mà chuyển sang người thật và ghi lại lý do chuyển tiếp.
2. Thủ tục được quản lý bằng state machine, không phụ thuộc vào một prompt dài.
Luồng đăng ký xe là một máy trạng thái thực sự trong backend: thu thập thông tin qua nhiều lượt, đối chiếu ảnh cà-vẹt, sinh PDF đúng mẫu, chờ cư dân xác nhận rồi mới tạo service request. Nếu cư dân tạm dừng để hỏi việc khác rồi quay lại, hệ thống vẫn giữ đúng bước đang thực hiện.
3. AI chuẩn bị hồ sơ, con người phê duyệt.
AI không tự phê duyệt hành động được bảo vệ. AI chuẩn bị thông tin, cư dân xác nhận, sau đó ban quản lý đưa ra quyết định. Các quyết định đều được ghi nhận bằng status event, audit trail và notification trong ứng dụng. Các kênh gửi thông báo ra ngoài như email hoặc push vẫn là phần mở rộng tiếp theo.
Ba ranh giới này được thực thi ở backend, không chỉ ở giao diện:
Ngữ cảnh cư dân
→ checklist được sinh theo hồ sơ hộ
→ trả lời có dẫn nguồn
→ hành động chỉ chạy sau khi cư dân xác nhận
→ ban quản lý phê duyệt phần cần con người
→ tiến độ, thông báo và audit trail
Phân quyền do server quyết định. Nhân sự BQL của khu khác hoặc tài khoản sai vai trò sẽ bị từ chối trước khi chạm tới tầng service. Hồ sơ của hộ khác cũng được xử lý như hồ sơ không tồn tại để tránh làm lộ dữ liệu hoặc sự tồn tại của hồ sơ đó.
Kiến trúc: FastAPI và Pydantic v2 cho backend, Next.js cho app cư dân và console ban quản lý, Supabase/PostgreSQL cho dữ liệu, LangChain/LangGraph cho tầng agent và OpenTelemetry cho telemetry. Traces, metrics và logs hiện được xuất qua OTLP tới hệ thống observability production.
Hệ thống đang chạy thật và có thể kiểm tra qua các địa chỉ công khai:
| Bề mặt | Địa chỉ |
|---|---|
| App cư dân | https://moveinmate-app-production.up.railway.app |
| Console ban quản lý | https://moveinmate-admin-production.up.railway.app |
| Backend API (Swagger) | https://moveinmate-backend-production.up.railway.app/docs |
Snapshot kiểm thử gần nhất trên main:
backend 3.082 test pass, 28 skipped
console BQL 214 test pass
app cư dân 459 test pass
Frontend admin đã được build production thành công. Cả ba service trên Railway đều đang online, backend health check trả về 200 OK, và /health/telemetry xác nhận OTLP traces, metrics và logs đã sẵn sàng, không ghi nhận lỗi export.
Database production hiện có 54 migration và 8 RPC đã được ghi nhận. Kiểm tra có thể thực hiện bằng:
python scripts/check_migrations.py
Dự án đã hoàn tất Sprint 11 với các phần chính:
Token usage hiện được ghi nhận khi provider trả về dữ liệu sử dụng. Chi phí chỉ được tính khi có đủ thông tin token và đơn giá; trường hợp chưa có dữ liệu sẽ hiển thị rõ là chưa có dữ liệu thay vì điền số giả.
Các giới hạn vẫn cần nói rõ:
sharp/libvips.PENDING_SIGNATURE vẫn là phần nợ kỹ thuật.Ngắn hạn — hoàn thiện cho pilot.
Thực hiện một lượt kiểm thử provisioning email trên production, rà lại các integration test, hoàn thiện notification outbox, tiếp tục ghi nhận token usage và mở rộng các chỉ số như Recall@k, grounded-answer rate, P95 latency và escalation accuracy.
Hoàn tất Phase 1.
Phát hành Android production-signed, kết nối đầy đủ với backend thật, hoàn thiện luồng thành viên hộ, mở rộng các biểu mẫu động thay cho PDF tĩnh và bổ sung thêm workflow ngoài đăng ký xe.
Cùng một lõi, nhiều dịch vụ hơn.
Ngữ cảnh, quy trình và kiểm soát là ba thành phần có thể tái sử dụng. Đặt tiện ích, bảo trì, khách ra vào, thanh toán, bưu kiện và smart home đều có cùng hình dạng bài toán: hiểu ngữ cảnh hộ, chạy đúng quy trình và dừng lại ở nơi cần người phê duyệt.
Từ một khu đô thị đến nền tảng vận hành.
Phân quyền theo khu đã được thực thi ở backend và có kiểm thử cho các trường hợp bị từ chối. Mở rộng sang khu thứ hai là bài toán vận hành và cấu hình nhiều hơn là viết lại toàn bộ hệ thống. Các bước tiếp theo là điều phối đúng bộ phận — lễ tân, an ninh, bảo trì, tài chính — và đo chất lượng liên tục thay vì chỉ đo một lần trong demo.
Mọi con số trong tài liệu này đều có thể kiểm tra lại từ repository, kết quả test, deployment health check và tài liệu sprint. Những phần là giới hạn, ước lượng hoặc kế hoạch tương lai đều được ghi rõ.