Cubbi, a property management platform, aimed to automate and simplify how users handle property-related bills. The goal was to enable users to forward their bills to Cubbi, which would then extract relevant details, generate structured digital records, and initiate payment processing—all without manual input.
Ruby on Rails
ReactJS
Google Cloud
Overview
As a full-stack developer, I led the design and implementation of a robust end-to-end solution to support automated billing workflows, focusing on reliability, accuracy, and seamless integration with Cubbi’s existing systems.
Key features
Process Billing Documents via Email: To make the process effortless for users, I implemented an email-based ingestion system. Each Cubbi user receives a unique invoice email (e.g., vinh.bui12345@invoice.cubbi.com.au) that service providers can send bills to directly.
Document Classification: Documents are first classified to identify valid billing documents versus contracts, receipts, or other non-relevant files. This was achieved by training a custom Document AI classification model.
Data Extraction via OCR: For recognized billing documents, I used Document AI’s OCR model to extract key information like billing amount, due date, property address, etc. To ensure high accuracy, labels and descriptions were crafted carefully (e.g., instructing the model to locate the “due date” near headers or summaries using keywords like “pay by,” “due on,” etc.).
Orchestrating Asynchronous Workflows: Document AI processes billing documents asynchronously and outputs results to Google Cloud Storage. To manage this, I created an event-driven architecture where Google Cloud Functions notify Cubbi’s backend when classification or extraction is complete.
Generating Structured Digital Records: With the extracted data, I built a new system that generates structured digital records for automated payment processing. These records are intelligently linked to the user’s property with the correct category, making them easier to track (the category is determined based on the content of the billing document and the ChatGPT API).
What I’ve learned
This project enhanced my technical and problem-solving abilities in several areas:
Email Infrastructure: Worked with Mandrill and configured DNS records for email routing via AWS.
Cloud Services: Gained hands-on experience with Google Cloud Platform — specifically Cloud Storage, Cloud Functions, and Document AI.
AI & Machine Learning: Built and trained classification models, designed OCR-based data extraction workflows, and integrated LLMs (ChatGPT) for intelligent categorization.
System Design: Designed scalable and fault-tolerant workflows to automate document intake and processing end-to-end.