├── assets ├── .gitkeep ├── 2021-4.png ├── 2022-1.png ├── 2022-2.png ├── 2022-3.png ├── 2022-4.png ├── 2023-1.png ├── 2023-2.png ├── 2023-3.png ├── 2023-4.png └── 2024-1.png ├── _config.yml ├── .gitattributes ├── LICENSE ├── .github └── workflows │ └── node.yml ├── okrs ├── 2021 │ └── 4.json ├── 2022 │ ├── 2.json │ ├── 1.json │ ├── 4.json │ └── 3.json ├── 2023 │ ├── 2.json │ ├── 3.json │ ├── 4.json │ └── 1.json └── 2024 │ └── 1.json ├── scripts ├── summarize.d.ts └── summarize.mjs ├── schema.json ├── README.md └── api.json /assets/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-minimal 2 | -------------------------------------------------------------------------------- /assets/2021-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnandChowdhary/okrs/HEAD/assets/2021-4.png -------------------------------------------------------------------------------- /assets/2022-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnandChowdhary/okrs/HEAD/assets/2022-1.png -------------------------------------------------------------------------------- /assets/2022-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnandChowdhary/okrs/HEAD/assets/2022-2.png -------------------------------------------------------------------------------- /assets/2022-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnandChowdhary/okrs/HEAD/assets/2022-3.png -------------------------------------------------------------------------------- /assets/2022-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnandChowdhary/okrs/HEAD/assets/2022-4.png -------------------------------------------------------------------------------- /assets/2023-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnandChowdhary/okrs/HEAD/assets/2023-1.png -------------------------------------------------------------------------------- /assets/2023-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnandChowdhary/okrs/HEAD/assets/2023-2.png -------------------------------------------------------------------------------- /assets/2023-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnandChowdhary/okrs/HEAD/assets/2023-3.png -------------------------------------------------------------------------------- /assets/2023-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnandChowdhary/okrs/HEAD/assets/2023-4.png -------------------------------------------------------------------------------- /assets/2024-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AnandChowdhary/okrs/HEAD/assets/2024-1.png -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Markdown 2 | *.md linguist-detectable=true 3 | *.md linguist-documentation=false 4 | 5 | # JSON 6 | *.json linguist-detectable=true 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Anand Chowdhary 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.github/workflows/node.yml: -------------------------------------------------------------------------------- 1 | name: Node CI 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | 7 | workflow_dispatch: 8 | 9 | jobs: 10 | summarize: 11 | name: Generate API, README 12 | runs-on: ubuntu-latest 13 | if: "!contains(github.event.head_commit.message, '[skip ci]')" 14 | steps: 15 | - name: Checkout 16 | uses: actions/checkout@v2 17 | - name: Setup Node.js 18 | uses: actions/setup-node@v2 19 | with: 20 | node-version: "16.13.1" 21 | - name: Generate files 22 | run: node scripts/summarize.mjs run 23 | - name: Commit files 24 | uses: stefanzweifel/git-auto-commit-action@v4 25 | with: 26 | commit_message: "chore: Generate API and README summary [skip ci]" 27 | commit_user_name: FindingAnand 28 | commit_user_email: bot@anandchowdhary.com 29 | commit_author: FindingAnand 30 | - name: Dispatch AnandChowdhary/everything update 31 | uses: benc-uk/workflow-dispatch@v1.2.2 32 | with: 33 | repo: AnandChowdhary/everything 34 | workflow: api.yml 35 | token: ${{ secrets.WORKFLOW_DISPATCH_TOKEN }} 36 | -------------------------------------------------------------------------------- /okrs/2023/2.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://anandchowdhary.github.io/okrs/schema.json", 3 | "year": 2023, 4 | "quarter": 2, 5 | "objectives": [ 6 | { 7 | "name": "Make big changes", 8 | "key_results": [ 9 | { 10 | "name": "Successful trip to India", 11 | "target_result": 1, 12 | "current_result": 1 13 | }, 14 | { 15 | "name": "Launch [redacted]", 16 | "target_result": 1, 17 | "current_result": 0.5 18 | }, 19 | { 20 | "name": "Weigh 70 kg by Q3", 21 | "target_result": 5, 22 | "current_result": 0 23 | } 24 | ] 25 | }, 26 | { 27 | "name": "Stronger health after recharging", 28 | "key_results": [ 29 | { 30 | "name": "Complete one book every month", 31 | "target_result": 3, 32 | "current_result": 0 33 | }, 34 | { 35 | "name": "Go to the gym 20 times after April", 36 | "target_result": 20, 37 | "current_result": 6 38 | }, 39 | { 40 | "name": "Continue therapy after April", 41 | "target_result": 6, 42 | "current_result": 3 43 | } 44 | ] 45 | } 46 | ] 47 | } 48 | -------------------------------------------------------------------------------- /okrs/2023/3.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://anandchowdhary.github.io/okrs/schema.json", 3 | "year": 2023, 4 | "quarter": 3, 5 | "objectives": [ 6 | { 7 | "name": "Settle in to Utrecht", 8 | "key_results": [ 9 | { 10 | "name": "Move in to new apartment", 11 | "target_result": 1, 12 | "current_result": 1 13 | }, 14 | { 15 | "name": "Finish activity rings every other day", 16 | "target_result": 37, 17 | "current_result": 35 18 | }, 19 | { 20 | "name": "Complete one book every month", 21 | "target_result": 3, 22 | "current_result": 0 23 | } 24 | ] 25 | }, 26 | { 27 | "name": "Draw the big picture", 28 | "key_results": [ 29 | { 30 | "name": "Buy a new home", 31 | "target_result": 1, 32 | "current_result": 1 33 | }, 34 | { 35 | "name": "Write something every other week", 36 | "target_result": 5, 37 | "current_result": 0 38 | }, 39 | { 40 | "name": "Publicly launch [redacted]", 41 | "target_result": 1, 42 | "current_result": 0.5 43 | } 44 | ] 45 | } 46 | ] 47 | } 48 | -------------------------------------------------------------------------------- /okrs/2023/4.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://anandchowdhary.github.io/okrs/schema.json", 3 | "year": 2023, 4 | "quarter": 4, 5 | "objectives": [ 6 | { 7 | "name": "Successful Year of Relashionships", 8 | "key_results": [ 9 | { 10 | "name": "Make 20 outbound calls", 11 | "target_result": 20, 12 | "current_result": 2 13 | }, 14 | { 15 | "name": "Finish activity rings every other day", 16 | "target_result": 37, 17 | "current_result": 21 18 | }, 19 | { 20 | "name": "Complete one book every month", 21 | "target_result": 3, 22 | "current_result": 1 23 | } 24 | ] 25 | }, 26 | { 27 | "name": "Become personally default-alive", 28 | "key_results": [ 29 | { 30 | "name": "Track finances every week", 31 | "target_result": 12, 32 | "current_result": 10 33 | }, 34 | { 35 | "name": "Save for new house", 36 | "target_result": 1, 37 | "current_result": 1 38 | }, 39 | { 40 | "name": "[redacted]", 41 | "target_result": 1, 42 | "current_result": 0.6 43 | } 44 | ] 45 | } 46 | ] 47 | } 48 | -------------------------------------------------------------------------------- /okrs/2024/1.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://anandchowdhary.github.io/okrs/schema.json", 3 | "year": 2024, 4 | "quarter": 1, 5 | "objectives": [ 6 | { 7 | "name": "Move in to new house", 8 | "key_results": [ 9 | { 10 | "name": "Fully move from rental to owned house", 11 | "target_result": 1, 12 | "current_result": 1 13 | }, 14 | { 15 | "name": "Furnish and set up workspace", 16 | "target_result": 1, 17 | "current_result": 1 18 | }, 19 | { 20 | "name": "Update registrations and legal work", 21 | "target_result": 1, 22 | "current_result": 1 23 | } 24 | ] 25 | }, 26 | { 27 | "name": "Strong start to 2024", 28 | "key_results": [ 29 | { 30 | "name": "Track finances every week", 31 | "target_result": 12, 32 | "current_result": 8 33 | }, 34 | { 35 | "name": "Write 1 blog post every month", 36 | "target_result": 3, 37 | "current_result": 1 38 | }, 39 | { 40 | "name": "Publicly launch new company", 41 | "target_result": 1, 42 | "current_result": 1 43 | } 44 | ] 45 | } 46 | ] 47 | } 48 | -------------------------------------------------------------------------------- /scripts/summarize.d.ts: -------------------------------------------------------------------------------- 1 | /** JSON API type */ 2 | export interface OkrApi { 3 | /** Last updated date */ 4 | updatedAt: string; 5 | 6 | /** OKR key-value pair with year and data */ 7 | years: { 8 | name: number; 9 | progress: number; 10 | success: number; 11 | quarters: { 12 | name: number; 13 | progress: number; 14 | success: number; 15 | objectives: { 16 | name: string; 17 | progress: number; 18 | success: number; 19 | key_results: { 20 | name: string; 21 | target_result: number; 22 | current_result: number; 23 | progress: number; 24 | success: number; 25 | }[]; 26 | }[]; 27 | }[]; 28 | }[]; 29 | } 30 | 31 | /** OKR item based on ../schema.json */ 32 | export interface OkrItem { 33 | /** Year */ 34 | year: number; 35 | 36 | /** Quarter */ 37 | quarter: 1 | 2 | 3 | 4; 38 | 39 | /** Objectives for this quarter */ 40 | objectives: { 41 | /** Name of objective */ 42 | name: string; 43 | 44 | /** Key results for this objective */ 45 | key_results: { 46 | /** Name of key result */ 47 | name: string; 48 | 49 | /** Target value */ 50 | target_result: number; 51 | 52 | /** Currently achieved value */ 53 | current_result: number; 54 | }[]; 55 | }[]; 56 | } 57 | -------------------------------------------------------------------------------- /schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft-07/schema", 3 | "$id": "https://anandchowdhary.github.io/okrs/schema.json", 4 | "title": "OKR", 5 | "description": "Object and Key Results with progress", 6 | "type": "object", 7 | "properties": { 8 | "year": { 9 | "description": "Year", 10 | "type": "integer", 11 | "minimum": 2000, 12 | "maximum": 3000 13 | }, 14 | "quarter": { 15 | "description": "Quarter", 16 | "type": "integer", 17 | "minimum": 1, 18 | "maximum": 4 19 | }, 20 | "objectives": { 21 | "description": "Objectives for this quarter", 22 | "type": "array", 23 | "items": { 24 | "description": "Key results for this objective", 25 | "type": "object", 26 | "properties": { 27 | "name": { "type": "string" }, 28 | "key_results": { 29 | "description": "Metrics for this key result", 30 | "type": "array", 31 | "items": { 32 | "type": "object", 33 | "properties": { 34 | "name": { "type": "string" }, 35 | "target_result": { "type": "number" }, 36 | "current_result": { "type": "number" } 37 | }, 38 | "additionalProperties": false, 39 | "required": ["name", "target_result", "current_result"] 40 | }, 41 | "minItems": 2, 42 | "maxItems": 5, 43 | "uniqueItems": true 44 | } 45 | }, 46 | "additionalProperties": false, 47 | "required": ["name", "key_results"] 48 | }, 49 | "minItems": 1, 50 | "maxItems": 5, 51 | "uniqueItems": true 52 | } 53 | }, 54 | "required": ["year", "quarter", "objectives"] 55 | } 56 | -------------------------------------------------------------------------------- /okrs/2021/4.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://anandchowdhary.github.io/okrs/schema.json", 3 | "year": 2021, 4 | "quarter": 4, 5 | "objectives": [ 6 | { 7 | "name": "Start getting healthy", 8 | "key_results": [ 9 | { 10 | "name": "Work out twice a week", 11 | "target_result": 24, 12 | "current_result": 12 13 | }, 14 | { 15 | "name": "Stay under 1,700 kcal/day", 16 | "target_result": 91, 17 | "current_result": 90 18 | }, 19 | { 20 | "name": "Lose 10 kg by birthday", 21 | "target_result": 10, 22 | "current_result": 10 23 | } 24 | ] 25 | }, 26 | { 27 | "name": "Get back to work", 28 | "key_results": [ 29 | { 30 | "name": "[redacted]", 31 | "target_result": 1, 32 | "current_result": 0.4485 33 | }, 34 | { 35 | "name": "Do proper 1:1s with reports", 36 | "target_result": 12, 37 | "current_result": 10 38 | }, 39 | { 40 | "name": "Read 1 book per month", 41 | "target_result": 3, 42 | "current_result": 0 43 | } 44 | ] 45 | }, 46 | { 47 | "name": "Get ready for 2022", 48 | "key_results": [ 49 | { 50 | "name": "Register Dutch subsidiary", 51 | "target_result": 1, 52 | "current_result": 1 53 | }, 54 | { 55 | "name": "Apply for residence permit", 56 | "target_result": 1, 57 | "current_result": 1 58 | }, 59 | { 60 | "name": "Have [redacted] in savings", 61 | "target_result": 1000, 62 | "current_result": 0 63 | } 64 | ] 65 | } 66 | ] 67 | } 68 | -------------------------------------------------------------------------------- /okrs/2023/1.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://anandchowdhary.github.io/okrs/schema.json", 3 | "year": 2023, 4 | "quarter": 1, 5 | "objectives": [ 6 | { 7 | "name": "Kickstart 2023", 8 | "key_results": [ 9 | { 10 | "name": "Get married", 11 | "target_result": 1, 12 | "current_result": 1 13 | }, 14 | { 15 | "name": "Research real estate and view 10 apartments", 16 | "target_result": 10, 17 | "current_result": 0 18 | }, 19 | { 20 | "name": "[redacted]", 21 | "target_result": 1, 22 | "current_result": 1 23 | } 24 | ] 25 | }, 26 | { 27 | "name": "Work towards a strong mind", 28 | "key_results": [ 29 | { 30 | "name": "Complete one book every month", 31 | "target_result": 3, 32 | "current_result": 1 33 | }, 34 | { 35 | "name": "Do therapy 2 or more times monthly", 36 | "target_result": 24, 37 | "current_result": 4 38 | }, 39 | { 40 | "name": "Properly review every week", 41 | "target_result": 12, 42 | "current_result": 0 43 | } 44 | ] 45 | }, 46 | { 47 | "name": "Work towards a strong body", 48 | "key_results": [ 49 | { 50 | "name": "Work out 2 or more times weekly", 51 | "target_result": 24, 52 | "current_result": 27 53 | }, 54 | { 55 | "name": "Track calories every day", 56 | "target_result": 92, 57 | "current_result": 3 58 | }, 59 | { 60 | "name": "Lose 5 kg more", 61 | "target_result": 5, 62 | "current_result": 1.5 63 | } 64 | ] 65 | } 66 | ] 67 | } 68 | -------------------------------------------------------------------------------- /okrs/2022/2.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://anandchowdhary.github.io/okrs/schema.json", 3 | "year": 2022, 4 | "quarter": 2, 5 | "objectives": [ 6 | { 7 | "name": "Accelerate body and mind progress", 8 | "key_results": [ 9 | { 10 | "name": "Work out twice every week", 11 | "target_result": 26, 12 | "current_result": 15 13 | }, 14 | { 15 | "name": "Complete one book every month", 16 | "target_result": 3, 17 | "current_result": 1 18 | }, 19 | { 20 | "name": "Take structured days off", 21 | "target_result": 20, 22 | "current_result": 10 23 | } 24 | ] 25 | }, 26 | { 27 | "name": "Invest in support system", 28 | "key_results": [ 29 | { 30 | "name": "Weekly date nights", 31 | "target_result": 13, 32 | "current_result": 7 33 | }, 34 | { 35 | "name": "Biweekly round-robin calls home", 36 | "target_result": 26, 37 | "current_result": 12 38 | }, 39 | { 40 | "name": "Set up and use personal CRM", 41 | "target_result": 1, 42 | "current_result": 0.2 43 | } 44 | ] 45 | }, 46 | { 47 | "name": "Work harder and smarter", 48 | "key_results": [ 49 | { 50 | "name": "[redacted]", 51 | "target_result": 1, 52 | "current_result": 0.5 53 | }, 54 | { 55 | "name": "Well-prepared 1:1s with direct reports", 56 | "target_result": 13, 57 | "current_result": 4 58 | }, 59 | { 60 | "name": "Invest €1000 × [redacted]", 61 | "target_result": 1000, 62 | "current_result": 0 63 | } 64 | ] 65 | } 66 | ] 67 | } 68 | -------------------------------------------------------------------------------- /okrs/2022/1.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://anandchowdhary.github.io/okrs/schema.json", 3 | "year": 2022, 4 | "quarter": 1, 5 | "objectives": [ 6 | { 7 | "name": "Keep body and mind on track", 8 | "key_results": [ 9 | { 10 | "name": "Maintain weight of less than 75 kg", 11 | "target_result": 13, 12 | "current_result": 13 13 | }, 14 | { 15 | "name": "Work out twice every week", 16 | "target_result": 26, 17 | "current_result": 4 18 | }, 19 | { 20 | "name": "Read one book every month", 21 | "target_result": 3, 22 | "current_result": 1 23 | } 24 | ] 25 | }, 26 | { 27 | "name": "Set up for a great 2022", 28 | "key_results": [ 29 | { 30 | "name": "[redacted]", 31 | "target_result": 1, 32 | "current_result": 0.5 33 | }, 34 | { 35 | "name": "Buy a ring and plan proposal", 36 | "target_result": 1, 37 | "current_result": 0.35 38 | }, 39 | { 40 | "name": "Convert engineering to autopilot", 41 | "target_result": 3, 42 | "current_result": 0.6 43 | } 44 | ] 45 | }, 46 | { 47 | "name": "Manage money better", 48 | "key_results": [ 49 | { 50 | "name": "Breakeven every month", 51 | "target_result": 3, 52 | "current_result": 3 53 | }, 54 | { 55 | "name": "Set up 2021 personal and corporate taxes", 56 | "target_result": 1, 57 | "current_result": 1 58 | }, 59 | { 60 | "name": "Renew residence permit until Q2 2023", 61 | "target_result": 1, 62 | "current_result": 1 63 | } 64 | ] 65 | } 66 | ] 67 | } 68 | -------------------------------------------------------------------------------- /okrs/2022/4.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://anandchowdhary.github.io/okrs/schema.json", 3 | "year": 2022, 4 | "quarter": 4, 5 | "objectives": [ 6 | { 7 | "name": "Continue working on health goals", 8 | "key_results": [ 9 | { 10 | "name": "Work out 3 or more times weekly", 11 | "target_result": 39, 12 | "current_result": 10 13 | }, 14 | { 15 | "name": "Complete one book every month", 16 | "target_result": 3, 17 | "current_result": 1.1 18 | }, 19 | { 20 | "name": "Do therapy 3 or more times monthly", 21 | "target_result": 12, 22 | "current_result": 6 23 | } 24 | ] 25 | }, 26 | { 27 | "name": "Stop procrastinating on growth", 28 | "key_results": [ 29 | { 30 | "name": "Finalize city and apartment for 2023", 31 | "target_result": 1, 32 | "current_result": 0.3 33 | }, 34 | { 35 | "name": "Properly prepare for all 1:1s", 36 | "target_result": 12, 37 | "current_result": 5 38 | }, 39 | { 40 | "name": "Set up and use personal CRM", 41 | "target_result": 1, 42 | "current_result": 0.5 43 | } 44 | ] 45 | }, 46 | { 47 | "name": "Get ready for 2023", 48 | "key_results": [ 49 | { 50 | "name": "Prepare for the wedding in Q1", 51 | "target_result": 1, 52 | "current_result": 0.6 53 | }, 54 | { 55 | "name": "Document & reflect on 2022, set up theme", 56 | "target_result": 1, 57 | "current_result": 0.3 58 | }, 59 | { 60 | "name": "[redacted]", 61 | "target_result": 1, 62 | "current_result": 0.4 63 | } 64 | ] 65 | } 66 | ] 67 | } 68 | -------------------------------------------------------------------------------- /okrs/2022/3.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://anandchowdhary.github.io/okrs/schema.json", 3 | "year": 2022, 4 | "quarter": 3, 5 | "objectives": [ 6 | { 7 | "name": "Improve physical and mental health", 8 | "key_results": [ 9 | { 10 | "name": "Work out 3 or more times weekly", 11 | "target_result": 39, 12 | "current_result": 12 13 | }, 14 | { 15 | "name": "Complete one book every month", 16 | "target_result": 3, 17 | "current_result": 3.15 18 | }, 19 | { 20 | "name": "Meditate or breathwork once a week", 21 | "target_result": 13, 22 | "current_result": 2 23 | } 24 | ] 25 | }, 26 | { 27 | "name": "Get engaged to be married", 28 | "key_results": [ 29 | { 30 | "name": "Hold engagement celebration in India", 31 | "target_result": 1, 32 | "current_result": 1 33 | }, 34 | { 35 | "name": "Plan wedding (venue, date, guests)", 36 | "target_result": 1, 37 | "current_result": 0.7 38 | }, 39 | { 40 | "name": "Set up and use personal CRM", 41 | "target_result": 1, 42 | "current_result": 0.1 43 | } 44 | ] 45 | }, 46 | { 47 | "name": "Start planning for the long term", 48 | "key_results": [ 49 | { 50 | "name": "[redacted]", 51 | "target_result": 1, 52 | "current_result": 0.2 53 | }, 54 | { 55 | "name": "Get residence permit with HSM", 56 | "target_result": 1, 57 | "current_result": 0.9 58 | }, 59 | { 60 | "name": "Finalize mortgage or rent for Q4", 61 | "target_result": 1, 62 | "current_result": 0.1 63 | } 64 | ] 65 | } 66 | ] 67 | } 68 | -------------------------------------------------------------------------------- /scripts/summarize.mjs: -------------------------------------------------------------------------------- 1 | /** @typedef { import("./summarize").OkrItem } OkrItem */ 2 | /** @typedef { import("./summarize").OkrApi } OkrApi */ 3 | 4 | import { resolve, join, extname } from "path"; 5 | import { readdir, readFile, writeFile } from "fs/promises"; 6 | 7 | /** 8 | * Summarize OKRs and generate `./README.md` and `./api.json` 9 | * @example `node scripts/summarize.mjs run` 10 | */ 11 | export async function summarize() { 12 | /** @type {OkrApi} */ 13 | const api = { updatedAt: new Date().toISOString(), years: [] }; 14 | 15 | for await (const fileName of getFiles(join(".", "okrs"))) { 16 | if (extname(fileName) !== ".json") { 17 | console.warn("Got non-JSON file, skipping", fileName); 18 | continue; 19 | } 20 | 21 | /** @type {OkrItem} */ 22 | const contents = JSON.parse(await readFile(fileName, "utf8")); 23 | /** @type {OkrApi["years"][0]["quarters"][0]} */ 24 | if (!api.years.find((year) => year.name === contents.year)) 25 | api.years.push({ 26 | name: contents.year, 27 | progress: 0, 28 | success: 0, 29 | quarters: [], 30 | }); 31 | const quarter = { 32 | name: contents.quarter, 33 | progress: 0, 34 | success: 0, 35 | objectives: [], 36 | }; 37 | 38 | const quarterStartDate = new Date(); 39 | quarterStartDate.setUTCFullYear(contents.year); 40 | quarterStartDate.setUTCMonth((quarter.name - 1) * 3); 41 | quarterStartDate.setUTCDate(1); 42 | quarterStartDate.setUTCHours(0); 43 | quarterStartDate.setUTCMinutes(0); 44 | quarterStartDate.setUTCSeconds(0); 45 | quarterStartDate.setUTCMilliseconds(0); 46 | const quarterCompleted = roundTwoDecimals( 47 | Math.min( 48 | 1, 49 | Math.round( 50 | (new Date().getTime() - quarterStartDate.getTime()) / 86400000 51 | ) / 91.25 52 | ) 53 | ); 54 | 55 | contents.objectives.forEach((objective) => { 56 | quarter.objectives.push({ 57 | name: objective.name, 58 | progress: 0, 59 | success: 0, 60 | key_results: objective.key_results.map( 61 | ({ name, current_result, target_result }) => ({ 62 | name, 63 | current_result, 64 | target_result, 65 | progress: roundTwoDecimals(current_result / target_result), 66 | success: roundTwoDecimals( 67 | current_result / target_result / quarterCompleted 68 | ), 69 | }) 70 | ), 71 | }); 72 | }); 73 | api.years = api.years.map((year) => { 74 | if (year.name === contents.year) 75 | return { ...year, quarters: [...year.quarters, quarter] }; 76 | return year; 77 | }); 78 | } 79 | 80 | api.years = api.years 81 | .map((year) => { 82 | const yearStartDate = new Date(); 83 | yearStartDate.setUTCFullYear(year.name); 84 | yearStartDate.setUTCMonth(0); 85 | yearStartDate.setUTCDate(1); 86 | yearStartDate.setUTCHours(0); 87 | yearStartDate.setUTCMinutes(0); 88 | yearStartDate.setUTCSeconds(0); 89 | yearStartDate.setUTCMilliseconds(0); 90 | const yearCompleted = roundTwoDecimals( 91 | Math.min( 92 | 1, 93 | Math.round( 94 | (new Date().getTime() - yearStartDate.getTime()) / 86400000 95 | ) / 365.25 96 | ) 97 | ); 98 | 99 | year.quarters = year.quarters 100 | .map((quarter) => { 101 | const objectives = quarter.objectives.map((objective) => { 102 | return { 103 | ...objective, 104 | progress: roundTwoDecimals( 105 | objective.key_results 106 | .map( 107 | (keyResult) => 108 | keyResult.current_result / keyResult.target_result 109 | ) 110 | .reduce((a, b) => a + b, 0) / objective.key_results.length 111 | ), 112 | success: roundTwoDecimals( 113 | objective.key_results 114 | .map((keyResult) => keyResult.success) 115 | .reduce((a, b) => a + b, 0) / objective.key_results.length 116 | ), 117 | }; 118 | }); 119 | return { 120 | ...quarter, 121 | objectives, 122 | progress: roundTwoDecimals( 123 | objectives 124 | .map((objective) => objective.progress) 125 | .reduce((a, b) => a + b, 0) / objectives.length 126 | ), 127 | success: roundTwoDecimals( 128 | objectives 129 | .map((objective) => objective.success) 130 | .reduce((a, b) => a + b, 0) / objectives.length 131 | ), 132 | }; 133 | }) 134 | .sort((a, b) => b.name - a.name); 135 | year.progress = roundTwoDecimals( 136 | year.quarters 137 | .map((quarter) => quarter.progress) 138 | .reduce((a, b) => a + b, 0) / year.quarters.length 139 | ); 140 | year.success = roundTwoDecimals( 141 | year.quarters 142 | .map((quarter) => quarter.progress) 143 | .reduce((a, b) => a + b, 0) / 144 | year.quarters.length / 145 | yearCompleted 146 | ); 147 | return year; 148 | }) 149 | .sort((a, b) => b.name - a.name); 150 | 151 | writeFile(join(".", "api.json"), `${JSON.stringify(api, null, 2)}\n`); 152 | 153 | /** @type {string} */ 154 | const README = await readFile(join(".", "README.md"), "utf8"); 155 | let summary = api.years 156 | .flatMap((year) => 157 | year.quarters.map((quarter) => ({ ...quarter, year: year.name })) 158 | ) 159 | .map( 160 | (quarter, index) => `${index === 0 161 | ? `## 📈 Current OKRs – Q${quarter.name} ${quarter.year} (${roundTwoDecimals(quarter.success * 100)}%)\n\n` 162 | : index === 1 163 | ? "## ✅ Past OKRs\n\n" 164 | : "" 165 | }${index === 0 166 | ? "
" 167 | : `
\n Q${quarter.name} ${quarter.year} (${roundTwoDecimals(quarter.success * 100)}%)` 168 | } 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | ${quarter.objectives 179 | .map( 180 | (objective) => ` 181 | 182 | 183 | 186 | 187 | 188 | ${objective.key_results 189 | .map( 190 | (keyResult) => 191 | ` 192 | 193 | 194 | 197 | 198 | ` 199 | ) 200 | .join("\n")}` 201 | ) 202 | .join("\n")} 203 | 204 |
OKRSuccessProgress
${objective.name}${roundTwoDecimals(objective.success * 100)}%${"🟩".repeat(Math.round(objective.progress * 10))}${"⬜".repeat( 184 | 10 - Math.round(objective.progress * 10) 185 | )}${roundTwoDecimals(objective.progress * 100)}%
↳ ${keyResult.name}${roundTwoDecimals(keyResult.success * 100)}%${"🟨".repeat(Math.min(10, Math.round(keyResult.progress * 10)))}${"⬜".repeat( 195 | Math.max(0, 10 - Math.round(keyResult.progress * 10)) 196 | )}${roundTwoDecimals(keyResult.progress * 100)}%
205 | ${index === 0 ? "
" : ""} 206 | ` 207 | ) 208 | .join("\n"); 209 | 210 | writeFile( 211 | join(".", "README.md"), 212 | `${README.split("")[0] 213 | } 214 | 215 | ${summary.trim()} 216 | 217 | ${README.split("")[1] 218 | }` 219 | ); 220 | } 221 | 222 | /** 223 | * Recursively list all files in a directory 224 | * @param {string} dir - Directory to walk 225 | * @returns {AsyncGenerator} 226 | * @link https://stackoverflow.com/a/45130990/1656944 227 | * @license CC BY-SA 4.0 228 | */ 229 | async function* getFiles(directory) { 230 | const contents = await readdir(directory, { withFileTypes: true }); 231 | for (const item of contents) { 232 | const res = resolve(directory, item.name); 233 | if (item.isDirectory()) { 234 | yield* getFiles(res); 235 | } else { 236 | yield res; 237 | } 238 | } 239 | } 240 | 241 | /** 242 | * Round a number to up to two decimal places 243 | * @param {number} value - Number to round 244 | * @returns {number} - Rounded value 245 | */ 246 | function roundTwoDecimals(value) { 247 | return Math.round(value * 100) / 100; 248 | } 249 | 250 | // Run summarize() if using via CLI 251 | if (process.argv.pop() === "run") summarize(); 252 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🧭 OKRs 2 | 3 | I use **Objectives and Key Results** both for my personal and professional life ([OKRs on Wikipedia](https://en.wikipedia.org/wiki/OKR)). This repository is the source of truth of my progress for my personal goals. I update these numbers weekly. 4 | 5 | **API**: https://anandchowdhary.github.io/okrs/api.json 6 | 7 | 8 | 9 | ## 📈 Current OKRs – Q1 2024 (99%) 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 |
OKRSuccessProgress
Move in to new house119%🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩100%
↳ Fully move from rental to owned house119%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ Furnish and set up workspace119%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ Update registrations and legal work119%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
Strong start to 202479%🟩🟩🟩🟩🟩🟩🟩⬜⬜⬜67%
↳ Track finances every week79%🟨🟨🟨🟨🟨🟨🟨⬜⬜⬜67%
↳ Write 1 blog post every month40%🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜33%
↳ Publicly launch new company119%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
71 |
72 | 73 | ## ✅ Past OKRs 74 | 75 |
76 | Q4 2023 (57%) 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 |
OKRSuccessProgress
Successful Year of Relashionships33%🟩🟩🟩⬜⬜⬜⬜⬜⬜⬜33%
↳ Make 20 outbound calls10%🟨⬜⬜⬜⬜⬜⬜⬜⬜⬜10%
↳ Finish activity rings every other day57%🟨🟨🟨🟨🟨🟨⬜⬜⬜⬜57%
↳ Complete one book every month33%🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜33%
Become personally default-alive81%🟩🟩🟩🟩🟩🟩🟩🟩⬜⬜81%
↳ Track finances every week83%🟨🟨🟨🟨🟨🟨🟨🟨⬜⬜83%
↳ Save for new house100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ [redacted]60%🟨🟨🟨🟨🟨🟨⬜⬜⬜⬜60%
136 |
137 | 138 |
139 | Q3 2023 (57%) 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 |
OKRSuccessProgress
Settle in to Utrecht65%🟩🟩🟩🟩🟩🟩🟩⬜⬜⬜65%
↳ Move in to new apartment100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ Finish activity rings every other day95%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨95%
↳ Complete one book every month0%⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜0%
Draw the big picture50%🟩🟩🟩🟩🟩⬜⬜⬜⬜⬜50%
↳ Buy a new home100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ Write something every other week0%⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜0%
↳ Publicly launch [redacted]50%🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜50%
199 |
200 | 201 |
202 | Q2 2023 (39%) 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 |
OKRSuccessProgress
Make big changes50%🟩🟩🟩🟩🟩⬜⬜⬜⬜⬜50%
↳ Successful trip to India100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ Launch [redacted]50%🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜50%
↳ Weigh 70 kg by Q30%⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜0%
Stronger health after recharging27%🟩🟩🟩⬜⬜⬜⬜⬜⬜⬜27%
↳ Complete one book every month0%⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜0%
↳ Go to the gym 20 times after April30%🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜30%
↳ Continue therapy after April50%🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜50%
262 |
263 | 264 |
265 | Q1 2023 (44%) 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 |
OKRSuccessProgress
Kickstart 202367%🟩🟩🟩🟩🟩🟩🟩⬜⬜⬜67%
↳ Get married100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ Research real estate and view 10 apartments0%⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜0%
↳ [redacted]100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
Work towards a strong mind17%🟩🟩⬜⬜⬜⬜⬜⬜⬜⬜17%
↳ Complete one book every month33%🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜33%
↳ Do therapy 2 or more times monthly17%🟨🟨⬜⬜⬜⬜⬜⬜⬜⬜17%
↳ Properly review every week0%⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜0%
Work towards a strong body49%🟩🟩🟩🟩🟩⬜⬜⬜⬜⬜49%
↳ Work out 2 or more times weekly113%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨113%
↳ Track calories every day3%⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜3%
↳ Lose 5 kg more30%🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜30%
349 |
350 | 351 |
352 | Q4 2022 (41%) 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 |
OKRSuccessProgress
Continue working on health goals38%🟩🟩🟩🟩⬜⬜⬜⬜⬜⬜37%
↳ Work out 3 or more times weekly26%🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜26%
↳ Complete one book every month37%🟨🟨🟨🟨⬜⬜⬜⬜⬜⬜37%
↳ Do therapy 3 or more times monthly50%🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜50%
Stop procrastinating on growth41%🟩🟩🟩🟩⬜⬜⬜⬜⬜⬜41%
↳ Finalize city and apartment for 202330%🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜30%
↳ Properly prepare for all 1:1s42%🟨🟨🟨🟨⬜⬜⬜⬜⬜⬜42%
↳ Set up and use personal CRM50%🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜50%
Get ready for 202343%🟩🟩🟩🟩⬜⬜⬜⬜⬜⬜43%
↳ Prepare for the wedding in Q160%🟨🟨🟨🟨🟨🟨⬜⬜⬜⬜60%
↳ Document & reflect on 2022, set up theme30%🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜30%
↳ [redacted]40%🟨🟨🟨🟨⬜⬜⬜⬜⬜⬜40%
436 |
437 | 438 |
439 | Q3 2022 (50%) 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 |
OKRSuccessProgress
Improve physical and mental health50%🟩🟩🟩🟩🟩⬜⬜⬜⬜⬜50%
↳ Work out 3 or more times weekly31%🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜31%
↳ Complete one book every month105%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨105%
↳ Meditate or breathwork once a week15%🟨🟨⬜⬜⬜⬜⬜⬜⬜⬜15%
Get engaged to be married60%🟩🟩🟩🟩🟩🟩⬜⬜⬜⬜60%
↳ Hold engagement celebration in India100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ Plan wedding (venue, date, guests)70%🟨🟨🟨🟨🟨🟨🟨⬜⬜⬜70%
↳ Set up and use personal CRM10%🟨⬜⬜⬜⬜⬜⬜⬜⬜⬜10%
Start planning for the long term40%🟩🟩🟩🟩⬜⬜⬜⬜⬜⬜40%
↳ [redacted]20%🟨🟨⬜⬜⬜⬜⬜⬜⬜⬜20%
↳ Get residence permit with HSM90%🟨🟨🟨🟨🟨🟨🟨🟨🟨⬜90%
↳ Finalize mortgage or rent for Q410%🟨⬜⬜⬜⬜⬜⬜⬜⬜⬜10%
523 |
524 | 525 |
526 | Q2 2022 (38%) 527 | 528 | 529 | 530 | 531 | 532 | 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 558 | 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 |
OKRSuccessProgress
Accelerate body and mind progress47%🟩🟩🟩🟩🟩⬜⬜⬜⬜⬜47%
↳ Work out twice every week58%🟨🟨🟨🟨🟨🟨⬜⬜⬜⬜58%
↳ Complete one book every month33%🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜33%
↳ Take structured days off50%🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜50%
Invest in support system40%🟩🟩🟩🟩⬜⬜⬜⬜⬜⬜40%
↳ Weekly date nights54%🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜54%
↳ Biweekly round-robin calls home46%🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜46%
↳ Set up and use personal CRM20%🟨🟨⬜⬜⬜⬜⬜⬜⬜⬜20%
Work harder and smarter27%🟩🟩🟩⬜⬜⬜⬜⬜⬜⬜27%
↳ [redacted]50%🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜50%
↳ Well-prepared 1:1s with direct reports31%🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜31%
↳ Invest €1000 × [redacted]0%⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜0%
610 |
611 | 612 |
613 | Q1 2022 (61%) 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 |
OKRSuccessProgress
Keep body and mind on track49%🟩🟩🟩🟩🟩⬜⬜⬜⬜⬜50%
↳ Maintain weight of less than 75 kg100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ Work out twice every week15%🟨🟨⬜⬜⬜⬜⬜⬜⬜⬜15%
↳ Read one book every month33%🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜33%
Set up for a great 202235%🟩🟩🟩🟩⬜⬜⬜⬜⬜⬜35%
↳ [redacted]50%🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜50%
↳ Buy a ring and plan proposal35%🟨🟨🟨🟨⬜⬜⬜⬜⬜⬜35%
↳ Convert engineering to autopilot20%🟨🟨⬜⬜⬜⬜⬜⬜⬜⬜20%
Manage money better100%🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩100%
↳ Breakeven every month100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ Set up 2021 personal and corporate taxes100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ Renew residence permit until Q2 2023100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
697 |
698 | 699 |
700 | Q4 2021 (64%) 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 |
OKRSuccessProgress
Start getting healthy83%🟩🟩🟩🟩🟩🟩🟩🟩⬜⬜83%
↳ Work out twice a week50%🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜50%
↳ Stay under 1,700 kcal/day99%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨99%
↳ Lose 10 kg by birthday100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
Get back to work43%🟩🟩🟩🟩⬜⬜⬜⬜⬜⬜43%
↳ [redacted]45%🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜45%
↳ Do proper 1:1s with reports83%🟨🟨🟨🟨🟨🟨🟨🟨⬜⬜83%
↳ Read 1 book per month0%⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜0%
Get ready for 202267%🟩🟩🟩🟩🟩🟩🟩⬜⬜⬜67%
↳ Register Dutch subsidiary100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ Apply for residence permit100%🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨100%
↳ Have [redacted] in savings0%⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜0%
784 |
785 | 786 | 787 | 788 | ## ℹ️ About this repository 789 | 790 | If you want your own OKRs tracker, you can [fork this repository](https://github.com/AnandChowdhary/okrs/fork) and set up the repository with the following file structure: 791 | 792 | ``` 793 | ├── README.md 794 | ├── .github 795 | │ └── workflows 796 | │ └── node.yml 797 | └── okrs 798 | ├── 2019 799 | │ ├── 3.md 800 | │ └── 4.md 801 | └── 2020 802 | └── 1.md 803 | ``` 804 | 805 | Using GitHub Actions, `api.json` and `README.md` will be auto-generated. When creating new OKRs for a quarter, follow the [JSON schema](https://anandchowdhary.github.io/okrs/schema.json) by duplicating one of the files in the [`./okrs`](./okrs) directory: 806 | 807 | ```json 808 | { 809 | "$schema": "https://anandchowdhary.github.io/okrs/schema.json", 810 | "year": 2021, 811 | "quarter": 4, 812 | "objectives": [ 813 | { 814 | "name": "Objective 1", 815 | "key_results": [ 816 | { 817 | "name": "Key result 1", 818 | "target_result": 10, 819 | "current_result": 1 820 | } 821 | ] 822 | } 823 | ] 824 | } 825 | ``` 826 | 827 | You can use the git commit history as a way to track progress of an OKR, for example looking at the history of my Q4 2021 OKRs: https://github.com/AnandChowdhary/okrs/commits/main/okrs/2021/4.json. A more sophisticated system can be set up that tracks changes to one line using `git log` like so: 828 | 829 | ```bash 830 | git log -L17,+1:'okrs/2021/4.json' 831 | ``` 832 | 833 | ## 📄 License 834 | 835 | - Code in the `scripts` directory: [MIT](./LICENSE) © [Anand Chowdhary](https://anandchowdhary.com) 836 | - Content in the `okrs` directory: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) © [Anand Chowdhary](https://anandchowdhary.com) 837 | - "GitHub" is a trademark of GitHub, Inc. 838 | -------------------------------------------------------------------------------- /api.json: -------------------------------------------------------------------------------- 1 | { 2 | "updatedAt": "2024-03-18T10:56:50.712Z", 3 | "years": [ 4 | { 5 | "name": 2024, 6 | "progress": 0.84, 7 | "success": 4, 8 | "quarters": [ 9 | { 10 | "name": 1, 11 | "progress": 0.84, 12 | "success": 0.99, 13 | "objectives": [ 14 | { 15 | "name": "Move in to new house", 16 | "progress": 1, 17 | "success": 1.19, 18 | "key_results": [ 19 | { 20 | "name": "Fully move from rental to owned house", 21 | "current_result": 1, 22 | "target_result": 1, 23 | "progress": 1, 24 | "success": 1.19 25 | }, 26 | { 27 | "name": "Furnish and set up workspace", 28 | "current_result": 1, 29 | "target_result": 1, 30 | "progress": 1, 31 | "success": 1.19 32 | }, 33 | { 34 | "name": "Update registrations and legal work", 35 | "current_result": 1, 36 | "target_result": 1, 37 | "progress": 1, 38 | "success": 1.19 39 | } 40 | ] 41 | }, 42 | { 43 | "name": "Strong start to 2024", 44 | "progress": 0.67, 45 | "success": 0.79, 46 | "key_results": [ 47 | { 48 | "name": "Track finances every week", 49 | "current_result": 8, 50 | "target_result": 12, 51 | "progress": 0.67, 52 | "success": 0.79 53 | }, 54 | { 55 | "name": "Write 1 blog post every month", 56 | "current_result": 1, 57 | "target_result": 3, 58 | "progress": 0.33, 59 | "success": 0.4 60 | }, 61 | { 62 | "name": "Publicly launch new company", 63 | "current_result": 1, 64 | "target_result": 1, 65 | "progress": 1, 66 | "success": 1.19 67 | } 68 | ] 69 | } 70 | ] 71 | } 72 | ] 73 | }, 74 | { 75 | "name": 2023, 76 | "progress": 0.49, 77 | "success": 0.49, 78 | "quarters": [ 79 | { 80 | "name": 4, 81 | "progress": 0.57, 82 | "success": 0.57, 83 | "objectives": [ 84 | { 85 | "name": "Successful Year of Relashionships", 86 | "progress": 0.33, 87 | "success": 0.33, 88 | "key_results": [ 89 | { 90 | "name": "Make 20 outbound calls", 91 | "current_result": 2, 92 | "target_result": 20, 93 | "progress": 0.1, 94 | "success": 0.1 95 | }, 96 | { 97 | "name": "Finish activity rings every other day", 98 | "current_result": 21, 99 | "target_result": 37, 100 | "progress": 0.57, 101 | "success": 0.57 102 | }, 103 | { 104 | "name": "Complete one book every month", 105 | "current_result": 1, 106 | "target_result": 3, 107 | "progress": 0.33, 108 | "success": 0.33 109 | } 110 | ] 111 | }, 112 | { 113 | "name": "Become personally default-alive", 114 | "progress": 0.81, 115 | "success": 0.81, 116 | "key_results": [ 117 | { 118 | "name": "Track finances every week", 119 | "current_result": 10, 120 | "target_result": 12, 121 | "progress": 0.83, 122 | "success": 0.83 123 | }, 124 | { 125 | "name": "Save for new house", 126 | "current_result": 1, 127 | "target_result": 1, 128 | "progress": 1, 129 | "success": 1 130 | }, 131 | { 132 | "name": "[redacted]", 133 | "current_result": 0.6, 134 | "target_result": 1, 135 | "progress": 0.6, 136 | "success": 0.6 137 | } 138 | ] 139 | } 140 | ] 141 | }, 142 | { 143 | "name": 3, 144 | "progress": 0.57, 145 | "success": 0.57, 146 | "objectives": [ 147 | { 148 | "name": "Settle in to Utrecht", 149 | "progress": 0.65, 150 | "success": 0.65, 151 | "key_results": [ 152 | { 153 | "name": "Move in to new apartment", 154 | "current_result": 1, 155 | "target_result": 1, 156 | "progress": 1, 157 | "success": 1 158 | }, 159 | { 160 | "name": "Finish activity rings every other day", 161 | "current_result": 35, 162 | "target_result": 37, 163 | "progress": 0.95, 164 | "success": 0.95 165 | }, 166 | { 167 | "name": "Complete one book every month", 168 | "current_result": 0, 169 | "target_result": 3, 170 | "progress": 0, 171 | "success": 0 172 | } 173 | ] 174 | }, 175 | { 176 | "name": "Draw the big picture", 177 | "progress": 0.5, 178 | "success": 0.5, 179 | "key_results": [ 180 | { 181 | "name": "Buy a new home", 182 | "current_result": 1, 183 | "target_result": 1, 184 | "progress": 1, 185 | "success": 1 186 | }, 187 | { 188 | "name": "Write something every other week", 189 | "current_result": 0, 190 | "target_result": 5, 191 | "progress": 0, 192 | "success": 0 193 | }, 194 | { 195 | "name": "Publicly launch [redacted]", 196 | "current_result": 0.5, 197 | "target_result": 1, 198 | "progress": 0.5, 199 | "success": 0.5 200 | } 201 | ] 202 | } 203 | ] 204 | }, 205 | { 206 | "name": 2, 207 | "progress": 0.39, 208 | "success": 0.39, 209 | "objectives": [ 210 | { 211 | "name": "Make big changes", 212 | "progress": 0.5, 213 | "success": 0.5, 214 | "key_results": [ 215 | { 216 | "name": "Successful trip to India", 217 | "current_result": 1, 218 | "target_result": 1, 219 | "progress": 1, 220 | "success": 1 221 | }, 222 | { 223 | "name": "Launch [redacted]", 224 | "current_result": 0.5, 225 | "target_result": 1, 226 | "progress": 0.5, 227 | "success": 0.5 228 | }, 229 | { 230 | "name": "Weigh 70 kg by Q3", 231 | "current_result": 0, 232 | "target_result": 5, 233 | "progress": 0, 234 | "success": 0 235 | } 236 | ] 237 | }, 238 | { 239 | "name": "Stronger health after recharging", 240 | "progress": 0.27, 241 | "success": 0.27, 242 | "key_results": [ 243 | { 244 | "name": "Complete one book every month", 245 | "current_result": 0, 246 | "target_result": 3, 247 | "progress": 0, 248 | "success": 0 249 | }, 250 | { 251 | "name": "Go to the gym 20 times after April", 252 | "current_result": 6, 253 | "target_result": 20, 254 | "progress": 0.3, 255 | "success": 0.3 256 | }, 257 | { 258 | "name": "Continue therapy after April", 259 | "current_result": 3, 260 | "target_result": 6, 261 | "progress": 0.5, 262 | "success": 0.5 263 | } 264 | ] 265 | } 266 | ] 267 | }, 268 | { 269 | "name": 1, 270 | "progress": 0.44, 271 | "success": 0.44, 272 | "objectives": [ 273 | { 274 | "name": "Kickstart 2023", 275 | "progress": 0.67, 276 | "success": 0.67, 277 | "key_results": [ 278 | { 279 | "name": "Get married", 280 | "current_result": 1, 281 | "target_result": 1, 282 | "progress": 1, 283 | "success": 1 284 | }, 285 | { 286 | "name": "Research real estate and view 10 apartments", 287 | "current_result": 0, 288 | "target_result": 10, 289 | "progress": 0, 290 | "success": 0 291 | }, 292 | { 293 | "name": "[redacted]", 294 | "current_result": 1, 295 | "target_result": 1, 296 | "progress": 1, 297 | "success": 1 298 | } 299 | ] 300 | }, 301 | { 302 | "name": "Work towards a strong mind", 303 | "progress": 0.17, 304 | "success": 0.17, 305 | "key_results": [ 306 | { 307 | "name": "Complete one book every month", 308 | "current_result": 1, 309 | "target_result": 3, 310 | "progress": 0.33, 311 | "success": 0.33 312 | }, 313 | { 314 | "name": "Do therapy 2 or more times monthly", 315 | "current_result": 4, 316 | "target_result": 24, 317 | "progress": 0.17, 318 | "success": 0.17 319 | }, 320 | { 321 | "name": "Properly review every week", 322 | "current_result": 0, 323 | "target_result": 12, 324 | "progress": 0, 325 | "success": 0 326 | } 327 | ] 328 | }, 329 | { 330 | "name": "Work towards a strong body", 331 | "progress": 0.49, 332 | "success": 0.49, 333 | "key_results": [ 334 | { 335 | "name": "Work out 2 or more times weekly", 336 | "current_result": 27, 337 | "target_result": 24, 338 | "progress": 1.13, 339 | "success": 1.13 340 | }, 341 | { 342 | "name": "Track calories every day", 343 | "current_result": 3, 344 | "target_result": 92, 345 | "progress": 0.03, 346 | "success": 0.03 347 | }, 348 | { 349 | "name": "Lose 5 kg more", 350 | "current_result": 1.5, 351 | "target_result": 5, 352 | "progress": 0.3, 353 | "success": 0.3 354 | } 355 | ] 356 | } 357 | ] 358 | } 359 | ] 360 | }, 361 | { 362 | "name": 2022, 363 | "progress": 0.48, 364 | "success": 0.48, 365 | "quarters": [ 366 | { 367 | "name": 4, 368 | "progress": 0.4, 369 | "success": 0.41, 370 | "objectives": [ 371 | { 372 | "name": "Continue working on health goals", 373 | "progress": 0.37, 374 | "success": 0.38, 375 | "key_results": [ 376 | { 377 | "name": "Work out 3 or more times weekly", 378 | "current_result": 10, 379 | "target_result": 39, 380 | "progress": 0.26, 381 | "success": 0.26 382 | }, 383 | { 384 | "name": "Complete one book every month", 385 | "current_result": 1.1, 386 | "target_result": 3, 387 | "progress": 0.37, 388 | "success": 0.37 389 | }, 390 | { 391 | "name": "Do therapy 3 or more times monthly", 392 | "current_result": 6, 393 | "target_result": 12, 394 | "progress": 0.5, 395 | "success": 0.5 396 | } 397 | ] 398 | }, 399 | { 400 | "name": "Stop procrastinating on growth", 401 | "progress": 0.41, 402 | "success": 0.41, 403 | "key_results": [ 404 | { 405 | "name": "Finalize city and apartment for 2023", 406 | "current_result": 0.3, 407 | "target_result": 1, 408 | "progress": 0.3, 409 | "success": 0.3 410 | }, 411 | { 412 | "name": "Properly prepare for all 1:1s", 413 | "current_result": 5, 414 | "target_result": 12, 415 | "progress": 0.42, 416 | "success": 0.42 417 | }, 418 | { 419 | "name": "Set up and use personal CRM", 420 | "current_result": 0.5, 421 | "target_result": 1, 422 | "progress": 0.5, 423 | "success": 0.5 424 | } 425 | ] 426 | }, 427 | { 428 | "name": "Get ready for 2023", 429 | "progress": 0.43, 430 | "success": 0.43, 431 | "key_results": [ 432 | { 433 | "name": "Prepare for the wedding in Q1", 434 | "current_result": 0.6, 435 | "target_result": 1, 436 | "progress": 0.6, 437 | "success": 0.6 438 | }, 439 | { 440 | "name": "Document & reflect on 2022, set up theme", 441 | "current_result": 0.3, 442 | "target_result": 1, 443 | "progress": 0.3, 444 | "success": 0.3 445 | }, 446 | { 447 | "name": "[redacted]", 448 | "current_result": 0.4, 449 | "target_result": 1, 450 | "progress": 0.4, 451 | "success": 0.4 452 | } 453 | ] 454 | } 455 | ] 456 | }, 457 | { 458 | "name": 3, 459 | "progress": 0.5, 460 | "success": 0.5, 461 | "objectives": [ 462 | { 463 | "name": "Improve physical and mental health", 464 | "progress": 0.5, 465 | "success": 0.5, 466 | "key_results": [ 467 | { 468 | "name": "Work out 3 or more times weekly", 469 | "current_result": 12, 470 | "target_result": 39, 471 | "progress": 0.31, 472 | "success": 0.31 473 | }, 474 | { 475 | "name": "Complete one book every month", 476 | "current_result": 3.15, 477 | "target_result": 3, 478 | "progress": 1.05, 479 | "success": 1.05 480 | }, 481 | { 482 | "name": "Meditate or breathwork once a week", 483 | "current_result": 2, 484 | "target_result": 13, 485 | "progress": 0.15, 486 | "success": 0.15 487 | } 488 | ] 489 | }, 490 | { 491 | "name": "Get engaged to be married", 492 | "progress": 0.6, 493 | "success": 0.6, 494 | "key_results": [ 495 | { 496 | "name": "Hold engagement celebration in India", 497 | "current_result": 1, 498 | "target_result": 1, 499 | "progress": 1, 500 | "success": 1 501 | }, 502 | { 503 | "name": "Plan wedding (venue, date, guests)", 504 | "current_result": 0.7, 505 | "target_result": 1, 506 | "progress": 0.7, 507 | "success": 0.7 508 | }, 509 | { 510 | "name": "Set up and use personal CRM", 511 | "current_result": 0.1, 512 | "target_result": 1, 513 | "progress": 0.1, 514 | "success": 0.1 515 | } 516 | ] 517 | }, 518 | { 519 | "name": "Start planning for the long term", 520 | "progress": 0.4, 521 | "success": 0.4, 522 | "key_results": [ 523 | { 524 | "name": "[redacted]", 525 | "current_result": 0.2, 526 | "target_result": 1, 527 | "progress": 0.2, 528 | "success": 0.2 529 | }, 530 | { 531 | "name": "Get residence permit with HSM", 532 | "current_result": 0.9, 533 | "target_result": 1, 534 | "progress": 0.9, 535 | "success": 0.9 536 | }, 537 | { 538 | "name": "Finalize mortgage or rent for Q4", 539 | "current_result": 0.1, 540 | "target_result": 1, 541 | "progress": 0.1, 542 | "success": 0.1 543 | } 544 | ] 545 | } 546 | ] 547 | }, 548 | { 549 | "name": 2, 550 | "progress": 0.38, 551 | "success": 0.38, 552 | "objectives": [ 553 | { 554 | "name": "Accelerate body and mind progress", 555 | "progress": 0.47, 556 | "success": 0.47, 557 | "key_results": [ 558 | { 559 | "name": "Work out twice every week", 560 | "current_result": 15, 561 | "target_result": 26, 562 | "progress": 0.58, 563 | "success": 0.58 564 | }, 565 | { 566 | "name": "Complete one book every month", 567 | "current_result": 1, 568 | "target_result": 3, 569 | "progress": 0.33, 570 | "success": 0.33 571 | }, 572 | { 573 | "name": "Take structured days off", 574 | "current_result": 10, 575 | "target_result": 20, 576 | "progress": 0.5, 577 | "success": 0.5 578 | } 579 | ] 580 | }, 581 | { 582 | "name": "Invest in support system", 583 | "progress": 0.4, 584 | "success": 0.4, 585 | "key_results": [ 586 | { 587 | "name": "Weekly date nights", 588 | "current_result": 7, 589 | "target_result": 13, 590 | "progress": 0.54, 591 | "success": 0.54 592 | }, 593 | { 594 | "name": "Biweekly round-robin calls home", 595 | "current_result": 12, 596 | "target_result": 26, 597 | "progress": 0.46, 598 | "success": 0.46 599 | }, 600 | { 601 | "name": "Set up and use personal CRM", 602 | "current_result": 0.2, 603 | "target_result": 1, 604 | "progress": 0.2, 605 | "success": 0.2 606 | } 607 | ] 608 | }, 609 | { 610 | "name": "Work harder and smarter", 611 | "progress": 0.27, 612 | "success": 0.27, 613 | "key_results": [ 614 | { 615 | "name": "[redacted]", 616 | "current_result": 0.5, 617 | "target_result": 1, 618 | "progress": 0.5, 619 | "success": 0.5 620 | }, 621 | { 622 | "name": "Well-prepared 1:1s with direct reports", 623 | "current_result": 4, 624 | "target_result": 13, 625 | "progress": 0.31, 626 | "success": 0.31 627 | }, 628 | { 629 | "name": "Invest €1000 × [redacted]", 630 | "current_result": 0, 631 | "target_result": 1000, 632 | "progress": 0, 633 | "success": 0 634 | } 635 | ] 636 | } 637 | ] 638 | }, 639 | { 640 | "name": 1, 641 | "progress": 0.62, 642 | "success": 0.61, 643 | "objectives": [ 644 | { 645 | "name": "Keep body and mind on track", 646 | "progress": 0.5, 647 | "success": 0.49, 648 | "key_results": [ 649 | { 650 | "name": "Maintain weight of less than 75 kg", 651 | "current_result": 13, 652 | "target_result": 13, 653 | "progress": 1, 654 | "success": 1 655 | }, 656 | { 657 | "name": "Work out twice every week", 658 | "current_result": 4, 659 | "target_result": 26, 660 | "progress": 0.15, 661 | "success": 0.15 662 | }, 663 | { 664 | "name": "Read one book every month", 665 | "current_result": 1, 666 | "target_result": 3, 667 | "progress": 0.33, 668 | "success": 0.33 669 | } 670 | ] 671 | }, 672 | { 673 | "name": "Set up for a great 2022", 674 | "progress": 0.35, 675 | "success": 0.35, 676 | "key_results": [ 677 | { 678 | "name": "[redacted]", 679 | "current_result": 0.5, 680 | "target_result": 1, 681 | "progress": 0.5, 682 | "success": 0.5 683 | }, 684 | { 685 | "name": "Buy a ring and plan proposal", 686 | "current_result": 0.35, 687 | "target_result": 1, 688 | "progress": 0.35, 689 | "success": 0.35 690 | }, 691 | { 692 | "name": "Convert engineering to autopilot", 693 | "current_result": 0.6, 694 | "target_result": 3, 695 | "progress": 0.2, 696 | "success": 0.2 697 | } 698 | ] 699 | }, 700 | { 701 | "name": "Manage money better", 702 | "progress": 1, 703 | "success": 1, 704 | "key_results": [ 705 | { 706 | "name": "Breakeven every month", 707 | "current_result": 3, 708 | "target_result": 3, 709 | "progress": 1, 710 | "success": 1 711 | }, 712 | { 713 | "name": "Set up 2021 personal and corporate taxes", 714 | "current_result": 1, 715 | "target_result": 1, 716 | "progress": 1, 717 | "success": 1 718 | }, 719 | { 720 | "name": "Renew residence permit until Q2 2023", 721 | "current_result": 1, 722 | "target_result": 1, 723 | "progress": 1, 724 | "success": 1 725 | } 726 | ] 727 | } 728 | ] 729 | } 730 | ] 731 | }, 732 | { 733 | "name": 2021, 734 | "progress": 0.64, 735 | "success": 0.64, 736 | "quarters": [ 737 | { 738 | "name": 4, 739 | "progress": 0.64, 740 | "success": 0.64, 741 | "objectives": [ 742 | { 743 | "name": "Start getting healthy", 744 | "progress": 0.83, 745 | "success": 0.83, 746 | "key_results": [ 747 | { 748 | "name": "Work out twice a week", 749 | "current_result": 12, 750 | "target_result": 24, 751 | "progress": 0.5, 752 | "success": 0.5 753 | }, 754 | { 755 | "name": "Stay under 1,700 kcal/day", 756 | "current_result": 90, 757 | "target_result": 91, 758 | "progress": 0.99, 759 | "success": 0.99 760 | }, 761 | { 762 | "name": "Lose 10 kg by birthday", 763 | "current_result": 10, 764 | "target_result": 10, 765 | "progress": 1, 766 | "success": 1 767 | } 768 | ] 769 | }, 770 | { 771 | "name": "Get back to work", 772 | "progress": 0.43, 773 | "success": 0.43, 774 | "key_results": [ 775 | { 776 | "name": "[redacted]", 777 | "current_result": 0.4485, 778 | "target_result": 1, 779 | "progress": 0.45, 780 | "success": 0.45 781 | }, 782 | { 783 | "name": "Do proper 1:1s with reports", 784 | "current_result": 10, 785 | "target_result": 12, 786 | "progress": 0.83, 787 | "success": 0.83 788 | }, 789 | { 790 | "name": "Read 1 book per month", 791 | "current_result": 0, 792 | "target_result": 3, 793 | "progress": 0, 794 | "success": 0 795 | } 796 | ] 797 | }, 798 | { 799 | "name": "Get ready for 2022", 800 | "progress": 0.67, 801 | "success": 0.67, 802 | "key_results": [ 803 | { 804 | "name": "Register Dutch subsidiary", 805 | "current_result": 1, 806 | "target_result": 1, 807 | "progress": 1, 808 | "success": 1 809 | }, 810 | { 811 | "name": "Apply for residence permit", 812 | "current_result": 1, 813 | "target_result": 1, 814 | "progress": 1, 815 | "success": 1 816 | }, 817 | { 818 | "name": "Have [redacted] in savings", 819 | "current_result": 0, 820 | "target_result": 1000, 821 | "progress": 0, 822 | "success": 0 823 | } 824 | ] 825 | } 826 | ] 827 | } 828 | ] 829 | } 830 | ] 831 | } 832 | --------------------------------------------------------------------------------