Motacé
A multitenant service that takes in leads, scores them for fraud and routes the good ones to the client's CRM. Built for Europe, the US and the UAE.
Type
Personal project
My role
Frontend and design.
How it works
- Intake
- A small embeddable script on the client's site,
motace.js, sends each form submission to the API. - Scoring
- Fraud scoring runs inside the same request, so the verdict is ready as soon as the lead arrives.
- Review
- Suspicious leads wait for a human. A manager decides on a kanban board in the web app or with inline buttons in a Telegram bot.
- Routing
- Approved leads are sent to the client's CRM by webhook, with retries and backoff.
Under the hood
- Synchronous scoring
- At the expected volume of about a thousand leads a day this is faster and simpler than a queue. CRM delivery and notifications run asynchronously.
- One decision point
- The kanban board and the Telegram bot go through the same service, so the confirm and archive logic lives in one place.
- Events for channels
- After scoring, the service publishes one event. CRM routing and Telegram are independent listeners, so a new channel does not touch the intake path.
- Isolated by organization
- Matching and blacklists never cross a tenant boundary. Client admins, managers and platform admins each see only what their role allows.
- Additive auth
- Basic auth and a Bearer token work side by side. Old webhook and curl integrations kept working, while the web app got a 24-hour token that is revoked on password change.
Site
Status
Under active development. The full intake, scoring, review and routing flow works end to end. WhatsApp notifications were left out on purpose: Telegram is enough to start.