Meeting Assistant for a Hong Kong Property Brokerage
Designed and built a clickable meeting assistant for a Hong Kong commercial property brokerage: it transcribes brokers' meetings and calls in Cantonese, English and Mandarin, proposes CRM changes as a field-level diff with evidence from the transcript, flags likely duplicate contacts, and writes nothing to Salesforce until the agent approves.
Most of our work is under NDA. Per agreement, we can share the work but not the company details - all names and identifying information shown here have been changed.
Inbox, meetings list, meeting detail with audio player and transcript, review and approve, and duplicates. Every meeting that has finished processing opens its own transcript and review.
The Tai Hang Trading meeting mixes Cantonese, English and Mandarin (58%, 38% and 4%), with the language shown on every speaker turn and evidence lines highlighted.
Each proposed change carries a confidence chip. Rows under 60% start unticked, and fields set to never overwrite, such as a mobile number already in the CRM, go in as a note only.
Meetings from mobile recordings, Teams, Zoom and uploads, 12 duplicate cases, 7 staff users in 3 teams, 6 tasks, 2 failed CRM writes and a 23-district picklist in English and Chinese.
Stonecutter Lane's 140 or so agents meet occupiers in taxis, lift lobbies and meeting rooms, and their notes lived in their heads, WhatsApp chats and phone notes apps. Management's own review found fewer than half of occupier meetings had a CRM activity logged within a week, requirement fields were blank on most active occupier records, and the same person often existed three times under different spellings of their English and Chinese names.
Kaito turns a recorded meeting or a Teams or Zoom call into proposed CRM updates: people, company, the occupier's requirement, tasks and a meeting note. The agent reviews each change as a diff against the current Salesforce record, with the quoted transcript lines behind it, settles likely duplicates, and approves, edits or rejects line by line. The CRM stays the system of record.
A Hong Kong brokerage meeting switches between Cantonese, English and Mandarin, quotes space in gross or saleable square feet, and names people in English, Chinese and romanised forms. An extracted value is a guess until a person confirms it, and the PDPO expects personal data to be accurate.
Agents and clients code-switch mid-sentence: a size said in English, districts in Cantonese, a board update in Mandarin. Districts such as 鰂魚涌 have to land on the firm's picklist value Quarry Bay, and the area basis must be recorded as said, never assumed.
Contacts carry an English name, a Chinese name and a romanised Chinese name. Duplicate detection has to compare all three plus mobile and email, and it must never merge records on its own: merges happen in the CRM by the research team.
A recording, its transcript and the contacts extracted from it are personal data. By the firm's policy agents announce recording at the start of every meeting, no extracted contact is ever added to a marketing list, and Kaito records which providers processed each recording.
The CRM is the system of record. A field edited in Salesforce since Kaito read it, a phone number already present or a validation rule can all block a write, and each one has to return to the agent instead of failing silently.
Mapped 7 roles from agent and team head to the data protection officer and the meeting counterparty, 28 screens across the mobile app, the web app and 2 public notice pages, and the data model for recordings, transcripts, extracted items, contact matches, change sets, field mappings and privacy requests. Wrote down the rules the design follows: the PDPO and its data protection principles, Part 6A on direct marketing, the PCPD's AI model framework, the Estate Agents Ordinance and Hong Kong market practice on area and rent.
Built 5 key web screens on a production dashboard kit: the inbox with review age colours, processing pipeline and failed CRM writes, the meetings list with status filters, meeting detail with waveform, bookmarks and a transcript by speaker turn, the review screen with field-level diff, evidence panel and duplicate choice, and the duplicates queue with a side-by-side match panel. Approvals, rejections, retries and duplicate decisions update local state.
Speech-to-text for Cantonese, English and Mandarin (such as Azure AI Speech), a language model for extraction and email drafts, Salesforce or HubSpot writes with a conflict check just before writing, Microsoft Graph and Zoom for call recordings, calendar and mailbox drafts, Entra ID sign-in and hosting in a Hong Kong region. Plus the mobile recorder that works offline, bulk approval, field mapping, privacy requests, retention jobs and an append-only audit log.
Each CRM record that would change gets its own section, with the current value struck through beside the proposed one, the change type and a confidence chip. The footer counts the changes selected and records affected before anything is written.
Selecting a row shows the quoted transcript lines with their timestamp and the reason the value was chosen, such as a client saying "around nine thousand feet, maybe ten". The activity note logs the summary and next steps, never the full transcript.
A likely match shows on the contact section with Use existing or Create new, and the duplicates queue compares candidates side by side with the fields that matched and the CRM owner. Kaito never merges; merges happen in Salesforce.
Meetings that failed processing show the reason with Retry or Reprocess with language, and approved changes the CRM rejected show the CRM's message with Fix and retry. Reviews turn amber after 24 hours and red after 72.

Designed and built a clickable document processing platform for a Rotterdam freight forwarder and customs representative: it classifies commercial invoices, packing lists, bills of lading, air waybills and certificates of origin, extracts each field with a confidence score, checks it against business rules and sends only the uncertain fields to a person in a side-by-side review workspace.

Designed and built a clickable back-office agent for a Dubai mainland distributor: it reads the AP and vendor mailboxes, matches invoices to POs and goods receipts, checks UAE tax invoice fields, drafts replies and posts to the ERP, while people approve by amount, see every tool call and handle every bank detail change themselves.
Enterprise Software Engineering - Human + AI
Contact Us
© 2026 - Copyright. All Rights reserved Oceanlab
Location
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
Enterprise Software Engineering - Human + AI
Contact Us
Locations
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
© 2026 - Copyright. All Rights reserved Oceanlab