Skip to content

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.txtPROBE 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/apiFor authentication, we support OAuth 2. You will need to create credentials here.
  • [claimed-docs] https://reflect.academy/apiOur 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/apiWe do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.
  • [probe] https://reflect.academy/apiPROBE 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.txtPROBE llms.txt: HTTP 404 at https://reflect.academy/llms.txt
  • [probe] https://reflect.academy/openapi.jsonPROBE 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/apiFor authentication, we support OAuth 2. You will need to create credentials here.
  • [claimed-docs] https://reflect.academy/apiOur 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/apiWe 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/apiFor authentication, we support OAuth 2. You will need to create credentials here.
  • [claimed-docs] https://reflect.academy/apiOur 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/apiWe 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.txtPROBE llms.txt: HTTP 404 at https://reflect.academy/llms.txt
  • [probe] https://reflect.academy/openapi.jsonPROBE 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/apiPROBE 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/apiFor authentication, we support OAuth 2. You will need to create credentials here.
  • [claimed-docs] https://reflect.academy/apiOur 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/apiWe do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.
  • [probe] https://reflect.academy/apiPROBE 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/apiFor authentication, we support OAuth 2. You will need to create credentials here.
  • [claimed-docs] https://reflect.academy/apiOur 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/apiWe 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.txtPROBE llms.txt: HTTP 404 at https://reflect.academy/llms.txt
  • [probe] https://reflect.academy/openapi.jsonPROBE 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/apiPROBE 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.jsonPROBE 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.txtPROBE llms.txt: HTTP 404 at https://reflect.academy/llms.txt
  • [claimed-docs] https://reflect.academy/apiFor authentication, we support OAuth 2. You will need to create credentials here.
  • [claimed-docs] https://reflect.academy/apiWe 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/apiFor authentication, we support OAuth 2. You will need to create credentials here.
  • [claimed-docs] https://reflect.academy/apiOur 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/apiWe 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.jsonPROBE 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/apiPROBE 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/apiFor authentication, we support OAuth 2. You will need to create credentials here.
  • [claimed-docs] https://reflect.academy/apiOur 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/apiWe do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.
  • [probe] https://reflect.academy/apiPROBE 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-searchReflect’s Semantic search lets you find specific pieces of information without knowing the exact words.
  • [claimed-docs] https://reflect.academy/publishing-notesReflect 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-backupsyou can always export it into an open format (like HTML or Markdown).
  • [claimed-docs] https://reflect.academy/import-export-backupsWe currently support imports from: Apple Notes (HTML) Evernote (ENEX) Markdown files Roam (JSON) Workflowy (OPML)
  • [community] https://hn.algolia.com/api/v1/items/35303670Reflect 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/35303670Question 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-intelligenceList action-items and key takeaways from meeting notes
  • [claimed-docs] https://reflect.academy/artificial-intelligenceYou 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-intelligenceTo use it, first highlight some text, and then press `cmd j`... That’ll popup the AI palette.
  • [claimed-docs] https://reflect.academy/artificial-intelligenceYou 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-intelligenceReflect'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-searchyou can also “chat” with those specific notes to ask questions and extract information.
  • [claimed-docs] https://reflect.academy/advanced-searchAfter 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-intelligenceList action-items and key takeaways from meeting notes
  • [claimed-docs] https://reflect.academy/artificial-intelligenceYou 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-intelligenceTo use it, first highlight some text, and then press `cmd j`... That’ll popup the AI palette.
  • [claimed-docs] https://reflect.academy/artificial-intelligenceYou 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-intelligenceReflect'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-searchyou 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-intelligenceYou 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-intelligenceTo use it, first highlight some text, and then press `cmd j`... That’ll popup the AI palette.
  • [claimed-docs] https://reflect.academy/artificial-intelligenceYou 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-searchyou can also “chat” with those specific notes to ask questions and extract information.
  • [claimed-docs] https://reflect.academy/advanced-searchAfter 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-linksreflect://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/apiOur 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/apiWe do support OAuth's PKCE extension which means you can build a client to Reflect without shipping secret keys around.
  • [probe] https://reflect.academy/apiPROBE 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-journalingTools like Reflect will create a new _daily note_ for you everyday for you to journal in.
  • [claimed-docs] https://reflect.academy/daily-journalingTools 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