- How efficient is your workflow for keeping on top of all your meeting notes, action items, contacts, projects and more?
- If you were to bump into someone unexpectedly would you be able to remind yourself of all the relevant topics you wanted to discuss with the person?
- Can you remember all the things you wanted to get done when running your errands?
- Can you keep track of your discussions with all the people you talk to regularly?
In this post I will walk you through my meetings-actions-people workflow in Roam.
If you are new to Roam and Roam42...
Just in case you are not familiar with Roam, it is an ultra flexible note taking tool. It's like the Excel for text. If you want to find out more, there is tremendous amount of quality content available on YouTube, just search from "Roam Research". Equally, you can head over to RoamBrain.com for all the best links and more.
My workflow is automated using Roam42 SmartBlocks. If you have Roam, but you don't have Roam42 SmartBlocks installed, check out the video in my post about Progressive Summarization in Roam, it demonstrates how to get Roam42 and SmartBlocks up and running in less then 2 minutes.
My typical workweek
On a typical workweek I will have about 50 meetings. Roughly two third of these are reoccurring meetings with my direct reports, project managers, key stakeholders, steering committees, my peers and my manager. At any given time I need to keep my eyes on 15 to 20 larger (multi-year) projects and about double this amount of smaller projects and issues. Since finding Roam in May 2020 I've been practicing and refining my daily workflow in it. Today I have a system that works very efficiently for me.
Why Roam?
The reason for switching to Roam was its flexibility and friction free user experience. I've been experimenting with numerous solutions for the past twenty+ years. I can state without hesitation that Roam is by far the most efficient in combining a personal knowledge management (PKM) system with robust customer relationship management (CRM) and task management functionalities. To put it more precisely, Roam provides a very flexible structure and a powerful set of basic features that you can mold into a PKM, CRM and task management system. Today, I handle most of my knowledge work in Roam. This is where I track my work, organize my blog, manage my reading, do my daily journaling, and much more.
Core components of my meetings-actions-people workflow
My Getting Things Done (GTD) workflow consists of the following elements:
- I manage my work calendar and email in Outlook.
- I have a script to export my daily agenda from Outlook so I can place it on my Daily Notes page in Roam.
- I embed TODOs into my meeting notes.
- I create a separate page in Roam for each of my meetings, contacts, and projects.
- I have a set of special purpose tags. The ones I will cover in more detail are #discussWith, #waitingFor, #promisedTo and #errands.
- I use queries on the Daily Notes page and on the People pages.
- I have a set of SmartBlocks. Some of them mere templates, others a little bit more complex.
- Finally I have a GTD page with a set of queries to catch items that would fall through the cracks. i.e. TODO's that don't have a delivery deadline (INBOX), and those that are AGING (more than 1 month passed the due date). My GTD page also lists #somedayMaybe tasks, that I want to keep track of, but that I don't want to see on a daily basis.
My Calendar
I manage my work calendar in Outlook. Every morning I run a script in Outlook that produces the following two artifacts:
1) the list of today's meetings pre-formated for the Daily Notes page. The list contains the from-to times of each meeting followed by the subject of the meeting formatted as a Roam page link based on the following pattern: [[meeting/subject]].
2) and, for each of my meetings a pre-populated template that is ready to be copied to the meeting's page in Roam. This template includes the list of attendees, the time and location of the meeting, the subject of the meeting, a default set of tags of which I delete the ones not relevant (#1-1, #team-meeting, #steering-committee, #working-session), and a placeholder for the meeting notes.
My Outlook script
This is the scrip I use in Outlook.
A few notes, should you want to re-use this script: 1) I have some helper functions at the bottom of the script that transform names from the format they are shown in the corporate address book to how I refer to them in my notes. See the cleanName and the initializeNicks Functions. 2) The script filters out my name from the list of attendees: you need to initialize sMyself and emailTo at the beginning of the script. 3) Also the script only lists meetings where I am set as Busy. Tentative meetings as well as meetings with the subject "Focus time" are excluded. Search for "olBusy" in the code to find the if statement.
Sub CreateOverviewAndDetailedListofAppt() Dim nicknames As New Scripting.Dictionary Dim CalFolder As Outlook.MAPIFolder Dim CalItems As Outlook.Items Dim ResItems As Outlook.Items Dim sFilter, strSubject, strAppt, strApptSummary As String Dim itm, apptSnapshot As Object Dim tStart As Date, tEnd As Date, tFullWeek As Date Dim wd As Integer Dim emailTo As String Dim sMyself As String strApptSummary = "" strAppt = "" ' Set myself so I don't add myself to attendees sMyself = "Your Name" emailTo = "youremail@host.com" initializeNicks nicknames ' Use the default calendar folder Set CalFolder = Session.GetDefaultFolder(olFolderCalendar) Set CalItems = CalFolder.Items ' Sort all of the appointments based on the start time CalItems.Sort "[Start]" CalItems.IncludeRecurrences = True ' Set start and end dates for filter tStart = Format(Date, "Short Date") tEnd = Format(Date + 1, "Short Date") tFullWeek = Format(Date + 6, "Short Date") 'Does a full week calendar export on Sunday wd = Weekday(Date) ' Sun = 1, Mon = 2, Tues = 3, Wed = 4, Thu = 5, Fri = 6, Sat = 7 ' get next day appt, do whole week on sunday If wd >= 2 And wd <= 6 Then 'Mon-Fri sFilter = "[Start] >= '" & tStart & "' AND [Start] <= '" & tEnd & "'" ElseIf wd = 1 Then 'Sun sFilter = "[Start] >= '" & tStart & "' AND [Start] <= '" & tFullWeek & "'" End If Set ResItems = CalItems.Restrict(sFilter) 'Loop through the items in the collection. For Each itm In ResItems 'only include meetings I've accepted. This can be removed 'skip items marked with subject "Focus time" If (itm.BusyStatus = olBusy) And (itm.Subject <> "Focus time") Then ' Create list of meetings strApptSummary = strApptSummary & Format(itm.Start, "hh:mm") & "-" & Format(itm.End, "hh:mm ") & "[[meeting/" & Replace(itm.Subject, "/", "-") & "]]" & vbCrLf ' Create Meeting Page template strAppt = strAppt & "Tag:: #1-1 #[[team-meeting]] #[[steering-committee]]" & vbCrLf strAppt = strAppt & vbTab & "Subject:: [[meeting/" & Replace(itm.Subject, "/", "-") & "]]" & vbCrLf strAppt = strAppt & vbTab & "When:: [[" & Format(itm.Start, "mmmm d") & ordinals(Format(itm.Start, "d")) & ", " & Format(itm.Start, "yyyy]] hh:mm") & "-" & Format(itm.End, "hh:mm") & vbCrLf strAppt = strAppt & vbTab & "Attendees:: " & listAttendees(itm, sMyself, nicknames) & vbCrLf strAppt = strAppt & vbTab & "Location:: " & itm.Location & vbCrLf strAppt = strAppt & vbTab & "Summary:: " & vbCrLf strAppt = strAppt & "Pre-read:: " & vbCrLf strAppt = strAppt & "Decisions:: " & vbCrLf strAppt = strAppt & "Notes:: " & vbCrLf & vbCrLf strAppt = strAppt & "----------------------------------" & vbCrLf & vbCrLf End If Next ' Open a new email message form and insert the list of dates Set apptSnapshot = Application.CreateItem(olMailItem) With apptSnapshot .BodyFormat = olFormatHTML .Body = strApptSummary & vbCrLf & vbCrLf & vbCrLf & "----------------------------------" & vbCrLf & vbCrLf & strAppt .To = emailTo .Subject = "Appointments for " & tStart .Display 'or .send End With Set itm = Nothing Set apptSnapshot = Nothing Set ResItems = Nothing Set CalItems = Nothing Set CalFolder = Nothing Set nicknames = Nothing End Sub 'Roam date helper function Function ordinals(i As Integer) Select Case i Case 1, 21, 31 ordinals = "st" Case 2, 22 ordinals = "nd" Case 3, 23 ordinals = "rd" Case Else ordinals = "th" End Select End Function 'To map how people are called in the company directory and in my Roam database Sub initializeNicks(ByRef nicknames As Scripting.Dictionary) nicknames("Name in Company Directory 1") = "Nick Name 1" nicknames("Name in Company Directory 2") = "Nick Name 2" '.... End Sub 'implement your own function to clean or transform names depending on the naming convention at your company, etc. 'in my case I only keep the part of the name before the opening bracket Function cleanName(sAtt) As String bp = InStr(sAtt, "(") If bp > 0 Then sAtt = Trim(Left(sAtt, bp - 1)) Else sAtt = Trim(sAtt) End If cleanName = sAtt End Function Function listAttendees(ByRef item As Variant, myself As String, ByRef nicknames As Scripting.Dictionary) As String listAttendees = "" Dim sAtt As String For i = 1 To item.Recipients.Count sAtt = item.Recipients.item(i).Name sAtt = cleanName(sAtt) If nicknames.Exists(sAtt) Then sAtt = nicknames(sAtt) End If If sAtt <> myself Then If listAttendees <> "" Then listAttendees = listAttendees & ", " End If listAttendees = listAttendees & "[[" & sAtt & "]]" End If Next End Function
Meetings
I distinguish 5 different type of meetings:
1. Reoccurring Meetings
Timing: #weekly, #bi-weekly, or #monthly
Length: 15-30-45-60 minutes (typically has a fixed reoccurring calendar entry in Outlook)
Attendees: the same person or people every time
Objective: to stay in sync, to track progress, to work on a subject
Pre-work, Decisions, Notes:
- I don't create a new page for these every time, but always reference the same. This requries a little attention in setting meeting subject in Outlook, but not that much. Really.
- I usually have Roam open during the meeting and I take notes into Roam real-time or right after the meeting has finished, while I still remember what was discussed.
- My notes are organized by date. Every time the meeting repeats I add Today's date as a ((block reference)) from the Daily Notes page to the top nested under Notes (see picture below). With this approach I can easily scroll down to see what was discussed in previous discussions. The reason for the seemingly strange approach of inserting the date as a ((block reference)) has to do with how Roam queries deal with dates. When I add an action in the notes, I only want that {{[[TODO]]}} to show up under the date assigned to the action, not on the day when I took notes in the meeting. I will share more on this later when I explain the day and nw - now SmartBlocks.
Examples:
- 1-1 meetings with my team and with key stakeholders
- team meetings with my direct reports or my peers
- steering committee meetings
- project status reviews
2. Once-off Meetings
Timing: pre-scheduled, when needed
Length: 30 minutes to three hours
Attendees: one or more people depending on the subject
Objective: to resolve a current issue or escalation
Pre-work, Decisions, Notes:
- Pre-work might be required and distributed few days prior to the meeting.
- Often the meeting is organized to achieve one or more specific decisions.
- A Minutes of Meeting is usually sent after the meeting to summarize the decisions.
Examples:
- discussion initiated by a supplier
- escalation of an issue
- a demo session or a deep dive into a specific topic
3. Workshops
Timing: planned well in advance
Length: half-day, full-day or multi-day
Attendees: small to mid-size team
Objective: to work on a topic in detail, review a broader subject such as annual planning
Pre-work, Decisions, Notes: typically involves significant upfront planning and pre-work for the organizers and the participants
- organizer: designing the agenda
- organizer: developing pre-read
- participant: reviewing pre-read
Examples:
- leadership or team workshops
- project specific workshops: discovery workshop, planning workshop, design workshop, etc.
4. Conferences
Timing: planned well in advance
Length: full-day or multi-day
Attendees: larger crowds
Objective: discuss a topic of common interest, learn what's happening elsewhere, network
Pre-work, Decisions, Notes: involves significant upfront planning and pre-work primarily falling on the shoulders of the organizers and presenters
- Typically no Minutes of Meeting is distributed after the conference, but the conference papers and recordings of the sessions might be available for viewing or for download to participants.
Examples:
- large industry conferences
Ad-hoc Meetings
Timing: ad-hoc
Length: few minutes to half and hour
Attendees: typically one, maybe few people
Objective: discuss a current question or issue, may also be just a social interaction
Pre-work, Decisions, Notes:
- No pre-work.
- Decisions might be reached, in which case it is good to send a very brief reminder email afterwards.
Examples:
- someone stopping by my office
- bumping into someone at the cafeteria or on the corridor
- receiving a call, or calling someone with a question
- unplanned escalation of an issue
My templates
I use three different templates.
Reoccurring meetings and once-off meetings are generated from Outlook and the template is embedded into the Visual Basic script included above.
For workshops and conferences I create the page in Roam well in advance of the event using a the MoM - Minutes of Meeting SmartBlock.
MoM - Minutes of Meeting
- #42SmartBlock MoM - Minutes of Meeting - Tag:: <%INPUT:tags?,%%#1-1 #team-meeting #steering-committee #working-session%> - Subject:: <%CURSOR%> - When:: <%DATE:today%> - Attendees:: - Location:: - Summary:: - Pre-read:: - - Decision:: - - Notes:: -
Ad-hoc meetings also have their dedicated page. I use two scripts to generate them. First I use mn - Meet Now on Daily Notes to create a page for the ad-hoc meeting and to open it in the sidebar. Then I use ahm - Ad-hoc Minutes of Meeting to pre-populate the meeting page with the ad-hoc meeting template.
mn - Meet Now
- #42SmartBlock mn - Meet Now - <%J:```javascript roam42.smartBlocks.activeWorkflow.vars['page_title'] = 'meeting/' + prompt('Subject of the meeting?'); return roam42.dateProcessing.getTime24Format() + ' ['+'['+roam42.smartBlocks.activeWorkflow.vars['page_title']+']]';```%> - <%NOBLOCKOUTPUT%><%J:```javascript let inPut = document.getElementById('find-or-create-input'); inPut.focus(); roam42.common.setEmptyNodeValue( inPut, roam42.smartBlocks.activeWorkflow.vars['page_title'] ); setTimeout(()=>{ roam42KeyboardLib.simulateKey(13,100,{ shiftKey:true}); }, 200);```%>
ahm - Ad-hoc Minutes of Meeting
- #42SmartBlock ahm Ad-hoc Meeting MoM - Tag:: #ad-hoc-meeting - Attendees:: <%CURSOR%> - Notes:: -
My note taking approach
Meetings get their own page. Ad-hoc meetings I sometimes record on Daily Notes, but only if there are no actions agreed.
Meeting pages are created in specific namespaces: meeting/, workshop/, conference/
Actions are recorded as part of meeting notes.
I capture notes in Reoccurring Meetings as explained above, providing an easy to access log of previous discussions.
When meeting with someone I open the page for the person in the sidebar to see if there are any #waitingFor, #discussWith, #promisedTo items to be discussed. (see below under People)
Actions
I come across dozens of actions each day. Most of them I delegate. I am extremely selective regarding which actions I record for tracking purposes. I only track high priority actions that I also expect to be chased on, or in which I have something to contribute.
I aim to place TODOs to the highest possible level of the bullet-point hierarchy. My TODO blocks contain the name of the action party and a brief (SMART) description of the action. I prefer shallow nesting to avoid long snippets of text in query results and action references.
Actions get one or more of the following tags: #discussWith, #waitingFor, #promisedTo and #errands
- {{[[TODO]]}} #discussWith [[The Person]] by [[December 24th, 2020]]: Topic of the discussion
- {{[[TODO]]}} #waitingFor [[The Person]] by [[December 31st, 2020]]: The promise I received
- {{[[TODO]]}} I #promisedTo [[The Person]] that by [[December 27th, 2020]] I will...
- {{[[TODO]]}} #errands when visiting [[IKEA]] don't forget to ....
Multiple actions with the same person get nested under a block with the name of the person.
I keep tasks off the daily notes page unless it has yet to be processed. TODOs with due dates are recorded on a page other then the Daily Notes page e.g. project page, meeting page, person page.
People
Each person gets a page with metadata defined in the person SmartBlock.
The person's page includes three queries: #waitingFor, #discussWith, #promisedTo. "Waiting for" are the TODOs I have agreed a person to deliver to me. "Discuss with" are topics - potential future actions -, that I want to discuss with the person next time we meet. "Promised to" are my promises, if someone asked me to help with something and I made a commitment to take action.
I collect examples for performance review meetings during the year by tagging relevant information with #forPRM and adding the individual's name. I can filter for these under linked references when the time comes for the performance review meeting.
When I meet with someone, I have made it a habit to open the page for the person in the sidebar, to see if there are any #waitingFor, #discussWith, or #promisedTo items to be covered.
My person template
My person template takes the name of the person from the title of the page to customize the 3 queries at the bottom of the page.
- #42SmartBlock person - <%NOBLOCKOUTPUT%><%SET:page_title,<%JAVASCRIPT: return document.querySelector('.rm-title-display').textContent;%>%> - Tag:: <%INPUT:Tags?%%#person #author #businessassociation #colleague #vendor #contractor #speaker #family #friend #sportsassociation %> - Photo:: - Phone Number:: - Email:: <%CURSOR%> - Company:: - Location:: - Assistant:: - Role:: - How we met:: - Birthday:: - Interests:: - Spouse & children:: - **Waiting for** - {{[[query]]: {and: [[<%GET:page_title%>]] [[waitingFor]] [[TODO]] {not: [[query]]}}}} - **Discuss with** - {{[[query]]: {and: [[<%GET:page_title%>]] [[discussWith]] [[TODO]] {not: [[query]]}}}} - **Promised to** - {{[[query]]: {and: [[<%GET:page_title%>]] [[promisedTo]] [[TODO]] {not: [[query]]}}}} - Notes:: -
Daily Notes page
The image below shows my daily notes page for tomorrow. There are two things I want to draw your attention to.
First, at the top I have today's date in the second bullet. When calling the ;;day SmartBlock, it automatically stores the reference to this block in a variable, so whenever I am on a meeting page, I can run ;;nw - Now and insert a reference to today's date, to create the meeting-log as mentioned above. If you recall the reason I reference today's date in meeting notes like this is to ensure queries only bring up actions based on the due date specified in the action. Else all the actions I record in meetings would show up in the queries below twice: once with the day when they were captured, and second with the due date for the action. This would create clutter.
Second, I try to avoid placing TODO's on the Daily Notes page. The only exception is placing the TODO on a future Daily Note page, to be reminded when the day comes. Changing deadlines and moving tasks to a different date is more cumbersome that way, this is why I prefer placing TODO's on other pages such as Meetings, People, Projects, but also Book Reflections and other notes.
The short video below demonstrates how the process of taking notes in a meeting works. 1) I shift-click on the meeting to open it in the sidebar. 2) I use ;;nw - Now to insert today's date in the meeting log. 3) I start taking notes and record an action. 4) The action does not show up in the query as today's task - which is what I wanted! -, however 5) by clicking the references next to the date block at the top I have an easy way to list all actions recorded on the day. 6) Finally I also show how, if I would use the [[Date]] instead of the ((block reference to the date)), the new action would wrongly show up as today's action on my daily page, cluttering the view.
As a final note, I do not use the ;;nw - Now ((date reference)) when I have a once-off meeting, since the date of the meeting is in the metadata section of the meeting and the Note is not nested under this date, thus the problem with the double counting in queries does not arise.
My Templates
day
- #42SmartBlock day - <%J: ```javascript let UID = document.querySelector("textarea.rm-block-input").id; localStorage.setItem('today_date_blockRef','((' + UID.substring( UID.length -9) + '))'); return document.querySelector('.rm-title-display').textContent;```%> - <%NOBLOCKOUTPUT%><%JAVASCRIPTASYNC: ```javascript var settings = { "url": "https://api.quotable.io/random", "method": "GET", "timeout": 0, "async": false }; $.ajax(settings).done(function (response) { console.log(response); var jsonQuotes = JSON.stringify(response); var quote = JSON.parse(jsonQuotes); roam42.smartBlocks.activeWorkflow.vars['author'] = quote.author; roam42.smartBlocks.activeWorkflow.vars['quote'] = quote.content + ' #quote'; }); return '';``` %> - > <%GET:quote%> [[<%GET:author%>]] - <%IFDAYOFWEEK:2,3,4,5,6,7%>**Top 3 goals for today** - <%IFDAYOFWEEK:2,3,4,5,6,7%> - <%IFDAYOFWEEK:1%>**Top 3 goals for this week** - <%IFDAYOFWEEK:1%> - **Meetings** - - **Today’s successes** - - **How could I have made today better?** - - **Notes** - - **TODO** - **Tasks for today** - {{[[query]]: {and: [[TODO]] {not: {or: [[query]]}} <%DATE:today%> }}} - **Overdue from previous month** - {{[[query]]: {and: [[TODO]] {not: {or: [[query]]}} {between: <%DATE:yesterday%> <%DATE:one month ago%>} }}}
nw - Now
- #42SmartBlock nw - Now - <%JAVASCRIPT: return localStorage.getItem('today_date_blockRef') + ' ' + roam42.dateProcessing.getTime24Format();%>
Information security and other closing thoughts
Finally I wanted to comment on information security. I'd love if I could simply include every information I ever wanted to store and organize in Roam, but this desire needs to be balanced with keeping information safe, both corporate and personal. As closing thoughts I wanted to share some of my related approaches with you.
First, I never upload corporate files to Roam. I include links to files, but never the actual content. I do the same for my personal files as well. I store my files mostly on OneDrive and add links to Roam. Back in May I developed a simple tool to generate markdown formatted links for my OneDrive files that are easy to embedding into Roam and look good as well. Check out get-my.link. Note that for some reason I couldn't get the OneDrive file picker component from Microsoft to work with either Internet Explore or Edge. The site works well with other browsers.
If I reference emails in my notes, I also never include the email body. What I typically do is include the search term I can copy into Outlook that will pull up the email or the discussion thread. e.g.:
- subject:"this is the subject" AND from:theSender
- category:"my mail category"
Regarding personal information such as the #forPRM tag, I use the Roam {{encrypted text}} command to safeguard the information.
Finally, I do regular backups.
I would love to hear what you think
If you have questions, ideas, want to share your own approach, or learned something that you want to experiment with yourself... I would love to hear your feedback! Please leave a comment.
Thank you.
Hi Zsolt, this looks absolutely fantastic but unfortunately I won't be able to try your scripted workflow since I'm on a Mac at work and Outlook there is not scriptable. But I'll replicate a few of your ideas nevertheless and will put up with a more manual version of this workflow. Thanks for publishing such a detailed overview!
ReplyDeleteHi Thorsten, thanks for the comment! You could try two things. I haven't tried these myself yet, but will definitely play with them.
ReplyDelete1) Apparently Outlook online offers you a possibility to receive your daily agenda in email.
https://www.linkedin.com/business/learning/blog/productivity-tips/how-to-get-your-daily-agenda-emailed-to-you-each-morning-in-gmai
2) You could use Microsoft Flow in O365 to automate this process.
https://flow.microsoft.com/en-us/galleries/public/templates/99892410786e4d6888f27ae380125a80/email-me-with-a-list-of-upcoming-calendar-events/
Hi Zsolt, thanks for this excellent article. I've set this up in my own Roam, but I'm wondering how to collapse the queries. In your screenshots under WaitingFor, DiscussedWith, PromisedTo, your queries are collapsed into a symbol. I haven't figured out how to do that. My full query shows in the block above with the results underneath. Is there something I'm missing? Thanks again!
ReplyDeleteYou mean how to hide the query from the header of the query? You need to add the following to your [[roam/css]]
Delete.rm-query-title {
display: none;
}
by also adding the following, you can hide the box around the query as well:
.rm-query {
border: 0px;
}
Hi Zsolt...thank you! Yes, that's exactly what I meant and I appreciate you taking the time to respond. That worked perfectly. And now I'm subscribed and no longer "Unknown". :-)
ReplyDeleteThanks for putting this out there.
ReplyDeleteReally like your CSS theme can you share it?
Here's a lint to my roam/css page saved as a roam.json file. Before you import this into your graph, be sure to save your current CSS (export or just copy / paste to another page in your graph). Also I would advise to clean your css page before importing, otherwise the imported file will be appended to your current CSS resulting in an unpredictable outcome.
DeleteBeing one step more cautious, if I were you I would open an empty graph, import the css, take a look, and if I like it, then select all / copy / paste into my main graph.
http://zsviczian.github.io/zsolt.blog/roam-css.zip
Enjoy!
Thanks, I edited the downloaded JSON file to be nested under my regular roam/CSS page, and it works perfectly. I'll deconstruct it and cherry-pick the pieces I find super useful. I'm a little partial to the font Avenir Next - I used Bear for so many years it has just been ingrained in my mind
ReplyDeleteWay to go!
DeleteWhat JavaScripts do you use? I use roam42 and afew others that I’ve been testing out but I noticed you daily note has the day of the week added to it.
DeleteI don't use that many JS extensions on top of Roam42. Here's the list:
DeleteMobile Quality of Life Improvements from Viktor TƔbori
https://gist.github.com/thesved/48cab2307cf0598fcc5cd37643d36cb4
https://twitter.com/viktortabori/status/1303125320728555522?s=21
Date formatter:
https://gist.github.com/thesved/e61fef8b3e5a50ac1ae1362e72da88cf
YouTube Player:
https://c3founder.github.io/Roam-Enhancement/
Some extensions David Vargas:
from https://roamjs.com/docs
hi! great post! thank you for sharing!
ReplyDeleteWould you be able to share your GTD page and the query you set up for your AGING todos?
Thank you!
In practice I am using the day template to check aging items. You can find a bit more background info about my day and meeting templates here:
Deletehttps://www.zsolt.blog/2021/01/one-on-one-meetings.html
Here's my GTD page:
https://roamresearch.com/#/app/Zsolt-Blog/page/ehjTFlpIs
Here are my day and meeting templates:
https://roamresearch.com/#/app/Zsolt-Blog/page/Zz1R_VYal
This is fantastic Zsolt! I've just set up your approach for my own work.
ReplyDeleteThank you for this excellent workflow for managing tasks that arise in meetings.
But how do you integrate and track tasks which arise via email?
I'm very keen to read how you capture and process email tasks to Roam.
Have you looked into Emacs org-roam mode? It might solve your security concerns and unlock more powerful connections and customization options.
ReplyDelete