A log of progress for the week of October 13, 2025.

If Week 7 was about building our first AI-powered dialogue—letting a tenant “talk” to their contract—Week 8 was about building the essential human connection. An application isn’t just a tool for data; it’s a platform for people. This week, we undertook one of the most intense development sprints of the project so far, landing a staggering 52 commits and adding over 10,000 lines of code to build a complete, bi-directional messaging system and fundamentally mature the entire platform.

The Main Event: Building the Communications Hub

 

The primary focus of this week was building a robust messaging system from the ground up. This was a full-stack effort that included:

  • Backend Foundation: We implemented a new messages table in the database, complete with logic for conversation threading. This was all wired up through new GraphQL resolvers and Lambda functions for sending and listing messages.

  • Frontend UI: We built out the complete user interface for both landlords and tenants. This culminated in a “Gmail-style” redesign of the inbox, featuring a full-width layout, sortable conversations, and a “mark as read” functionality.

  • Smart Notifications: To make the feature truly useful, we integrated an unread message notification badge directly into the main header. A small envelope icon now lights up, ensuring users never miss an important conversation.

This feature was complex, requiring a dozen commits just to perfect the multi-tenancy and authorization logic, ensuring that only the correct tenant and landlord can communicate.

Connecting the Dots: Linking Documents to People

Our Ejari processing feature (from Week 5) also received a critical update. It’s no longer enough to just extract data from a contract; we must connect that contract to a person. We’ve now made tenant selection a mandatory step when saving a processed Ejari. To aid in this, we also exposed the tenant’s Emirates ID in the UI, making identification simple and error-free. This change is the connective tissue that links our document-processing AI to our new human messaging system.

Building for Scale and Stability

While new features are exciting, a high-velocity week like this demands an equal focus on stability and future-proofing.

  1. Event-Driven Architecture: We formally designed our Webhooks system, complete with an Architecture Decision Record (ADR). This lays the foundation for our app to “talk” to other applications in the future, enabling things like SMS notifications or accounting integrations.

  2. Database Surgery: We performed a complex but necessary “database migration reconciliation.” In plain English, our database’s version history had become corrupted. We built comprehensive tooling to diagnose and repair the chain, ensuring our application’s data foundation is stable, secure, and ready for future scaling.

  3. Fleshing out the App: Finally, we had one of our largest single commits of the project, adding nearly 4,000 lines of code to implement and complete all the missing dashboard pages. We also added a new ejari_raw table to store unprocessed contracts, creating a backlog for future batch processing.

This week was a marathon. We didn’t just add one feature; we added an entire communication layer, fortified our database, and laid the groundwork for an event-driven future. The platform has evolved from a simple data tool into a true, interactive ecosystem.

Leave a Reply

Your email address will not be published. Required fields are marked *