2ndb - a notebook for notes that studies and then improves the person who writes in it

    Do you have friends who always write something in a notebook or file in Google Docs? You asked them why they do this, and what exactly they write there? If not, then I will answer for them (not for everyone, but for many):

    These are the consumed food (including its energy value), expenses, time spent on TV shows (games, work, sports), their plans for the future, their sensations from what they consume (for example, an assessment of chocolates) and other metrics and information about their life.

    But think about it: if there is so much information, and it is so detailed, then surely something can be obtained from this data? Using them, you can calculate something else. Find trends, patterns. And then it will not be just a notebook, but a really valuable and indispensable tool that not only allows you to store information, but also can give advice. He could recommend a person to correct something in his life in a way that, according to the results of statistical calculations, is most likely to give the desired result.

    I would like to describe just such a system in more detail: a software product capable of collecting information(at the initial stages, this is mainly the data that the user provides independently, regularly entering them into the system) and, analyzing it, find various trends in it , connect various aspects of human life according to some general parameters (for example, discovering a chronological connection) and inform the user in case if the system has any of his recommendations, advice or warnings .

    One of the key components of this software package is an automatic trend detection system (for short - SAOT).

    Illustration: between two books lies a thick notebook with a spring

    Using software

    2ndb data is supposed to be stored and processed on the server side. This ensures the availability of data from all user devices, as well as the possibility of interaction between users.

    When building the architecture of this software package, it is necessary to take into account the possibility of using it using various client applications in advance. This means that all components that provide storage and processing of information about the lives of users must be implemented as a backend that provides an interface (API) through which client applications can access it.

    First of all, it is planned to implement only one client application - a browser application (2ndb site). However, later, you can add others (working, of course, through the same backend, with the same data). For example, client applications for mobile phones, applications for personal computers that work separately from the browser, and even individual devices.

    The client application running on the user's computer can, firstly, allow the user to enter information into the system faster, and secondly, such an application could collect some information even without user intervention: for example, record how much he plays computer games, how communicates a lot on social networks, and how much he does with something related to his work, as well as how many characters he types on the keyboard, how fast he types, and so on and so forth.

    Special devices can automate the input of data that cannot be automatically obtained either through a browser or through a separate application. For example, you can release and sell a wrist pulse sensor, which will automatically add readings to our system.

    Entering data into the system

    In the initial stages, most of the information will be entered manually by users.

    Examples of such data:

    1. Awakening Time
    2. Bedtime
    3. Stress (including indication of the source of stress, as well as the approximate duration and intensity)
    4. Joy
    5. Other emotions
    6. Current growth
    7. Current weight
    8. Physical exercise
    9. Colds, diseases
    10. Sex
    11. Masturbation
    12. Monthly
    13. Pregnancy and childbirth
    14. Time spent on work
    15. Time spent on personal activities not related to work
    16. Food
    17. Alcohol
    18. Cigarettes
    19. Other psychoactive substances
    20. Games (e.g. board games)

    In the future, most likely, there will be opportunities to enter various information automatically. For example, if a user wakes up with an alarm clock and he sets an alarm clock on his phone, then we could automatically take the time for which he sets an alarm clock as his probable time of waking up.

    And we can also produce devices that would be at home users and automatically entered into our system information about how much CO 2contained in the air that the user breathes (for this you can use modern sensors based on the principle of dispersionless infrared spectroscopy), how bright the light is in the room where it is located (for this you need to add a selenium photocell to the device, and possibly equip it with some components that usually contain good light meters), and so on.

    In this case, having detected any negative tendency in the information entered by the user, the system will be able to advise him to ventilate the apartment more often and turn on the light brighter - unless, of course, it finds corresponding correlations with CO 2 dataand illumination for an appropriate period of time (and if automatic analyzers are written in such a way that such a correlation is not considered an ordinary coincidence - and in some cases, it will probably be necessary to do so so that there is less “noise” from useless tips).

    Another example is the determination of the noise level in a room (using the same device, or, by the way, even using the microphone of his computer, if he has our program installed, and the microphone accurately transmits sound). If judging by the data that the user makes, he is stressed, and we have information that his apartment is noisy, we can advise him on solutions (you never know, maybe he didn’t think it was so important), type of sound insulation and other things. And if all this is also after 11 pm - then at the same time we advise you to talk with your neighbors / write a statement.

    Data Types with Advanced Options

    Additional options can be specified for some data types. For example, if information about sex is entered, then you can add sexual partners, indicating various relevant parameters about them. If physical exercises are indicated, then you can select the type of exercise (running, pull-ups, push-ups, and so on), and for some types additional fields may appear (for example, not only the number of repetitions, but also the time spent, or even the subjective impression of the cause physical fatigue).

    Making plans

    In addition to information about what has already happened or is happening right now, the user can also add what he plans to do. He can, among other things, set up reminders so that the system tells him in advance what plans he has added for the near future.

    For plans, you must also enter the feasibility parameter. That is, on the day on which you had something planned, the system asks you if you did it really, because it is very important for statistics and analysis.

    Data generators

    Some data is entered by the user (or comes from client hardware or software), and some is automatically generated (calculated) based on other data.

    Special modules are responsible for this - data generators.

    Examples of data that can be calculated based on other data:

    1. Duration of sleep (if you know the time of going to bed and waking up)
    2. Body mass index (if body weight and height are known)

    In some cases, it is the generated data that will be used by the analyzers. For example, if a person has increased weight - perhaps he’s just growing (after all, children will also use the system). But if his BMI has increased, then this is another matter, and it really makes sense to look for a correlation with other data, advise something, and so on.

    If you are completely carried away by writing generators, you can even make a calorie calculator and take into account vitamins and minerals contained in cooked dishes (if the system knows what the user is eating, and in what quantities).

    “You don’t have enough phosphorus in your diet, maybe we’ll cook fish today?”

    Reminder to enter information

    Obviously, many people have a busy life, and they may forget to enter the information that is needed to automatically analyze their lives.

    The solution may be automatic reminders - for example, in the form of letters sent by e-mail, SMS messages, push notifications on a mobile phone (when we already have a mobile application for working with the system) and so on.

    Correct handling of data gaps

    From time to time, people will hammer in to enter data. If this is not processed in any way, then the site will incorrectly build statistics, analyzers will make mistakes, and so on. Automatic detection of spaces is possible, but not always (because for some types of data it is not known why the user did not enter them - because they actually did not change during this time, or because he scored).

    Therefore, we need a mechanism that allows a person to indicate that at such a time he scored data entry - in this case, the system will simply cross out this period and will not use it to build statistics and analysis (and information about the intermediate state will be generated automatically by averaging data before and after the space).


    Analyzers - special software modules (modules for automatic analysis of user data) that receive data of a certain type, after which they can compare them with other data, or with the same data for a different period of time, can generate alerts for users, and so on.

    The analyzer, for example, discovers that a person has begun to sleep less or eat more, and at the same time tries to find coinciding chronologically negative trends (for example, he planned 10 meetings with friends, but actually took place half as much - only 5), and if they ( according to the criteria used by this analyzer) is quite significant, it adds information to the notification that, possibly, having improved this parameter, a person will also affect such and such others.

    The fact that analyzers can use not only data about the past days, but also plans, generally speaking, can be very useful for users. For example, if earlier for a given user it was observed that often, meeting with friends, he drank a lot, and suddenly all of a sudden there were 4 different meetings in a row (one each day), then the system should warn him that he recommends refraining from excessive alcohol consumption (especially if the previous alcohol consumption was a long time ago and there are fears that his body simply will not be ready for such a load).

    Another example of an analyzer is checking the dosage. If the user, for example, takes some medications, then the system can check whether he is observing the correct intervals and dosage, and if he finds any problems (for example, she knows that this particular medicine cannot be taken in such quantities, or, for example, the dose is normal, but this medicine cannot be combined with alcohol, and the user has information that he drank today), he immediately informs the user (and, if necessary, his doctor).

    Of course, the system can also at a given time remind the user about the need to take medications (and at the end of the course, for example, inform that they no longer need to be taken).

    Monetization Methods

    Global statistics

    Having access to the data of all users, you can collect very good statistics for research. For money, you can sell access to general statistics pages or even raw data (i.e. raw data - for example, in the form in which we store them in the database).

    In the future, scientists will have the opportunity to receive amazingly detailed information about a very large number of people, and use this information in research. And with the ability to filter it by time, city, gender, age, and so on.

    Super-targeted advertising

    Advertising on a site (in a mobile application, etc) can be incredibly targeted. So targeted that hardly anyone else can offer advertisers something like that.

    The site discovers that the user has already tried a certain physical training 100,500 times, and each time he does not manage to achieve the desired result. And then bam - he gets an advertisement that he has a trainer in his city who has a super program specifically for training of this type.

    Or, for example, if we know that a particular food will be useful to the user, we can advise him on cafes and restaurants that are located nearby and where such dishes are served.

    Expert review

    Another interesting method of monetization is an expert assessment of a certain type of data collected about a particular user. For example, there is a certain person who is diligently engaged in any particular sport. Nevertheless, for a long time he has not been able to achieve the results that he needs. In such cases, the system may invite the user to conduct an expert assessment - part of the information about him (in the form of tables, graphs, etc.) will be provided to an expert competent in the relevant field (in this case, it may be a sports coach), after which he will analyze this information (how much the user was engaged in, what exercises he did, what breaks were between classes, what the user ate, and so on), will be able to write an expert opinion to the user,

    First of all, this is convenient for the user: you don’t need to look for an expert yourself, he trusts our system and knows that we have good people who are ready to really professionally analyze his specific case, that is, he will not stumble upon charlatans who only They claim that they understand the topic (in this case, in physical education, sports).

    Secondly, all the information is alreadycollected - he does not need to think and remember how the classes went. Everything is already in the system (unless, of course, he contributed everything). Again, there is no need to worry about the fact that something can be missed - the expert will receive as detailed data as possible (and if the user contacted someone himself, he would either have to remember and he could miss it, or go with printouts of data exported, again, from our system).

    Thirdly, and importantly, the system can remember under what circumstances which expert assessment was made. This data can be automatically (or semi-automatically, with the participation of specialists) added to the analyzers, and later, if someone else has a similar situation, the system can automatically advise him about the same.

    From this point of view, it is possible that in some cases an expert assessment could be provided free of charge - if, for example, it is obvious that after entering the results into the system, automatic analysis of this type of data will indeed be improved (and the system, say, will be able to issue new recommendations for a large number of users).

    Granting access to other people, synchronization, export

    In some cases, the user may want to share certain types of information with someone else - for example, with their doctor or with relatives. Therefore, it makes sense to add the ability to specify other users, for each of which indicate the types of information that should be available to him.

    It is possible that at some point, synchronization of data with external sources will also be required. For example, the hospital in which the user is undergoing treatment may want to store information related to the user's health in the system on their servers (and possibly also process it in some way). Or the opposite case - the user underwent treatment in a hospital and is now healthy, but the information collected about him (in particular, information about how the treatment was carried out, what medications were used, whether any operations were performed, examination results, etc. ), available at the hospital electronically, would be useful in our system. Then, accordingly, we again could use the synchronization component,

    Data export may be needed either for geeks (if the user himself knows how to program, then he may want to write software that will perform such an analysis of data, which, for example, we don’t have), or for people who just want to use information (in in the form of tables, graphs, and so on) somewhere else. For example, they want to show the printout to the doctor, or hang somewhere on the wall somewhere in the room, or even try to provide the court with an alibi as confirmation (they say that I could not be at the crime scene, I went in for sports at that moment, see for yourself).

    In the case of geeks, of course, the format should be convenient for software processing (machine-friendly) - for example, XML or JSON. And in the case of all the others, the format should be the other way around so that the information is easy to view and print on the printer (perhaps, for example, PDF, but in some cases, many will also be very happy to export the data to Excel).

    Expansion options

    Automatic decision making based on recommendations received from the system.

    Does the user have signs of depression, and has he been sitting in the dark lately? Turn on the light brighter (if he lives in such a house, and we can regulate it). We determined that the user has a lot of stress and is clearly not up to the conversation? Disable incoming calls on a mobile phone. Of course, these are just examples, and in general there are a lot of technical difficulties, but in general, such a useful intervention (for the purpose of caring) can be very pleasing to some. And for the rest, you must leave the opportunity not to include this.

    Finding Connections in General Statistics

    Suppose there are many users in the system, and they, for example, indicate in detail what kind of stress they have: communicating with neighbors, taking meter readings in the early morning, and so on.

    If the system knows that several users live in approximately the same place, and regularly indicate stress of the same type (and even more so with time-correlation), then who knows, maybe they have a common problem?

    The system can even connect them with each other (if they indicated in the settings that they agree to such jokes). Maybe they will also help each other with something. :)

    Publication in social networks

    It can be useful for promotion - the user's friends see that our system publishes data from him (of course, only those for which he has included such publication), and may themselves become interested in the system.

    We are talking about publishing, for example, in LiveJournal or Twitter. The user, for example, indicates that he did 15 pull-ups on the horizontal bar, and this is immediately posted, for example, on his wall in VKontakte, along with a beautiful schedule (as well as a beautiful picture with the silhouette of the corresponding exercise, and so on).

    Analysis of the user's network life

    If the system knows exactly where the user lives on the Internet, then it can automatically collect and record information about it. This information, in this case, can also be used by analyzers. The user began to read more, and the system found that they now put on average more likes on social networks? Well, we need to share this great news with him (let the fact that what he now reads more positively affects people's attitude to him be confirmed in his mind).

    And aerobatics is a lexical analysis of text written in natural language (our potential users, most likely, write on social networks and blogs mainly in Russian and English, although, of course, I want people from all over to start using the system peace - therefore, it is necessary to develop a system initially with the expectation of internationalization). If we can determine the mood (attitudes, preferences) of the user by what he writes, then we immediately receive a huge amount of new data, which can also be effectively used for analysis.


    An interesting way to increase user participation is gamification (or gamification, see articleon Wikipedia). For example, you can give out all kinds of badges there for those who do something cool (for example, they systematically start to thump less).

    However, gamification with real game levels (rather than boring “achievements”) is a lot more cool gamification, it attracts people, it seems to me, much stronger.

    For example, it might look like this. Browser game. Race. View from above. A beautiful track is displayed - depending on the level it can be a city, desert, mountains and so on. At the beginning of the game, a person gets to the first level, to the start. Its speed is 0 km / h. There is no traditional control - that is, you cannot accelerate with the up arrow, you also do not need to turn it. In order to gain speed, it is necessary that any positive information about the user's life appears in the system. It can even be a specific, randomly generated task - for example, if we know that a person can pull up on the horizontal bar three times in a row, then we tell him that now he needs to go up to 4 times. As soon as this happens, a person receives a bonus to speed - for example, +60 km / h. This speed lasts for an hour, and then it starts to decrease - say, at 1 km / h per minute. Thus (with such a bonus to speed and such a deceleration speed), after two hours the car will stop. However, if a person enters the game again and performs the next task, the car will not stop, but will go on. Or, if he does this after a stop, the car will accelerate again and continue to drive.

    As soon as the car reaches the finish line, the person immediately goes to the next level, to the start. The speed of the machine is maintained. At the first level, the tasks are very simple, such that almost anyone could perform them (but at the same time, such that they would have a positive effect - for health, horizons, and so on). And then the tasks become more difficult, and a person may need to skip the task. But he cannot do it right away - he will have to wait 1 hour after the task appears. Accordingly, if he cannot cope with the second task (it is not suitable for him), then he will have to go into the game another hour later, and so on.

    Thus, people have an incentive to enter the game (and perform some task) several times a day so that their car continues to drive. In addition, not only the player’s car is displayed on the track, but also other cars (these can be “computer players” or user friends), that is, you can compete.

    Another option is to hold marathons. People come together in a group and start doing something beautiful (something specific that unites them - for example, they can do stretching). If someone stops moving forward, he is automatically thrown out of the marathon. And to stay in it, you need to fig, without stopping. And you can make it so that people can share their impressions (or, for example, tips) with other participants in the marathon.

    Filling in other people

    Perhaps it is worthwhile to make sure that data can be entered not only about yourself, but also, for example, about your children - mothers will be happy. Many of them, I believe, would not be in the way of automatic recommendations about exactly what their children lack. And so the system will be able to automatically offer them a bunch of everything that they themselves have lost sight of: in a certain way to diversify the diet of the child, play with him some kind of developmental games, and so on.

    In addition, it may be worth doing so that you can give other people access to enter data on your behalf. For example, a doctor. And in the case of entering data about children, for example, their teacher or nanny.

    Increasing the number of data types and analyzers

    In the future there should be a lot of very different data. So that, for example, one could indicate that he had learned to play such and such a composition with a pace of 140 beats per minute (although earlier it reached only 120, and even with minor errors).

    Or, for example, add read books. The system can check which books preceded this book by other users (but are not in the list of reads by this user), and assume that it might be nice for him to read this.

    Generally speaking, the user should always have the impression that the site is working with him. That, generally speaking, he was very lucky - he seemed to have a friend who was very concerned about his health, knowledge and all that jazz. Then he will have a great incentive to continue using this system.

    It will also be possible to find out that, for example, 54% of people who read a certain book within the next month statistically significantly improved a certain parameter in their life.

    Integration with sites on the Internet

    In school textbooks at the end of the section there are often questions "Check yourself." We could implement a module that could be added to sites with various educational materials (articles, textbooks, and so on). I read the article (section, whatever), clicked at the end on the button “Lock information” (or “Lock learned”).

    After the user clicks on the button, it changes color (from orange to green, for example), and a checkmark appears on the left: the database now says that this user wants to remember the facts from this article. Then, on a special page, the user will be able to choose the answers to these questions (however, you can immediately prompt the user to go there) - as many times as needed. If he is often mistaken, then he will be asked the same question many, many times, even after a month. And only when he begins to answer correctly each time, the site is untied with this question.

    Here, again, there may be a gaming component, a competition. For example, overtake friends by the number of points scored. And there may also be a general rating in which you can become the coolest.

    There may also be bonus questions for which there are no answers to the articles at all. Such questions where you need to think or google.

    Information about how well the user responds (which means how well he now assimilates the information, at least on those sites where our module was added), can also be added to our system, and it can also be used by analyzers.

    It can also be implemented automatically collecting and entering activity data on the site. For starters - reading articles. In modern browsers, using the Page Visibility API, you can determine whether a particular site tab is currently selected. If selected, turn on the timer (it is not necessary to show it to the user, of course), and also monitor the page scrolling. If the user switches to another tab, turn off the timer until he returns to the tab with the article. If the user scrolled the page to the end of the text, and on the timer such time for which the article could probably be read (should depend on the number of characters), then we automatically add data that the article was read (you can specify the reading speed at the same time - although you need to consider that it may decline in cases

    Of course, manual editing of the data will still not hurt, so that you can remove the article from the read (you never know, maybe someone else read it without logging in), and add it manually (in case you read it without authorizing on the site, from another devices, for example, or even on paper).

    This, incidentally, will be very useful from the point of view of global statistics collection - it’s really cool: you can find out which articles are simply opened and closed, and which ones are really read. The most interesting thing is that I do not seem to have heard anyone do this (although I suppose that such an idea could have crossed other people's minds).

    What do you think?

    If you like the project idea, write me an email: aruseni.magiku@gmail.com. I can tell you how such thoughts appeared. Well, I also have calculations, so I can share information about how much it all (or at least part of the above) to develop, and how much time it takes.

    Also popular now: