Cuối tháng, hai vợ chồng ngồi lại hỏi nhau tiền đi đâu hết. Mỗi người một tài khoản ngân hàng, tiền mặt đi chợ không ai ghi, khoản gửi bố mẹ thì người nhớ người quên. Cộng lại sao kê mất cả buổi tối mà vẫn lệch.
Quản lý chi tiêu gia đình khó không phải vì thiếu app. Khó vì ghi một khoản tốn công hơn quên nó, và vì sổ của vợ với sổ của chồng không bao giờ là một.
Tôi muốn nhà mình có một cuốn sổ hai vợ chồng cùng ghi, gõ nhanh như nhắn tin. Nên tôi dựng nó bằng Claude, trong 4 ngày, rồi mở mã nguồn. Bài này kể nó làm được gì, tôi giao việc cho Claude ra sao, những chỗ đã vấp, và cách nhà bạn tự cài miễn phí.
Vì sao quản lý chi tiêu gia đình hay bỏ dở giữa chừng
Tôi thấy ba lý do lặp lại, với cả app lẫn file Excel:
- Nhập lâu. Mở app, chọn ví, chọn danh mục, gõ số, chỉnh ngày. Năm thao tác cho một ly cà phê. Vài tuần sau thì bỏ.
- Thiết kế cho một người. Mỗi người một app, một sổ. Cuối tháng muốn xem cả nhà tiêu bao nhiêu lại phải cộng tay.
- Dữ liệu nằm ở chỗ người khác. Thu nhập, khoản vay, tiền biếu bố mẹ là thông tin nhạy cảm. Để nó trên máy chủ của một app miễn phí, bạn không biết ai đọc được.
Sổ thu chi gia đình tôi dựng: 4 nguyên tắc
Trước khi nhờ Claude viết dòng code nào, tôi chốt bốn nguyên tắc. Mọi quyết định sau đó đều đem ra so với bốn dòng này.
| Nguyên tắc | Làm thế nào |
|---|---|
| Cả nhà một sổ | Ai ghi cũng vào chung một database. Báo cáo vẫn tách được theo từng người. |
| Ghi như nhắn tin | Một ô gõ trên web app cài lên màn hình điện thoại, hoặc nhắn cho Telegram bot. Hai cách, cùng một cú pháp. |
| Cá nhân hoá | Danh mục, từ khoá, icon, ngân sách, khoản nợ sửa như sửa bảng tính. Gõ sai danh mục thì bấm chọn lại, bot tự học từ khoá đó. |
| Riêng tư | Mỗi nhà tự cài lên tài khoản Vercel và Supabase của chính mình. Không có máy chủ trung gian, vào app phải có mật khẩu gia đình. |
Cú pháp chỉ có một mẫu: [ngày] Thu/Chi + nội dung + số tiền. Bỏ ngày thì tính là hôm nay, bỏ Thu/Chi thì tính là Chi.
| Bạn gõ | App hiểu |
|---|---|
chi ăn sáng 50k | Chi 50.000đ · Ăn ngoài · hôm nay |
15/3 chi đi chợ 350k | Chi 350.000đ · Đi chợ · ngày 15/3 |
hôm qua chi xăng 100k #mẹ | Chi 100.000đ · Đi lại · hôm qua · ghi cho Mẹ |
chi sữa bỉm 450k #bé | Chi 450.000đ · Con cái · ghi cho Bé |
trả nợ ngân hàng 10tr | Trả nợ gốc 10.000.000đ · khoản vay ngân hàng |
Số tiền gõ kiểu nào cũng được: 50k, 1tr2, 2,5tr, 1.500.000. Danh mục được đoán theo từ khoá: app bỏ dấu cả câu bạn gõ lẫn danh sách từ khoá, danh mục nào khớp nhiều từ nhất thì thắng. Không khớp gì thì vào mục Khác, bạn bấm icon đúng một lần, lần sau app tự nhận.
Bạn gõ thử ngay được ở trang công cụ. Ô gõ thử ở đó chạy đúng bộ hiểu câu của bản đầy đủ, ngay trên trình duyệt của bạn.
Cuối tháng nhìn vào đâu
Ghi chỉ là nửa đầu. Nửa sau là những con số giúp cả nhà quyết định tháng sau tiêu khác đi thế nào:
- Ngân sách theo danh mục: xanh khi ổn, vàng khi chạm 80%, đỏ khi vượt. Ghi xong một khoản, bot báo luôn danh mục đó đã dùng bao nhiêu phần trăm.
- Khoản theo năm như bảo hiểm, du lịch tính trên ngân sách năm, để tháng đóng tiền không làm "vỡ" ngân sách tháng.
- So với trung bình 3 tháng trước: biết tháng này chi nhiều hơn hay ít hơn thường lệ, không phải đoán.
- Dự phóng cuối tháng: giữa tháng đã biết nếu cứ tiêu thế này thì cuối tháng ra bao nhiêu.
- Nợ và tài sản ròng: dư nợ từng khoản, dự kiến ngày hết nợ, gợi ý trả thêm khoản lãi cao nhất trước. Khoản trả lãi một lần mỗi năm được nhắc trước hạn 30, 14, 7 ngày.
- Bot nhắn lúc 21h khi có danh mục sắp vượt, khi cả ngày chưa ai ghi khoản nào, và gửi tổng kết vào ngày 1 hằng tháng.
Bản của nhà tôi đang chạy riêng trên tài khoản của tôi. Bản mở mã nguồn giống hệt về tính năng, chỉ thay dữ liệu bằng một gia đình mẫu "Bố, Mẹ, Bé" để bạn sửa lại cho nhà mình.
Tôi giao việc cho Claude thế nào
Tôi không viết spec kỹ thuật. Tin nhắn đầu tiên gửi Claude giống như kể cho một người bạn làm IT nghe nhà mình cần gì:
Tôi muốn dựng 1 tool quản lý thu chi của gia đình gồm 2 vợ chồng, 1 con nhỏ. Tôi muốn kiểm soát chính xác tiền vào tiền ra của cả 2 vợ chồng từng tháng và theo dõi month over month. Nhu cầu chính: - Ghi log thu/chi/vay/trả nợ - Report theo danh mục, so sánh với budget từng mục để cảnh báo - So sánh baseline trung bình 3 tháng gần nhất - Thống kê report theo năm Tech stack: Google Sheet + Apps Script làm UI nhập thu chi, xem report. Chat trực tiếp với Telegram bot để ghi từ điện thoại. Hãy cùng tôi thiết kế stack và code.
Đây đúng là cách tôi viết trong quy tắc Spec Mode: có sẵn bối cảnh, mục tiêu và danh sách nhu cầu rồi mới đưa cho AI, không bắt nó nghĩ hộ từ trang trắng. Từ đó tool đi qua ba vòng:
| Vòng | Tôi nói | Claude làm |
|---|---|---|
| 1 | Mô tả nhu cầu như trên, gửi danh mục và ngân sách của nhà mình | Thiết kế sheet, viết Apps Script, Telegram bot, báo cáo tháng/năm, tự chạy test với dữ liệu mẫu |
| 2 | "Giao diện nhập dài quá, chuyển thành 1 ô nhập rồi tự nhận ra được không" | Đổi form nhiều ô thành một ô gõ và lưới icon danh mục, dùng chung bộ hiểu câu với bot |
| 3 | "Chuyển luôn sang Vercel, dùng Supabase bản miễn phí" | Dựng lại phần máy chủ và database, thêm đăng nhập mật khẩu gia đình, chạy thử toàn bộ trước khi deploy |
Phần tôi giữ cho mình: quyết định cái gì cần và cái gì bỏ, cung cấp số liệu thật, và tự bấm duyệt mỗi bước đụng tới tài khoản thật như đăng nhập Vercel hay tạo bot. Nếu bạn mới làm quen, bài Claude AI là gì có phần bắt đầu từ con số không.
Những chỗ tôi đã vấp
Dự phóng cuối tháng bị thổi phồng. Cách tính đầu tiên chia đều theo ngày: đã chi bao nhiêu, nhân lên cho đủ 30 ngày. Nhưng học phí, tiền nhà, tiền biếu bố mẹ đều trả đầu tháng, nên giữa tháng con số dự phóng đã cao hơn thực tế rất nhiều và báo động sai. Trên bộ dữ liệu mẫu, ngày 22 dự phóng ra 32,8 triệu trong khi thực tế gần 26 triệu. Cách sửa: dự phóng bằng số đã chi cộng với phần mà các tháng trước thường chi sau ngày hôm nay.
Bỏ dấu thì từ khoá đụng nhau. Để gõ không dấu vẫn hiểu, app so khớp sau khi bỏ dấu. Hậu quả: "mua sữa cho con" bị xếp vào Đi chợ vì "cho" trùng "chợ". "Trà sữa" suýt thành trả nợ vì "trà" trùng "trả". Cách sửa là dùng cụm dài như "đi chợ", và chỉ hiểu "trả" là trả nợ khi đi kèm "nợ", "lãi" hoặc "gốc".
Apps Script hợp để thử, khó để dùng mỗi ngày. Mỗi lần bấm chờ vài giây, trên cùng luôn có dải cảnh báo của Google, và Telegram nhận phản hồi lạ từ Apps Script nên có lúc gửi lại cùng một tin. Bản đầu phải tự chống ghi trùng. Chuyển sang Vercel và Supabase thì hết cả ba chuyện.
Mở mã nguồn phải rà dữ liệu cá nhân hai lần. Lần đầu xoá tên người thân, số nợ, tên miền. Lần rà thứ hai vẫn còn: vài mức ngân sách ví dụ, hai mức lãi suất ví dụ và một ngày ví dụ trùng đúng số thật của nhà tôi. Từng con số không lộ gì, ghép lại thì ra một bức tranh. Thói quen này giống hệt công cụ "Đưa cái này lên AI có sao không": kiểm trước khi đưa ra ngoài, không kiểm sau.
Nhà bạn muốn dùng: khoảng 30 phút, 0 đồng
Mã nguồn để công khai trên GitHub: family-budget-vn, giấy phép MIT. Cài theo thứ tự:
- Fork repo về tài khoản GitHub của bạn.
- Tạo project Supabase, chạy hai file SQL có sẵn để tạo bảng và dữ liệu mẫu.
- Nhắn @BotFather trên Telegram để tạo bot, nếu muốn ghi bằng bot.
- Vào Vercel, import repo, điền 7 biến môi trường theo bảng trong hướng dẫn, bấm Deploy.
- Mở app, bấm Kết nối Telegram, mỗi người nhắn
/idcho bot rồi dán vào danh sách thành viên.
Không cần biết code. Hướng dẫn có từng màn hình và bảng xử lý lỗi thường gặp. Muốn xem trước khi cài thì chạy trên máy với dữ liệu mẫu, không cần tài khoản nào.
Tool này không hợp với ai muốn tự động nhập sao kê ngân hàng. Nó cố tình bắt bạn gõ tay, vì chính mấy giây gõ tay là lúc cả nhà nhìn thấy mình vừa tiêu gì. Muốn tự động hoá các việc khác trong nhà hay ở công ty, bài tự động hoá công việc bằng AI có cách chọn việc nên làm trước.
Câu hỏi thường gặp
Không biết code có tự cài được không?
Được. Toàn bộ là bấm trên giao diện web của GitHub, Supabase, Vercel và dán vài dòng cấu hình theo hướng dẫn. Phần dễ vướng nhất là lấy đúng khoá bí mật của Supabase, hướng dẫn có ảnh chỉ đúng chỗ.
Dữ liệu chi tiêu của nhà tôi có ai xem được không?
Dữ liệu nằm trong project Supabase của chính bạn, database khoá để trình duyệt không đọc thẳng được, chỉ phần máy chủ trên Vercel của bạn mới đọc ghi được. Vào app cần mật khẩu gia đình, bot chỉ trả lời người có tên trong danh sách thành viên.
Không dùng Telegram thì có dùng được không?
Được. Bỏ trống phần cấu hình bot là app chỉ chạy bằng web, cài lên màn hình điện thoại như app thật. Phần nhắc tự động lúc 21h sẽ tắt theo.
Một người hoặc nhà ba bốn người có dùng được không?
Được. Danh sách thành viên thêm bớt tuỳ ý, mỗi người có Telegram ID trong danh sách là ghi được bằng bot, báo cáo tự tách theo từng người.