1 of 40

Ian Yamey

Chief Technology Officer

ian@policygenius.com

2 of 40

The easiest way to get insurance online

3 of 40

LEARNING

Education and decision support tools

4 of 40

5 of 40

SHOPPING

Unbiased quote comparison

6 of 40

7 of 40

INSURANCE CONCIERGE�We’re with you every step of the way

8 of 40

9 of 40

Under the hood

10 of 40

Ruby

Dynamic language, promotes simplicity

Rails

Full stack web development framework

11 of 40

Redis

In memory object-store

Postgresql

Relational Database Management System

12 of 40

ReactJS

Rich javascript components

Gulp

Asset pipeline

13 of 40

Be better, together

14 of 40

Github

Code collaboration

Slack

Team chat (but mostly about the GIFs)

15 of 40

Code Climate

Automated code quality reviews and code linting

Semaphore

Continuous Integration and Deployment.

16 of 40

Security and HIPAA Compliance

17 of 40

Sensitive customer data and protected health information

18 of 40

Income / Finances

SSN

Household info

Driver license

Health

Investments

Demographics

Debt

19 of 40

1

Encrypt

sensitive data

Restrict access

Audit and monitor

2

3

20 of 40

Don’t let it get in the way of a modern development culture

21 of 40

Aptible

HIPAA compliant docker hosting.

Docker

Applications as lightweight containers

22 of 40

Our modern development culture

Deployment

One-command to deploy. Multiple deploys a day from a CI server.

(Pragmatic) Agile

Collaboration is key. Pair Programming, Standups, TDD, Retrospectives.

Data wins

Test everything, and automated it! Analytics, A/B tests, Fact based

Product-centric

Engineers need to be passionate about product and drive innovation

23 of 40

Analytics + Consumer Behavior

24 of 40

Google Analytics

Chartbeat

25 of 40

26 of 40

Analyze customer behavior

vs

Protect customer identity

27 of 40

An example: Sending email

without revealing identity

28 of 40

(only you should) Know thy customer

$$$

$$$

APPLICATION

+

CRITICAL

ILLNESS

HEALTH

USE PLACEHOLDER STRINGS

Use placeholders for sensitive data �(eg last name, PHI)

Your app acts as a man-in-the-middle and inserts the sensitive data

INTERCEPT

External systems send customer emails to your app

CREATE A PSEUDO INBOX PER CUSTOMER

LIMIT WHAT 3RD PARTIES KNOW

External systems only see sanitized data

Resend the email to the customer, directly from your App

RESEND

29 of 40

Identify the user with

third party systems

30 of 40

analytics.identify("ciwhfhv9jzs3jv3p3gojxcis")

Anonymous, unique ID

31 of 40

Track traits

32 of 40

analytics.identify("ciwhfhv9jzs3jv3p3gojxcis",{

first_name: "ian",

state: "New York",

blood_pressure_systolic: 130,

blood_pressure_diastolic: 80,

})

33 of 40

analytics.identify("ciwhfhv9jzs3jv3p3gojxcis",{

first_name: "ian",

state: "New York",

login_url: "LOGIN_URL",

last_name: “LAST_NAME”

})

PLACEHOLDERS FOR SENSITIVE DATA

34 of 40

Let the third party, party!

35 of 40

HTTP POST https://www.policygenius.com/process-incoming-email

ciwhfhv9jzs3jv3p3gojxcis@customers.policygenius.com

Third Party

Mailgun

36 of 40

37 of 40

class EmailProcessor� def initialize(email)@email = email� end� � def process� # determine the customer's actual email address� uuid = @email.to.first[:token]� customer = Customer.find_by(analytics_id: uuid)� actual_customer_email = customer.email� � # replace any placeholders with real values� new_body = @email.raw_html� .gsub('LAST_NAME', customer.last_name)� .gsub('LOGIN_URL', customer.auto_login_url)� � # resend the email� CustomerMailer.mail(� to: actual_customer_email,� subject: @email.subject,� body: new_body� ).deliver_laterendend

38 of 40

ciwhfhv9jzs3jv3p3gojxcis@customers.policygenius.com

Third Party

HTTP POST https://www.policygenius.com/email-processor

Mailgun

PolicyGenius App

ian2015@gmail.com

39 of 40

NEXT?

  • Decision support tools
  • Application product tracker
  • Learn! (from consumer behavior)

40 of 40

Questions?*

* (I’m here for Q’s about our stack, product and engineering team). If you’re looking for answers about your own insurance needs, we have a website for that! https://www.policygenius.com