org.cannadb.review

A review of a cannabis strain or cut. Reviews are where subjective experience lives — the reviewer's perceived flavors and effects, multi-axis ratings, prose body, and optional images. Reviews reference exactly one strain record via `subject` and aggregate at the AppView layer into per-strain summaries (community-derived effect/flavor percentages, average ratings). Publishing this record IS the claim — every field is contextualized by the publisher DID at display time. CannaDB editorial accounts do not publish reviews.

Repository @cannadb.org did:plc:lrtzzib3ycggsodkfidzuorw namespace authority
Details · record, key tid
Kindrecord
Record keytid
Authoritycannadb.org
Indexed

Record

record · key tid

Properties

body

string

Markdown-formatted review prose. Optional — a review can be ratings-only or tag-only. Capped at 5000 graphemes (50000 bytes) — enforced by the lexicon to keep reviews modest.

  • maxLength: 50000
  • maxGraphemes: 5000

createdAt

requiredstring · datetime

Client-declared timestamp when this review was originally written.

effects

array

Effect descriptors as the reviewer experienced them. Open vocabulary — see `flavors` for rationale. The AppView aggregates across reviews into community-derived effect percentages on the strain (the canonical "top effects" surface visitors expect on a strain page).

itemsstring

A single effect descriptor.

flavors

array

Flavor descriptors as the reviewer experienced them. Open vocabulary — the lexicon does not enforce a closed set; the AppView normalizes near-duplicates at index time and aggregates across reviews into community-derived flavor percentages on the strain.

itemsstring

A single flavor descriptor.

growRef

string · at-uri

Forward-compatible AT-URI reference to a grow record (`org.cannadb.grow`, Phase 6) backing this review. Optional and speculative — the grow record type does not exist yet and this field is a placeholder for the eventual review-grow linkage. Consumers should ignore this field until the grow lexicon ships.

images

array

Up to three image blobs attached to this review. Each image accepts common web image formats and is capped at 1 MB. Reviews are deliberately limited to three images to keep PDS storage burden modest; richer photo galleries belong in grow records (Phase 6).

  • maxLength: 3
itemsblob

A single review image.

  • maxSize: 1000000
  • accept: image/png, image/jpeg, image/webp

Multi-axis numeric ratings on a 1–5 scale. All axes are independently optional — a reviewer may rate only `overall`, only some axes, or skip ratings entirely. The AppView averages each axis across reviews for the per-strain summary.

Reference

subject

requiredstring · at-uri

AT-URI reference to an `org.cannadb.strain` record (any `kind`). Required. (The lexicon spec does not enforce collection constraints on at-uri; consumers must validate the ref resolves to an `org.cannadb.strain` record and reject reviews whose subject points elsewhere.)

#ratings

object

Multi-axis numeric ratings on a 1–5 scale. All axes are independently optional. Aggregations (averages, distributions) happen at the AppView layer.

Properties

bagAppeal

integer

Bag appeal rating, 1–5. Reviewer's subjective sense of visual quality of the cured flower.

  • minimum: 1
  • maximum: 5

ease

integer

Ease-of-grow rating, 1–5. Distinct from the strain record's `growDifficulty` claim — this is the reviewer's experienced ease.

  • minimum: 1
  • maximum: 5

flavor

integer

Flavor rating, 1–5.

  • minimum: 1
  • maximum: 5

overall

integer

Overall rating, 1–5.

  • minimum: 1
  • maximum: 5

potency

integer

Potency rating, 1–5. Reviewer's subjective sense of strength — distinct from measured cannabinoid percentages.

  • minimum: 1
  • maximum: 5

yield

integer

Yield rating, 1–5. Reviewer's subjective sense of how the strain produced — a grower-axis rating distinct from the strain record's structured `yield` claim.

  • minimum: 1
  • maximum: 5

Similar lexicons

semantic match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • Cannabis genetic identity. The same record type covers two levels of specificity, distinguished by the `kind` field: "strain" denotes a broad genetic identity (e.g., "Wedding Cake"); "cut" denotes a specific phenotype, clone, or keeper pheno (e.g., "Forum cut of GSC"). Captures intrinsic identity, structured cultivation profile, and the publisher's contextualized field assertions; subjective experience and measured outcomes live in separate record types (`org.cannadb.review`, future `org.cannadb

  • A field-level edit to a strain's living document (collaborative editing). Targets a strain via `subject` (the anchor record of the entity) and carries a sparse patch: scalar field overwrites in `set`, additive ops on open array fields in `add`/`remove`, and field clears in `unset`. The AppView folds accepted edits over the anchor record to materialize the canonical document; this record is one signed contribution, attributed to its publisher DID. See docs/05-collaborative-strains.md.