How Reflect’s scores are calculated
The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.
verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10
PA Score13/100
Agent-ready 6.9 × 0.30 = 2.07
API quality 0.0 × 0.20 = 0.00
Openness 27.6 × 0.20 = 5.52
Built-in AI 34.2 × 0.15 = 5.13
Automation 0.0 × 0.15 = 0.00
(2.07 + 0.00 + 5.52 + 5.13 + 0.00) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 12.72 ÷ 1.00 = 12.7
Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.
Agent-ready6.9/100×0.30 of the PA blend
Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.
Point an agent at llms.txt or agent-oriented docsweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://reflect.academy/llms.txt“PROBE llms.txt: HTTP 404 at https://reflect.academy/llms.txt”
Run the product headlessly / in CI for automationweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Plug MCP servers into this product so it can use their toolsweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Connect an agent via an official MCP serverweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Use an official CLIweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Drive the product through a documented public APIweight 3
3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max
- [claimed-docs] https://reflect.academy/api“For authentication, we support OAuth 2. You will need to create credentials here.”
- [claimed-docs] https://reflect.academy/api“Our supports appending data to your notes, returning a list of the links you've bookmarked, and a few other things.”
- [claimed-docs] https://reflect.academy/api“We do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.”
- [probe] https://reflect.academy/api“PROBE runtime (recorded 2026-09-05): keyless GET to the documented REST base https://reflect.app/api/graphs returned HTTP 401 {"error":{"type":"invalid_request","message":"Authentication required"}} — the OAuth2/access-token API documented at reflect.academy/api is live. Note the API is append-only for note content by design (end-to-end encryption means Reflect's servers cannot read notes).”
- [probe] https://reflect.academy/llms.txt“PROBE llms.txt: HTTP 404 at https://reflect.academy/llms.txt”
- [probe] https://reflect.academy/openapi.json“PROBE openapi: all candidate paths 404 (https://reflect.academy/openapi.json, https://reflect.academy/swagger.json, https://reflect.academy/api/openapi.json, https://reflect.academy/.well-known/openapi.json)”
Issue scoped/least-privilege API credentials for an agentweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://reflect.academy/api“For authentication, we support OAuth 2. You will need to create credentials here.”
- [claimed-docs] https://reflect.academy/api“Our supports appending data to your notes, returning a list of the links you've bookmarked, and a few other things.”
- [claimed-docs] https://reflect.academy/api“We do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.”
Build against official SDKsweight 2
2 (weight) × 3 (quality) × 0.6 (partial) = 3.6 of 20 max
- [claimed-docs] https://reflect.academy/api“For authentication, we support OAuth 2. You will need to create credentials here.”
- [claimed-docs] https://reflect.academy/api“Our supports appending data to your notes, returning a list of the links you've bookmarked, and a few other things.”
- [claimed-docs] https://reflect.academy/api“We do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.”
- [probe] https://reflect.academy/llms.txt“PROBE llms.txt: HTTP 404 at https://reflect.academy/llms.txt”
- [probe] https://reflect.academy/openapi.json“PROBE openapi: all candidate paths 404 (https://reflect.academy/openapi.json, https://reflect.academy/swagger.json, https://reflect.academy/api/openapi.json, https://reflect.academy/.well-known/openapi.json)”
- [probe] https://reflect.academy/api“PROBE runtime (recorded 2026-09-05): keyless GET to the documented REST base https://reflect.app/api/graphs returned HTTP 401 {"error":{"type":"invalid_request","message":"Authentication required"}} — the OAuth2/access-token API documented at reflect.academy/api is live. Note the API is append-only for note content by design (end-to-end encryption means Reflect's servers cannot read notes).”
Subscribe to events via webhooksweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://reflect.academy/api“For authentication, we support OAuth 2. You will need to create credentials here.”
- [claimed-docs] https://reflect.academy/api“Our supports appending data to your notes, returning a list of the links you've bookmarked, and a few other things.”
- [claimed-docs] https://reflect.academy/api“We do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.”
- [probe] https://reflect.academy/api“PROBE runtime (recorded 2026-09-05): keyless GET to the documented REST base https://reflect.app/api/graphs returned HTTP 401 {"error":{"type":"invalid_request","message":"Authentication required"}} — the OAuth2/access-token API documented at reflect.academy/api is live. Note the API is append-only for note content by design (end-to-end encryption means Reflect's servers cannot read notes).”
Agent-ready = 14.4 ÷ 210 × 100 = 6.9
API quality0.0/100×0.20 of the PA blend
The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.
Explore an interactive API reference with runnable examplesweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://reflect.academy/api“For authentication, we support OAuth 2. You will need to create credentials here.”
- [claimed-docs] https://reflect.academy/api“Our supports appending data to your notes, returning a list of the links you've bookmarked, and a few other things.”
- [claimed-docs] https://reflect.academy/api“We do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.”
- [probe] https://reflect.academy/llms.txt“PROBE llms.txt: HTTP 404 at https://reflect.academy/llms.txt”
- [probe] https://reflect.academy/openapi.json“PROBE openapi: all candidate paths 404 (https://reflect.academy/openapi.json, https://reflect.academy/swagger.json, https://reflect.academy/api/openapi.json, https://reflect.academy/.well-known/openapi.json)”
- [probe] https://reflect.academy/api“PROBE runtime (recorded 2026-09-05): keyless GET to the documented REST base https://reflect.app/api/graphs returned HTTP 401 {"error":{"type":"invalid_request","message":"Authentication required"}} — the OAuth2/access-token API documented at reflect.academy/api is live. Note the API is append-only for note content by design (end-to-end encryption means Reflect's servers cannot read notes).”
Download a machine-readable API spec (OpenAPI or equivalent)weight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://reflect.academy/openapi.json“PROBE openapi: all candidate paths 404 (https://reflect.academy/openapi.json, https://reflect.academy/swagger.json, https://reflect.academy/api/openapi.json, https://reflect.academy/.well-known/openapi.json)”
- [probe] https://reflect.academy/llms.txt“PROBE llms.txt: HTTP 404 at https://reflect.academy/llms.txt”
- [claimed-docs] https://reflect.academy/api“For authentication, we support OAuth 2. You will need to create credentials here.”
- [claimed-docs] https://reflect.academy/api“We do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.”
Test against a sandbox environment without touching production dataweight 1
1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Rely on versioned APIs with a documented deprecation policyweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://reflect.academy/api“For authentication, we support OAuth 2. You will need to create credentials here.”
- [claimed-docs] https://reflect.academy/api“Our supports appending data to your notes, returning a list of the links you've bookmarked, and a few other things.”
- [claimed-docs] https://reflect.academy/api“We do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.”
- [probe] https://reflect.academy/openapi.json“PROBE openapi: all candidate paths 404 (https://reflect.academy/openapi.json, https://reflect.academy/swagger.json, https://reflect.academy/api/openapi.json, https://reflect.academy/.well-known/openapi.json)”
- [probe] https://reflect.academy/api“PROBE runtime (recorded 2026-09-05): keyless GET to the documented REST base https://reflect.app/api/graphs returned HTTP 401 {"error":{"type":"invalid_request","message":"Authentication required"}} — the OAuth2/access-token API documented at reflect.academy/api is live. Note the API is append-only for note content by design (end-to-end encryption means Reflect's servers cannot read notes).”
API quality = 0.0 ÷ 70 × 100 = 0.0
Openness27.6/100×0.20 of the PA blend
Can you leave, inspect, or self-host — data export, open source, portability.
Do everything through the API that I can do in the UIweight 2
2 (weight) × 3 (quality) × 0.6 (partial) = 3.6 of 20 max
- [claimed-docs] https://reflect.academy/api“For authentication, we support OAuth 2. You will need to create credentials here.”
- [claimed-docs] https://reflect.academy/api“Our supports appending data to your notes, returning a list of the links you've bookmarked, and a few other things.”
- [claimed-docs] https://reflect.academy/api“We do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.”
- [probe] https://reflect.academy/api“PROBE runtime (recorded 2026-09-05): keyless GET to the documented REST base https://reflect.app/api/graphs returned HTTP 401 {"error":{"type":"invalid_request","message":"Authentication required"}} — the OAuth2/access-token API documented at reflect.academy/api is live. Note the API is append-only for note content by design (end-to-end encryption means Reflect's servers cannot read notes).”
- [claimed-docs] https://reflect.academy/advanced-search“Reflect’s Semantic search lets you find specific pieces of information without knowing the exact words.”
- [claimed-docs] https://reflect.academy/publishing-notes“Reflect offers one-click publishing of your notes. Simply hit the publish button and your note will be publicly available behind a long hard-to-guess url.”
Export all of my data in open formats and leaveweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [claimed-docs] https://reflect.academy/import-export-backups“you can always export it into an open format (like HTML or Markdown).”
- [claimed-docs] https://reflect.academy/import-export-backups“We currently support imports from: Apple Notes (HTML) Evernote (ENEX) Markdown files Roam (JSON) Workflowy (OPML)”
- [community] https://hn.algolia.com/api/v1/items/35303670“Reflect founder on data lock-in: 'you can always export your notes into markdown or HTML so you shouldn't feel too locked in.' Also noted they didn't raise VC to avoid forced 'exit' events.”
- [community] https://hn.algolia.com/api/v1/items/35303670“Question about Reflect's E2E encryption claims: 'We do not end-to-end encrypt things like files or images you upload' - user noted this excludes sensitive content like PDFs/contracts from encryption.”
Read the product's source under an open licenseweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Self-host the core productweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Openness = 27.6 ÷ 100 × 100 = 27.6
Built-in AI34.2/100×0.15 of the PA blend
Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.
Get AI-generated insights and suggestions from my data inside the productweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://reflect.academy/artificial-intelligence“List action-items and key takeaways from meeting notes”
- [claimed-docs] https://reflect.academy/artificial-intelligence“You can also ask the AI palette anything you’d like using the open text field, and save it as a custom prompt to quickly call on again later.”
- [claimed-docs] https://reflect.academy/artificial-intelligence“To use it, first highlight some text, and then press `cmd j`... That’ll popup the AI palette.”
- [claimed-docs] https://reflect.academy/artificial-intelligence“You can also **ask the AI palette anything** you’d like using the open text field, and save it as a custom prompt to quickly call on again later.”
- [claimed-docs] https://reflect.academy/artificial-intelligence“Reflect's AI tools give you the option to now use either GPT-4o (the latest model from OpenAI) or Claude 3.5 Sonnet (the latest model from Anthropic). You can toggle between these in your preferences.”
- [claimed-docs] https://reflect.academy/advanced-search“you can also “chat” with those specific notes to ask questions and extract information.”
- [claimed-docs] https://reflect.academy/advanced-search“After applying any desired filters to the search, you can also “chat” with those specific notes to ask questions and extract information.”
Set up automations that run autonomously in the backgroundweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Delegate tasks to a built-in AI assistant inside the productweight 3
3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max
- [claimed-docs] https://reflect.academy/artificial-intelligence“List action-items and key takeaways from meeting notes”
- [claimed-docs] https://reflect.academy/artificial-intelligence“You can also ask the AI palette anything you’d like using the open text field, and save it as a custom prompt to quickly call on again later.”
- [claimed-docs] https://reflect.academy/artificial-intelligence“To use it, first highlight some text, and then press `cmd j`... That’ll popup the AI palette.”
- [claimed-docs] https://reflect.academy/artificial-intelligence“You can also **ask the AI palette anything** you’d like using the open text field, and save it as a custom prompt to quickly call on again later.”
- [claimed-docs] https://reflect.academy/artificial-intelligence“Reflect's AI tools give you the option to now use either GPT-4o (the latest model from OpenAI) or Claude 3.5 Sonnet (the latest model from Anthropic). You can toggle between these in your preferences.”
- [claimed-docs] https://reflect.academy/advanced-search“you can also “chat” with those specific notes to ask questions and extract information.”
Operate the product with natural-language commandsweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://reflect.academy/artificial-intelligence“You can also ask the AI palette anything you’d like using the open text field, and save it as a custom prompt to quickly call on again later.”
- [claimed-docs] https://reflect.academy/artificial-intelligence“To use it, first highlight some text, and then press `cmd j`... That’ll popup the AI palette.”
- [claimed-docs] https://reflect.academy/artificial-intelligence“You can also **ask the AI palette anything** you’d like using the open text field, and save it as a custom prompt to quickly call on again later.”
- [claimed-docs] https://reflect.academy/advanced-search“you can also “chat” with those specific notes to ask questions and extract information.”
- [claimed-docs] https://reflect.academy/advanced-search“After applying any desired filters to the search, you can also “chat” with those specific notes to ask questions and extract information.”
- [claimed-docs] https://reflect.academy/deep-links“reflect://reflect?command=<command_name>&<parameter1>=<value1>&...”
Built-in AI = 30.8 ÷ 90 × 100 = 34.2
Automation0.0/100×0.15 of the PA blend
Depth of automation primitives — rules, scheduling, bulk operations, webhooks.
Perform bulk operations across many items at onceweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://reflect.academy/api“Our supports appending data to your notes, returning a list of the links you've bookmarked, and a few other things.”
- [claimed-docs] https://reflect.academy/api“We do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.”
- [probe] https://reflect.academy/api“PROBE runtime (recorded 2026-09-05): keyless GET to the documented REST base https://reflect.app/api/graphs returned HTTP 401 {"error":{"type":"invalid_request","message":"Authentication required"}} — the OAuth2/access-token API documented at reflect.academy/api is live. Note the API is append-only for note content by design (end-to-end encryption means Reflect's servers cannot read notes).”
Define rules that trigger actions automatically on eventsweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Schedule recurring jobs or workflowsweight 2
n/a — not applicable to this product: excluded from numerator and denominator
- [claimed-docs] https://reflect.academy/daily-journaling“Tools like Reflect will create a new _daily note_ for you everyday for you to journal in.”
- [claimed-docs] https://reflect.academy/daily-journaling“Tools like Reflect will create a new daily note for you everyday for you to journal in.”
Version, review, and roll back my automationsweight 1
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Automation = 0.0 ÷ 50 × 100 = 0.0