Skip to content

The Advisory widget

The Advisory widget floats over the Kanban or the Canva. It is not a third mode — it is a focused query surface backed by the /api/v1/query/* endpoints.

The four questions

1. What am I missing for course X?

Pick a target course. Advisory returns:

  • An academic_result with a status (satisfied | not_satisfied | partial | unknown | conflict | not_applicable).
  • An explanation tree showing which prerequisite branches are met and which are not.
  • A list of missing_options — each missing prerequisite course with its own source reference attached (not pooled across requirements).
  • unknowns and conflicts arrays with reason codes.

Backed by POST /api/v1/query/course-unlock — see Queries API.

2. What am I missing for credential Y?

Pick a target credential (degree, major, minor, option, specialization). Advisory returns the same academic_result shape, plus credential_progress data showing per-rule completeness.

If you want a flatter summary (just “X courses outstanding, Y unknown”), use the credential gap-summary variant — POST /api/v1/query/credential-gap-summary.

Backed by POST /api/v1/query/credential-progress and POST /api/v1/query/credential-gap-summary.

3. Which alternative paths satisfy this gap?

For a missing requirement that has alternatives (e.g., “MATH 137 or MATH 147”), Advisory enumerates bounded alternative paths — combinations of courses you have not taken but could take to satisfy the requirement, ranked by missing-course count.

The bounded path planner:

  • Treats your Kanban courses as known facts (no need to re-take).
  • Reports cycles or horizon-exceeded conditions as engine unknown — never as academic impossibility.
  • Marks antirequisite collisions and duplicate-credit conflicts on candidate paths.
  • Does not upgrade a candidate path to satisfied without re-validation by the direct evaluator (per ADR 0014 and ADR 0016).

4. What does taking this course unlock?

Add a hypothetical course to a target Kanban state and ask what downstream courses or credentials would change status. Useful for “if I take CO 250, what does that open up for me?”

Backed by POST /api/v1/query/course-impact and POST /api/v1/query/what-if. The what-if variant accepts arbitrary hypothetical state changes without mutating your persisted plan.

How to read the response

Every Advisory answer carries:

FieldWhat it tells you
targetWhat was asked about (course code or credential id).
statusThe six-state academic status.
completenessHow thoroughly the engine could evaluate (some / all sub-rules).
explanation_treeStructured breakdown of which sub-requirements matched.
missing_optionsConcrete things to add to your plan.
unknownsSub-requirements the parser could not resolve.
conflictsPlan-internal contradictions (e.g., antirequisite collisions).
assumptionsAnything the engine had to assume to get a result.
source_reference_idsClick-through pointers to Kuali catalog excerpts.

What Advisory will not do

  • It will not synthesize academic statuses from engine-native states. An engine UNKNOWN, UNSAT, or timeout result becomes academic unknown with an unknown_reason, never not_satisfied or satisfied. See ADR 0018.
  • It will not expose internal solver clauses, variable names, or engine debug logs. Explanations are semantic, not mechanical.
  • It will not promise that Quest will agree. uwwoe is exploratory; see Advisory only.