ProductTechnicalGrowth
One workspace for advisers, from ad click to signed client
- Organisation
- HappySeal · financial advisory operations
- Role
- Product architecture and delivery
- Period
- Singapore
A command centre for advisory teams: acquisition, routing, appointment fulfilment and lifecycle messaging in one product instead of five disconnected tools.
At a glance
- Situation
- A financial advisory business in Singapore running paid acquisition into a manual process: leads arrived from three ad platforms and stalled in intake, unowned.
- Stakes
- Ad spend was buying form-fills nobody followed up, not clients. The funnel leaked at the exact step between arrival and a conversation.
- My role
- Product architecture and delivery, shaping the product around the operating loop rather than the org chart.
- Constraints
- Three ad platforms with different lead formats, a small advisory team with existing habits, and five disconnected tools already in use.
- What changed
- Acquisition, assignment, appointments and lifecycle messaging consolidated into one operating layer
- Every funnel stage from intake to converted has a named owner
- Conversions post back to the ad platforms, so they optimise toward real clients rather than form completions
- Read this if
- Leads enter your funnel and quietly die between marketing and sales.
- Meta, Google and TikTok into one intake
- 3 platformsMeta, Google and TikTok into one intake
- intake through to converted, each owned
- 5 stagesintake through to converted, each owned
- conversions posted back to the ad platform
- Two-wayconversions posted back to the ad platform
How the system actually worked

Scroll the figure sideways to read it, or turn your phone.
- Three platforms, one scored intake. The goal-selection question on the public form qualifies the lead and routes it before anyone has spoken to them.
- Assignment is a gate because the funnel's real failure was here: leads arrived and stopped, because nothing owned the step between arrival and a conversation.
- The message path is chosen from source, intent, owner, appointment state and what was sent before. A missed appointment gets a recovery path, not the generic nurture sequence.
- Conversions post back against the original lead ID through a delivery ledger with idempotency and retries, so the platform optimises toward customers, not form-fillers.
Stack & practices
- React
- TypeScript
- Firebase
- Meta Conversions API
- Google Calendar
- PWA