<aside> <img src="/icons/new-alert_gray.svg" alt="/icons/new-alert_gray.svg" width="40px" /> Read This Before Approving Cards
This guide applies to all Maintainers, regardless of seniority, and ensures that Project Malleus can continue to pride itself on a strong peer review process. It should be read alongside the Card Submissions Guidelines document.
</aside>
Revision date: October 31, 2025.
<aside> <img src="/icons/warning_yellow.svg" alt="/icons/warning_yellow.svg" width="40px" /> Please follow these guidelines before approving cards.
</aside>
<aside> <img src="/icons/arrow-northeast_gray.svg" alt="/icons/arrow-northeast_gray.svg" width="40px" />
Tagging Resources
</aside>
%% Malleus Card Maintainer Review Flow (clean, centered, readable)
flowchart TD
classDef title fill:#f8f9fa,stroke:#aaa,stroke-width:2px,color:#333,font-size:20px,font-weight:bold;
classDef section fill:#fff,stroke:#999,stroke-width:1px,corner-radius:8px,color:#222,font-size:16px;
classDef decision fill:#eef6ff,stroke:#4472c4,stroke-width:1px,color:#111,font-size:14px;
classDef action fill:#e8f5e9,stroke:#388e3c,stroke-width:1px,color:#111,font-size:14px;
classDef reject fill:#fdecea,stroke:#e53935,stroke-width:1px,color:#111,font-size:14px;
classDef escalate fill:#fff3e0,stroke:#fb8c00,stroke-width:1px,color:#111,font-size:14px;
A0(["π Malleus Card Maintainer Review Flow"]):::title
subgraph PRE["π 0) Pre-check"]
direction TB
A1["Comfortable with topic?"]:::decision
A1 -- No --> A1a["Defer β reviewer-needed / @tag someone"]:::action
A1 -- Yes --> A2["Continue"]:::action
end
subgraph SCOPE["π§ 1) Scope"]
direction TB
B1["Card out of scope?"]:::decision
B1 -- Yes --> B1a["Reject β OUT_OF_SCOPE"]:::reject
B1 -- No --> B2["Continue"]:::action
end
subgraph MIP["π― 2) Minimum Cue Principle"]
direction TB
C1["Violates MIP?"]:::decision
C1 -- Yes, cannot fix --> C1a["Reject β MIP_REJECT"]:::reject
C1 -- Yes, fixable --> C1b["Needs Remediation β tighten cue"]:::action
C1 -- No --> C2["Continue"]:::action
end
subgraph DUP["π 3) Duplicate Check"]
direction TB
D1["Duplicate exists?"]:::decision
D1 -- Yes, new worse --> D1a["Reject β DUPLICATE"]:::reject
D1 -- Yes, new better --> D1b["Ask to update canonical card β Reject duplicate"]:::action
D1 -- No --> D2["Continue"]:::action
end
subgraph SRC["π 4) Sources"]
direction TB
E1["Source quality?"]:::decision
E1 -- Weak but fixable --> E1a["Needs Remediation β ask for AU guideline/textbook"]:::action
E1 -- Weak & not useful --> E1b["Reject"]:::reject
E1 -- Useful but uncertain --> E1c["Escalate β escalate-evidence"]:::escalate
E1 -- Strong --> E2["Continue"]:::action
end
subgraph AU["π¦πΊ 5) Australian Alignment"]
direction TB
F1["Source non-AU?"]:::decision
F1 -- Yes, AU exists --> F1a["Needs Remediation β replace/anchor to AU"]:::action
F1 -- Yes, no AU source --> F1b["Escalate β escalate-au-gap"]:::escalate
F1 -- No --> F2["Continue"]:::action
end
subgraph CONFLICT["βοΈ 6) Conflicting AU Sources"]
direction TB
G1["ETG / RCH / specialty conflict?"]:::decision
G1 -- Yes --> G1a["Use primary resource β unify + tag guideline-unified"]:::action
G1 -- No --> G2["Continue"]:::action
end
subgraph TAGS["π·οΈ 7) Tags & Metadata"]
direction TB
H1["All required tags present?"]:::decision
H1 -- Maintainer can fix --> H1a["Fix directly"]:::action
H1 -- Unsure --> H1b["Needs Remediation"]:::action
H1 -- Yes --> H2["Continue"]:::action
end
subgraph STYLE["βοΈ 8) Style & Formatting"]
direction TB
I1["Fixable β€2 min?"]:::decision
I1 -- Yes --> I1a["Edit & Approve"]:::action
I1 -- No --> I1b["Needs Remediation β give examples"]:::action
end
subgraph TALLEY["π 9) Talley / Screenshots"]
direction TB
J1["Clinical features card?"]:::decision
J1 -- Yes --> J1a["Add Talley page + tag"]:::action
J1 -- Missing guideline --> J1b["Add todo-add-guideline"]:::action
J1 -- Minor omissions --> J1c["Not rejection-worthy"]:::action
end
subgraph UNCERT["β 10) Uncertainty / Sensitivity"]
direction TB
K1["Any uncertainty/sensitivity?"]:::decision
K1 -- Unfamiliar specialty --> K1a["Defer β reviewer-needed"]:::action
K1 -- Conflicting/controversial --> K1b["Escalate β escalate-content"]:::escalate
K1 -- Sensitive wording --> K1c["Escalate β escalate-language"]:::escalate
K1 -- None --> K2["Continue"]:::action
end
subgraph FINAL["β
11) Final Outcome"]
direction TB
L1["Determine outcome"]:::decision
L1 --> L1a["Approve β meets criteria (+minor edits)"]:::action
L1 --> L1b["Needs Remediation β submitter to fix"]:::action
L1 --> L1c["Reject β unsuitable (brief reason + pointer)"]:::reject
L1 --> L1d["Escalate β unclear evidence/sensitivity"]:::escalate
end
%% FLOW CONNECTIONS
A0 --> A1
A2 --> B1
B2 --> C1
C2 --> D1
D2 --> E1
E2 --> F1
F2 --> G1
G2 --> H1
H2 --> I1
I1 --> J1
J1 --> K1
K2 --> L1
%% Center everything by adding invisible links (helps alignment)
A0 -.-> PRE
PRE -.-> SCOPE
SCOPE -.-> MIP
MIP -.-> DUP
DUP -.-> SRC
SRC -.-> AU
AU -.-> CONFLICT
CONFLICT -.-> TAGS
TAGS -.-> STYLE
STYLE -.-> TALLEY
TALLEY -.-> UNCERT
UNCERT -.-> FINAL
IF you are not comfortable with the topic β Defer (add reviewer-needed, @tag someone on AnkiHub)
ELSE continue.
%% Malleus Card Maintainer Review Flow (clean, centered, readable)
flowchart TD
classDef title fill:#f8f9fa,stroke:#aaa,stroke-width:2px,color:#333,font-size:20px,font-weight:bold;
classDef section fill:#fff,stroke:#999,stroke-width:1px,corner-radius:8px,color:#222,font-size:16px;
classDef decision fill:#eef6ff,stroke:#4472c4,stroke-width:1px,color:#111,font-size:14px;
classDef action fill:#e8f5e9,stroke:#388e3c,stroke-width:1px,color:#111,font-size:14px;
classDef reject fill:#fdecea,stroke:#e53935,stroke-width:1px,color:#111,font-size:14px;
classDef escalate fill:#fff3e0,stroke:#fb8c00,stroke-width:1px,color:#111,font-size:14px;
subgraph PRE["π 0) Pre-check"]
direction TB
A1["Comfortable with topic?"]:::decision
A1 -- No --> A1a["Defer β reviewer-needed / @tag someone"]:::action
A1 -- Yes --> A2["Continue"]:::action
end
IF out of scope β Reject (OUT_OF_SCOPE)
ELSE continue.
%% Malleus Card Maintainer Review Flow (clean, centered, readable)
flowchart TD
classDef title fill:#f8f9fa,stroke:#aaa,stroke-width:2px,color:#333,font-size:20px,font-weight:bold;
classDef section fill:#fff,stroke:#999,stroke-width:1px,corner-radius:8px,color:#222,font-size:16px;
classDef decision fill:#eef6ff,stroke:#4472c4,stroke-width:1px,color:#111,font-size:14px;
classDef action fill:#e8f5e9,stroke:#388e3c,stroke-width:1px,color:#111,font-size:14px;
classDef reject fill:#fdecea,stroke:#e53935,stroke-width:1px,color:#111,font-size:14px;
classDef escalate fill:#fff3e0,stroke:#fb8c00,stroke-width:1px,color:#111,font-size:14px;
subgraph SCOPE["π§ 1) Scope"]
direction TB
B1["Card out of scope?"]:::decision
B1 -- Yes --> B1a["Reject β OUT_OF_SCOPE"]:::reject
B1 -- No --> B2["Continue"]:::action
end
<aside> π‘
The scope of the deck is primarily final year medical students and junior medical officers (interns/residents). Content is therefore targetted a general foundational level. Some exceptions may be made, as outlined in the Submission Guidelines.
</aside>