Anne is a diary bot that helps you record and retrieve your detailed daily moments, that are otherwise extremely hard to remember.

0

Intention

How much of your life do you remember? Do you remember how you felt on your first date?

In the world of information overload, it became increasingly difficult to remember the details of our lives. Although daily journaling may help individuals record and self reflect on their days, most people do not have time and proper tools to write and keep extensive journals.

Anne is designed for those who want to remember their precious moments without having to carry multiple notebooks or spend hours writing down journals. Although Anne targets ordinary people who want to better remember and be reflective on their daily lives, Anne would be extremely useful for patients with Alzheimer disease or amnestic disorder.

0

Context

Birth of Anne was heavily inspired by an automated telephonic service called Call Frank. Call Frank calls its users everyday at the same time to let them record daily moments with voice.

I found the concept of Call Frank very interesting, but there were some limitations, such as voice only input in public space and lack of specific prompts to guide journaling, that I wanted to improve with Anne.

Anne helps its users privately record their personal feelings and memorable moments by chatting with her via text messages. Each day, Anne provides various daily prompts to get users start thinking about what to record, and let users add tags to better organize their diary. For now, users can retrieve last recorded moment or get random moments for surprise, however in the future edition, users will be able to retrieve moments based on the tags, date, or keywords in the recorded text.

Anne is coded in Ruby language in Sinatra environment with various ruby gems, Twilio API, and Postgres database. It is deployed via Heroku.

0

Process

I started this project by examining existing journaling apps and services to get inspiration on the workflow and conversation pattern for Anne.

0

With the lessons learned from market research, I started to craft ideal experience for Anne by developing software persona, annotated workflow, and data diagram. I also created functionality matrix to define project scope and prioritize functionalities I can actually implement during this short project.

0

After planning the overall experience, I searched and tested various APIs, ruby gems, and snippets of codes that I can possibly use during implementation. I originally had grand plan to connect to Google transcribe API and Facebook messenger, but faced multiple roadblocks with conflicting APIs and technical constraints.

Then I tested and iterated the interaction sequence and conversation flow with wizard of oz testing and experience prototypes (fake conversations). I then iterated in codes to fine-tune the interaction and overall experience. 

 
0

Product

Anne helps its users record and retrieve their daily moments and feelings via text messages.

1.Getting started with Anne:

Users can start their own diary by signing up from Anne’s website or texting ‘signup’ to Anne’s number and follow the instructions given from Anne to onboard. When signing up from Anne’s website, user gets introduction message from Anne that outlines various commands users can use to interact with Anne. 

0
Anne: signup/web
Suzanne Choi - https://vimeo.com/296134364/2e9da57e6b
0
Anne: Signup/ Record/ Retrieve
Suzanne Choi - https://vimeo.com/296134257/d51faea4dc
0

2. Record moments:

Users get various daily prompts from Anne to start thinking about things they want to capture from the day. E.g. “what do you want to remember from today?”, “who do you want to thank today?”, “what is the greatest thing happened to you today?”, “tell me about your feelings”, “tell me about your most up to date love story”, etc. Based on the prompts, users can start recording by putting “record_” in the beginning of their sentence. Users receive prompt only once in a day (to not to spam them!), but they can add to their diary anytime during the day by starting text with “record_”. User response will then save to the database. Users can also add tags to their moments by starting next message with “tags_”

0
Anne_record moments
Suzanne Choi - https://vimeo.com/296134494/9e820433d4
0
#------- put user input (moments) to database moments ---------#

  elsif body.start_with? ("record_")
    message = "Great! Your moment has been saved. If you want to add tags to your moment, list your tags starting with 'tags_'. Otherwise, I will talk to you tomorrow."

    moment = Moment.new( :body => body, user_id: session["current_user"].id )
    moment.date_sent = DateTime.now.to_date
    moment.save

#------- put user input (moments) to database moments ---------#

#------- adding tags to the last recorded moments ---------#
elsif body.start_with? ("tags_")

    moment = Moment.where( user_id: session["current_user"].id).last
    moment.tags = body
    moment.save

    message = "I've updated your moment with those tags 👍"
#------- adding tags to the last recorded moments ---------#
Click to Expand
0

3. Retrieve moments:

Users can retrieve recorded moments by starting their text with “retrieve_”. When they include “last” (e.g. retreive_last moment saved) in the input, users will get last recording that is saved. When they include “something”, “anything”, or “other” in the input, they will get random moments from the database for pleasant surprise.

I wanted to enable date based retrieval with chronic gem, but I wasn’t able to make the code working for now. However, for the future edition, retrieving moments based on the tags, date, or keywords in the recorded text would be essential to improve experience. 

0
anne_retrieve
Suzanne Choi - https://vimeo.com/296135303/d0e508f2a8
0
#------- retrieve last recorded moment from database ---------#
  elsif body.start_with?("retrieve_") && body.include?("last")

    moments = Moment.where( user_id: session["current_user"].id ).where("body IS NOT NULL")

    if moments.count == 0
      message = "I couldn't find a moment. Try adding one by typing 'record_' at the begining of your sentence."
    else
      item = moments.last
      message = "On #{ item.created_at.strftime( "%d %B %Y" ) }: #{ item.body } "
    end
#------- retrieve last recorded moment from database ---------#

#------- retrieve any recorded moment from database ---------#
elsif body.start_with?("retrieve_") && body.include?("anything") || body.include?("something") || body.include?("other")
  moments = Moment.where( user_id: session["current_user"].id ).where("body IS NOT NULL")

  if moments.count == 0
    message = "I couldn't find a moment. Try adding one by typing 'record_' at the begining of your sentence."
  else
    item = moments.sample
    message = "On #{ item.created_at.strftime( "%B %d %Y" ) }: #{ item.body } "
  end
#------- retrieve any recorded moment from database ---------#
Click to Expand
0

4. Basic functions:

Users can get list of commands they can use to interact with Anne when they type ‘menu’, change their preference reminder time by typing ‘setting’, or report problems they are experiencing by typing ‘problem’. When user texted nonsensical input, Anne tells the users to ‘refresh’ the session. 

0
anne_other funtions
Suzanne Choi - https://vimeo.com/296135403/21aed0e633
0

Reflection

I learned a lot during this project; how to use sessions to create logic jumps in conversation, work with database to store and retrieve dynamic user input, work with various ruby gems and APIs, and oversee the overall experience and scoping MVP version from the ideal version.

If I have more time and obtain advance technical skills…. I believe Anne’s experience would be much more delightful if it has:

1. Web app that helps users delete or edit or reorganize moments
2. Date, keyword, tag based retrieval searches
3. Ability to save photos along with the moments
4. Integration with third party book printing service that prints physical diary books for the user 
5. Transcribe attached audio files or calls users and record
 6. Provide buttons for actions

x
Share this Project

Courses

49714 Programming for Online Prototypes

· 9 members

A hands on introduction to building online products and services through code


About

Anne is a diary bot that helps you record and retrieve your detailed daily moments, that are otherwise extremely hard to remember.

Created

October 19th, 2018