Challenge Overview
CHALLENGE OVERVIEW
In this challenge, we want to build a simple app that will analyze people’s calendars and determine the "value" of meetings, and provide some graphs on the kinds of meetings and number of required attendees. The calendars are exported as .csv files and will be provided in a zip for this challenge.Here are the detailed requirements:
1. The app needs to calculate how much time is spent in meetings vs total time available. For example: if we assume 8 hour workday, then if 4 hours per day are spent in meetings then it’s 50% time spent in meetings. Display metrics for individuals as well as aggregated for the entire team.
2. Implement some simple rules to determine the value of meetings
2.1. The number of work hours outside meetings minus 30 min lunch time should be considered productive hours
2.2. Fewer, shorter duration meetings will be perceived as valuable
2.3. Necessary meetings (ex: required for agile process) are also ones that can be considered of value
3. The app needs to check for keywords - Skype, Agile, Scrum, Standup, Town Hall etc… and treat them differently - the list of keywords should be configurable. The purpose is to analyze the most common words, so if the people are spending 90 minutes per day in scrum meetings, it can be demonstrated quickly and easily.
4. Need to support a time period / range to report on, the application can just accept start and end dates for the reporting period
4.1. Note that for a specified range, multiple reports might be generated. For example: for time period 01/01/2016 - 03/31/2017, two separate reports should be generated - full year 2016 and first quarter 2017.
5. Need to support different attendees range: 3 or fewer attendees, 4-10 attendees, greater than 10 attendees
6. The output of this challenge will be a command line app that will run against the directory of exported calendar files (in .csv format) and produce a PDF (or multiple PDFs) with reporting info.
7. For some of the data like #1 and #3 above, we should use pie-chart instead of plain text for better presentation.
8. If ‘Required Attendees ‘ contains only the ‘Meeting Organizer’ name or is blank – this would indicate either a conference room booking or a reminder to self; these rows need to be ignored and not considered for analysis.
You can use either C# or Node.js to implement this command line tool.
TECHNOLOGIES
C#.NET / Node.jsREST
Microsoft Azure
Office 365
Final Submission Guidelines
FINAL SUBMISSION GUIDELINES
Full code that covers all the requirementsA deployment guide describing how to configure and test the code, including verification details.