Skip to content
    Back to all Bounties

    Earn 54,000 ($540.00)

    Time Remainingdue 11 months ago
    Open

    Personal CRM in Roam Research

    incentive
    incentive
    Posted 1 year ago

    Bounty Description

    Personal CRM

    API Docs

    Roam API: https://roamresearch.com/#/app/developer-documentation/page/W4Po8pcHQ
    Roam to JSON Webhooks Plugin: https://github.com/mlava/json-webhooks (install in Roam via the Roam plugin store in the app)
    Google Calendar: https://developers.google.com/calendar/api/guides/overview
    Apple Reminders: https://developer.apple.com/documentation/eventkit/creating_events_and_reminders
    Apple Contacts: https://developer.apple.com/documentation/contacts

    Objective:

    Build a system inside Roam to maintain contact with people categorized into different lists based on their importance.

    Requirements:

    • Confirm if a page is for a person
      • Query page[[Bill Gates]] for a block with attribute Tags:: and tag #people to know that this page is for a person in the Roam graph.
    • Contact Frequency: Allow users to set a contact cadence under attribute Tags::
      • #A List Very important people. Contact every two weeks.
      • #B List Important people. Contact every two months.
      • #C List Most people. Contact every six months.
      • #D List Demoted people. Contact once a year.
      • By default, add someone to #C List
    • Reminder System: Set up reminders for contacting individuals based on their categorization.
      • [[Bill Gates]] has a Contact Frequency of #A List.
      • Every 3 weeks, on a Friday, create a block on the Daily Note called Reminder:: and underneath it nest a {{[[TODO]]}} for each person to contact. Underneath each todo, include a nested query of their name and [[last time we talked]]
        • {{[[TODO]]}} Contact [[Bill Gates]]
          • {{[[query]]: {and: [[Bill Gates]] [[last time we talked]]}}}

    2. Birthdays

    Objective:

    Integrate birthday reminders in Roam.

    Requirements:

    • User [[Bill Gates]] tagged as #people. He will have an attribute Birthday:: that will have his birthday stored in Roam’s date format as [[July 25th, 1997]].
    • If this person is on #B List or #A List, 14 days before their birthday on July 11th, 2024, nest under a Reminder:: block on the Daily Note for July 11, to say
      • [[Bill Gates]] turns 46 years old on July 25th, 2024
    • If the person is on #C List or #D List or not on any list, ignore.

    3. Calendar to Block

    Objective:

    Automatically create template blocks in Roam Daily Note for new events detected on Google Calendar.

    Requirements:

    • Event Detection: Detect events on Google Calendar.

    • If the event is canceled, deleted or moved before the event happens, delete the block from Roam.

    • To detect an event, it has to have at least 2 people confirm RSVP. This way we avoid polluting the Roam graph where only 1 person has confirmed RSVP to an event.

    • Roam Integration: Insert a this templated call block on the day when the event happens

      - [[Call]] with `[[Full Name]]` about `Event Bio`
      - Notes::
      -
      - Next Actions::

    4. Apple Integration

    Objective:

    Sync information with Apple devices and services.

    Requirements:

    • 1 way sync with Apple Contacts: Integrate pages tagged as #people with Apple Contacts via a Cronjob that runs once a day
      • phone
      • name
      • email
      • address
      • birthday
    • Desktop Widget: Develop a Roam widget for Apple Desktop Notification Centre showing today's plans and priorities with a check-off feature.
    • iOS Widget: Create an iOS widget displaying todos under today's Plans, Priorities, possibly through syncing with Apple Reminders.

    5. Agenda Adder

    Objective:

    Automate the insertion of TODOs into relevant pages in a graph system.

    Requirements:

    • If I tag a name of a page like #[[May Teo]] (where the page contains #people so we know it’s a person) anywhere in a graph in the same block as a {{[[TODO]]}}, then automatically insert a block reference that todo May Teo page, indented under her Agenda:: block. Then the original place where the tag is, replace that with a block reference which points to the Agenda’s todo.

    6. Done Filter

    Objective:

    Automatically filter out completed tasks.

    Requirements:

    • Automatic Filtering: Set pages containing #people to hide {{DONE}} blocks via a filter. Roam does not allow this via UI if the page does not already have one block marked as DONE, so you might have to insert your own DONE block, and then trigger this filter.

    7. Highlight CSS Modification

    Objective:

    Enhance visual aesthetics of the system.

    Requirements:

    Copyright © 2024 Replit, Inc. All rights reserved.
    • twitter
    • tiktok
    • instagram
    • facebook

    Replit

    Programming languages

    • Python
    • JavaScript
    • TypeScript
    • Node.js
    • Nix
    • HTML, CSS, JS
    • C++
    • Golang