Data Function

Case study · Custom software · Internal product

Data Function CRM: A role-based sales portal with browser calling, texting and payments

Our own sales team runs on a CRM we built: lead assignment and quotas, browser calling with recordings and transcripts, SMS with consent handling, email tracking, Stripe invoicing and AI call summaries.

Client
Data Function (internal)
What we did
Web application · Telephony integration · Payments
Sector
Sales operations
Region
Toronto
Responsive website layouts shown on desktop and mobile

01

The problem

Our own outreach team, calling, texting, emailing and visiting local businesses every day.

  • Outreach across phone, text, email and in person had to be tracked in one place with strict do-not-contact rules.
  • Payments, invoices and renewals needed to flow without re-keying.

02

The solution

  • A React and Node application on PostgreSQL, deployed with Docker, with n8n automations for sheets and email.
  • Twilio voice and SMS, 3CX call logs, Stripe invoices with card and Interac e-Transfer payments, AI timeline summaries and transcription.

03

Security and privacy

  • Agent, manager and administrator roles with secure sessions and lockout
  • Strict Content-Security-Policy headers
  • Consent and do-not-contact rules enforced in software

04

Results

  • In daily use by our team with 170+ automated tests.
  • The pattern we reuse for client portals that need roles, payments and messaging.

05

Built with

  • React
  • Node.js
  • PostgreSQL
  • Docker
  • Twilio
  • Stripe
  • n8n

Have a similar problem?

A free 30-minute call, then a written proposal before any work starts.

Build a portal like this

Free consultation

Tell us what is slowing your business down

A free 30-minute consultation about a custom website, custom software, a business valuation, AI or automation. We tell you what we would do first and roughly what it would cost. A person replies within one business day.

Or reach us directly:info@datafunction.ca+1 416-319-3884