[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"i-lucide:sun":3,"i-lucide:menu":8,"i-lucide:mail":10,"i-lucide:phone":12,"i-lucide:calendar":14,"i-lucide:map-pin":16,"work-rentiq":18,"i-lucide:layout-dashboard":62,"i-lucide:smartphone":64,"i-lucide:building-2":66,"i-lucide:file-text":68,"i-lucide:wrench":70,"i-lucide:check":72},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"4\"\u002F>\u003Cpath d=\"M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32l1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"\u002F>\u003Crect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233a14 14 0 0 0 6.392 6.384\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":15},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M8 2v4m8-4v4\"\u002F>\u003Crect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\"\u002F>\u003Cpath d=\"M3 10h18\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":17},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\"\u002F>\u003Ccircle cx=\"12\" cy=\"10\" r=\"3\"\u002F>\u003C\u002Fg>",{"slug":19,"title":20,"client":21,"category":22,"summary":23,"problem":24,"solution":25,"features":26,"architecture":35,"statusNote":51,"stack":52,"url":59,"status":60,"productSlug":19,"order":61},"rentiq","rentiQ","Kimcard Technologies","Property management SaaS","Our own product. A property management platform for Kenyan landlords and agents, built around automatic M-Pesa rent reconciliation.","Kenya is a nation of renters, and the business of managing those rentals still runs on spreadsheets, notebooks, and WhatsApp threads. Rent arrives as a stream of M-Pesa messages: partial payments, a relative paying from a different number, no account reference. Matching that money to tenants at month-end takes days, and it is where revenue quietly leaks. Without a live ledger, arrears surface weeks after they start. Tenants dispute balances and nobody can produce a clean statement on demand. Meanwhile KRA is pushing on rental income and eTIMS, the Data Protection Act sets rules for tenant records, and a growing share of Kenyan property is owned from abroad by people managing it through relatives and phone calls with no verifiable view of the money.","We built rentiQ as a system of record for rental money and everything attached to it. Payments arrive either automatically through the client's own M-Pesa Paybill or by hand from a caretaker with a cash box, and both go through one allocation engine that applies them to the right invoices in the right order, flags anything ambiguous for a two-click resolution, and leaves an audit trail. Around that core sit the operations of a rental business: buildings and units, lease lifecycles, maintenance tickets, staff roles and permissions, a tenant portal, and a reporting suite written for the Kenyan market first.",[27,28,29,30,31,32,33,34],"Automatic M-Pesa reconciliation, C2B and STK push, into the client's own Paybill","Manual payment recording for cash, bank, and offline M-Pesa","Smart allocation with a suspense queue for anything ambiguous","Instant SMS and email receipts","Buildings, units, tenants, and the full lease lifecycle","Aged arrears, rent roll, owner statements, and a KRA rental income summary","Maintenance tickets with photos, assignment, and cost tracking","Role-based access down to per-building caretaker scoping",[36,39,42,45,48],{"title":37,"body":38},"One allocation engine, whatever the money came in as","A Daraja callback and a caretaker typing in a cash payment land in the same place. Both are recorded as a payment against a tenant, then applied to outstanding invoices in a defined order, so the arrears figure has one derivation rather than one per collection method. Building two paths here is the decision that eventually gives a client two different answers to the same question.",{"title":40,"body":41},"The messy payments are the product","Exact payments are easy. rentiQ is built for the rest: partials, overpayments, a wrong or missing account reference, a relative paying from their own number, and Safaricom retrying a callback we have already seen. Nothing is guessed. Anything the engine cannot place with confidence goes to a suspense queue for a human to resolve in two clicks, and every allocation can be traced and reversed cleanly.",{"title":43,"body":44},"The client's Paybill, never ours","Rent flows into each client's own M-Pesa Paybill. We are never in the payment path and we never hold anybody's money, which removes an entire class of trust, float, and licensing problem. Each client's Daraja credentials are stored encrypted and scoped to them, and a guided wizard turns Safaricom's go-live process into an assisted setup rather than a week of forms.",{"title":46,"body":47},"History imported, so the reports mean something on day one","Most tools in this market start a client at zero, which makes every report meaningless for the first year. An import wizard ingests the spreadsheets a landlord already keeps: units, tenants, leases, and past payments. A client can see twelve months of arrears, collections, and occupancy in their first session, which is also how they find out whether the system agrees with their own numbers.",{"title":49,"body":50},"Built for the compliance the market is moving towards","KRA-oriented rental income reporting and eTIMS-ready invoicing are in the data model rather than bolted on, because a report you cannot produce is a report you will be asked for. The platform is registered with the ODPC, tenant data is hosted in Kenya, and data-subject rights are product features rather than a policy page.","Live and in early access. Onboarding is one managing company at a time, deliberately: the reconciliation engine only earns trust by being right about somebody's actual rent, and that is a conversation rather than a signup queue. Web and mobile run on one backend. The outcome numbers that would look good here (days saved at month-end, share of payments auto-matched) are not published yet, because none of them belongs to us until a pilot client has checked them and agreed we can. It is our own money funding it, so it ships when it is right.",[53,54,55,56,57,58],"Laravel","Vue 3","Vuetify","PostgreSQL","M-Pesa Daraja","Multi-tenant","https:\u002F\u002Frentiq.kimcardtechnologies.com","live",1,{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":63},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"7\" height=\"9\" x=\"3\" y=\"3\" rx=\"1\"\u002F>\u003Crect width=\"7\" height=\"5\" x=\"14\" y=\"3\" rx=\"1\"\u002F>\u003Crect width=\"7\" height=\"9\" x=\"14\" y=\"12\" rx=\"1\"\u002F>\u003Crect width=\"7\" height=\"5\" x=\"3\" y=\"16\" rx=\"1\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":65},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"14\" height=\"20\" x=\"5\" y=\"2\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M12 18h.01\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":67},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M10 12h4m-4-4h4m0 13v-3a2 2 0 0 0-4 0v3\"\u002F>\u003Cpath d=\"M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2\"\u002F>\u003Cpath d=\"M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":69},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"\u002F>\u003Cpath d=\"M14 2v5a1 1 0 0 0 1 1h5M10 9H8m8 4H8m8 4H8\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":71},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":73},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 6L9 17l-5-5\"\u002F>"]