Giter Club home page Giter Club logo

Comments (2)

kimberscott avatar kimberscott commented on July 17, 2024

Proposed setup:

  • Invitations are sent for all active, discoverable studies. Researchers do not turn invitations on/off or specify any invitation-specific text; only existing study fields are used.

  • Ongoing invitations:

    • Generated daily.
    • One email is sent to a family per study, listing all eligible children.
      • Alternative: considered batching together all studies in one digest, in case of multiple studies that kids age into at once. But I think it will make for a longer (if including all details) or less compelling (if shortening) email; it'd be less appropriate to share with a friend with a kid in the age range for a specific study; it won't work as well as a placeholder/reminder for parents who keep an email around in their inbox to remind them; it might encourage some actual competition among studies; it might encourage doing the studies all at once which is probably not ideal from a data quality standpoint. Instead of batching together, I'd propose rate limiting (see next point).
      • Alternative: Considered separate emails for each child. But this will lead to multiple identical emails, either at the same time which is a bit annoying, or at different times which is likely be confusing - "wait, is my other 3-7yo NOT eligible?," and parents may want to have each eligible kid try out a given study.
    • A family only receives up to one email per day per child. (The details aren't important as concerns overlapping sets of eligible kids though - If Abby and Bob can do study A, and Bob can do study B, it's ok if they get both emails or just one.)
    • A family only receives the email if they have NOT previously been notified about this study with regards to at least one of the children who is now eligible. (If 4yo Anna has previously been notified about a study for 3-5 year olds, but her brother Bob just turned 3, the email will say that Anna and Bob are invited to take part.)
  • Initial "welcome" email that does list all studies the registered child is eligible for.

    • Upon initial registration a child may be eligible for a bunch of studies at once, and it would be helpful to parents to highlight these rather than mete them out in a bunch of daily emails.
    • This could be done as a hook on creating the Child object, or added in to the ongoing-invitations process. In the latter case, since we don't have a date_created field on the Child model, could just check whether this Child has ever been notified of anything
  • Will need to keep track of minimal information about the messages sent to avoid duplication - child, study, date. (Some messages will have multiple children - ongoing invitations - and some will have multiple studies - initial welcome emails. Don't need to keep track of that structure, e.g. could always safely expand into child, study, date tuples and have enough info.) Could potentially use the existing Message model?

Rough pseudocode for invitations, for discussion:

For each User that has opted in to getting announcements of new studies:
    For each Study that is active and discoverable, in random order:
       eligible_children = []
       notify_about_study = False
       For each Child of this User:
           If (this Child is eligible for the Study) and (this Child has not already participated in this Study and completed the consent frame) 
               eligible_children += this Child
               If (this Child has not already received any Study notification today) AND (this Child has not already been notified about this Study at any time in the past)
                   notify_about_study = True
       If notify_about_study:
           Send email to this User inviting eligible_children to participate

Rough templates for discussion

Announcement emails

Reply to: Lab email associated with study

Subject: Name, Name, and Name are invited to take part in "Study Name" on Lookit!

Message:

Dear Account name,

We're writing to invite Name, Name, and Name to participate in the study "Study Name" that Lab Name is running on Lookit!

Who: Study Participant Eligibility Description - Name(s) is/are currently eligible!

What happens: Study short description

Why: Study purpose

Compensation: Study compensation OR "This is a volunteer-based study." if blank

You and your child can participate any time you want by going to ["Study name" on Lookit](study link). If you have any questions, please reply to this email or contact Study PI contact.

We hope to see you soon, and thanks for contributing to the science of how kids learn and grow!

-- The Lookit team

Welcome emails

Reply to: [email protected]

Subject: Welcome to Lookit, Name! [[Here's a study / here are the studies] you can participate in right away.]

Message:

Dear Account Name,

Thanks for taking the first step and registering Name to participate in research on Lookit! We hope you'll have lots of fun doing science together with us.

Since you signed up to get notifications about new studies available for your children, we'll let you know as new studies are posted that Name is eligible for, or when he/she/they become(s) eligible for a study already on Lookit.

[There aren't any studies that [he's/she's/they're] eligible for right now, but we're adding new ones all the time!] OR

[Here [is a/are the] studies that [he's/she's/they're] eligible to participate in right away, any time you want:

  • "Study Name", run by Lab Name:
    • What happens: Study short description
    • What it's about: Study purpose
    • Compensation: Study compensation OR "This is a volunteer-based study."
    • Learn more [here](study link)!

We're looking forward to learning more about your child's amazing mind! Feel free to get in touch with any questions or suggestions as you get started on Lookit.

-- The Lookit team

Questions

  • how to schedule this job (celery, one big loop through DB? ongoing smaller jobs?)
  • how we'd monitor and know if something was going wrong
  • Which pieces are most challenging? Everything here is up for discussion depending on what's a pain from a technical standpoint (besides, maybe, not bugging parents repeatedly :) ). Doesn't have to be daily, etc.

Implementation Notes:

  • Will need a EligibleChildMessage composite PK table to keep record of which notifications have been sent out pertaining to which children (associated Message model will have related study information)
  • celery beat job running daily

from lookit-api.

lisachalik avatar lisachalik commented on July 17, 2024
  • Researchers can specify, for each study, the message for an "announcement" email that is automatically sent daily to any users with at least one child eligible for a study who has not previously participated in or previously received an announcement about this study. (Ideally this would be sent as a daily digest, one email per participant even if multiple studies have become available.)

I wonder if it would be useful to send these announcements to anyone who hasn't received an announcement in the last three months (or some other long-ish period of time), instead of anyone who hasn't received an announcement ever? I imagine some parents will see the email and want to participate, but then will forget about it before they have a chance to participate with their child - for people like this, they might appreciate a reminder, as long as the reminders don't come too often.

from lookit-api.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.