All projects

2020 — present · iOS, Android, Web admin

One Insurance Cyprus

Quote, buy and manage motor, travel and property insurance end to end from a phone — no office visit, no paperwork. One Insurance is a licensed insurance intermediary supervised by the Ministry of Finance of Cyprus.

Built for DoitCare Holding · founded and led as CTO

  • Flutter
  • TypeScript
  • Node.js
  • Google Cloud
  • Firebase
  • Vue 3
  • PostgreSQL
  • Claude API
  • Stripe

Problem

Buying insurance in Cyprus meant an office visit, paper forms and days of back-and-forth. Each insurer exposes its own API with its own rules, a quote often depends on answers that reveal further questions — and as a licensed intermediary, every sale has to stand up to the regulator.

Architecture

BEFOREMobile appInsurer APIanswer → next questionone round-trip per answer, ~16 s eachAFTERQuestion schemaone, insurer-agnosticClaude agentfree-text intakeCanonical answersMapping AMapping BInsurer AInsurer Basked in the appfield patchestranslatequotes in parallel
Adding an insurer means adding a mapping, not a new purchase flow. The app and the agent fill the same canonical answers, and one request fans out to every insurer.
  • Flutter consumer app (iOS and Android) with a chat-driven purchase flow, five languages including right-to-left Hebrew, and Apple and Google Wallet passes.
  • An event-driven, microservice-style back end on Google Cloud: about 170 independently deployed TypeScript Cloud Functions — 81 callable APIs, 55 HTTP endpoints, 29 Firestore triggers and 9 scheduled jobs — plus outbound webhooks. It is the integration hub for leading Cyprus insurers (quotes, proposals, policy issuance), with automated alerts when an insurer changes an API field without notice.
  • A company-agnostic question model: one canonical schema plus per-insurer mappings, edited in a no-code “Question Studio” in the Vue 3 admin dashboard.
  • A Claude-powered agent service (Fastify, PostgreSQL, Docker) that replaced a per-answer round-trip to the insurer with an instant conversational quote flow.
  • Payments on Stripe: checkout, instalment plans with idempotent retry scheduling, and safeguards against double charging on redirect-based payment methods.
  • Role-based access (admin, support, dealer), WebAuthn passkeys, and Firestore security rules enforced on client and server; ID and document OCR with Azure AI Document Intelligence and Google Cloud Vision.

Result

  • Five codebases in continuous production since 2020; I wrote the first version of the mobile app and backend myself and authored about 95% of the back end’s 1,258 commits.
  • Policy purchase time cut from 48 minutes to 16.
  • 1,500+ users; the platform became a B2B2C product serving insurers directly — the company’s core business.