v2 Review — Stakeholder Answers (Apr 22)

Stakeholder Answers — 2026-04-22

From: Lejla Pehlivanovic | To: Kamran | Source: Apr 22 working-session meeting transcript (QF-Backend-Review-Apr-22.md)

This document is the durable record of the Apr 22 working session that resolved the three topics deferred from the Apr 15 review and the Apr 21 reply:

It extends (does NOT supersede) STAKEHOLDER-ANSWERS-2026-04-21.md. The Apr 21 doc resolved End Checklist + defaults; this Apr 22 doc resolves the remaining deferrals called out in lejla-email-draft-2026-04-21.md §A–C.

The spec edits that apply these answers are tracked in _apr22-worklog.md. ADR amendments: ADR-002 (repeat-TA rule inversion), ADR-006 (Issue Queue state machine, new).

Reading order: start here for the decision record. For verbatim conversational context, go to QF-Backend-Review-Apr-22.md. For the transcript-line-to-spec-edit traceability map, see _apr22-worklog.md §2.


Verbatim excerpts (transcript citations)

All excerpts are lifted from QF-Backend-Review-Apr-22.md. Line references point to that file.

A. Reporting (lines 41–64)

Lejla (L41): "The reporting section essentially needs to provide me with. All the reports that we would need in order to. Assess how the student body is doing how our enrollment is doing how what are we reaching like our target revenue like anything that we would need in order to assess like the health of the student body… I need to sit down and just figure out what type of reports will be useful to us."

Lejla (L47): "An overview of like the active semester enrollment. So it's essentially giving me a list of all the students who are enrolled as new students who are who enrolled as a repeat students who enrolled in year two and it's giving me all the students who are enrolled as level graduates with their status with their payment status."

Lejla (L55): "I would like for that for all of that information to be available in one place like which like new students are signing up how many students have graduated a level and are like have canceled their enrollment how many have signed up for repeat… the student body breakdown of like how many you know new students how many like level one level four level two year two students for each individual elective like gender, you know based analysis also just giving like the diagrams on when we had like the highest enrollment."

Lejla (L55, cont.): "We would like ideally we would also like to have like the revenue breakdown so how many students have like what percentage of students and at what amount has signed up for repeat for like family pricing so that we know like how much again just having like a clear picture of what the like revenue stream is looking like."

Lejla (L55, cont.): "For students who have like signed up maybe for installment payment for their first semester if they were offered. The one time payment for the next semester like to. You know, provide a discount like how many students would opt for that."

Lejla (L55, cont.): "Reports regarding notifications like letting us know if certain notifications or like emails contributed to more attendance for live classes or contributed to people catching up on their submissions."

Kamran (L56): "Normally what you do is you start off with your basic reports and then you build out from there. And some of the analysis that you're looking for, you do have to do independently. Like a report is something that's typically your base and it's there for reporting, right?"

Lejla (L59): "Understood. But I kind of also have to think like which information should be included in the report in order for me to do the analysis."

Kamran (L60–64): "I think that covers it. And then I think the export format CSV and PDF works?" — Lejla: "CSV is fine." — Kamran: "Yeah. And then live dashboard for some and then scheduled emails. Maybe I think it's just like downloadable versus or live."

B. Issue Queue state machine (lines 65–89)

Lejla (L65): "That's tricky because we have to figure out. How to not overlap with the CS team… If we are making reporting issues very easy to students and teachers in the app. And we are seeing all of these inquiries that are coming from, you know that stream the question is okay let's say a student submits an issue saying I can't see my. Live like I can see any sessions in my live schedule. That message will go to our dashboard. So the issue queue and then it will also go to our fresh desk inbox."

Kamran (L66): "Right now assume that there is no fresh desk integration. It's just going into the admin. Dashboard, the issue queue that you see here."

Lejla (L67): "Students will sometimes. Use the like the help button or the report issue button to report like a tech issue… But sometimes they will have like. Paragraph texts of like, oh, I'm falling behind and my mother is sick and my dog just died. So there is like a, you know, there is. Something that's not tech related that's being reported through that format."

Kamran (L68): "But there should also be one delegated too. And it could be delegated to."

Kamran (L70): "It could be delegated to CS or maybe even delegated to teaching staff or delegated to it."

Lejla (L73): "That would be excellent because if we could have it just like delegated to IT."

Kamran (L76): "Delegated kind of just means that you're informing them. But at the end of the day, whoever is managing the issue queue is still managing it. They're still going to have to follow up and make sure that they're getting answers."

Lejla (L77): "We can maybe just change the language from delete to like reject." — Kamran (L78): "Okay. So yeah, we'll change that to reject." — Lejla (L79): "Resolve and reject. Yeah."

Kamran (L80): "Can a resolved issue be reopened? Yes, it can." — Lejla (L83): "I would say go back to open and then adjust accordingly."

Lejla (L85–87): "I will keep everything… in. Just keep everything like an archive or something."

Lejla (L89): "I think it would be good for us to kind of run like run report and see what. How students are using it because that would also maybe help us figure out like what language needs to change in order to make it more clear for students what we are using this dialogue box for."

C. Repeat Semester workflow (lines 90–126)

Kamran (L90): "Does the admin need to see the list of students who opted in?" — Lejla (L91): "Yes."

Lejla (L93, L97): "It doesn't need to be, yeah, so it like I would keep it in the, I'm not seeing like in the new what's it called in the new mockup. I'm not seeing that section that we discussed like active enrollments. Remember like we had that." … "It could. Be, yeah, it could. Yeah, but you have to like filter by the new semester, I guess."

Lejla (L101): "What I would need to also have like a separate column would be like what their enrollment situation is. Because they could be year two students, meaning they could be continuing students. Meaning either they graduated from levels one to four or they are year two students. So those are continuing students, meaning they were with us. In the previous semester and they are enrolling in something new in the next semester. They could be repeat students. And they could be new students."

Lejla (L103): "That kind of answers the question like do I need a separate repeat section? I don't, but I need an indicator somewhere."

Lejla (L111): "Fully self-service. Yeah, I don't need to approve anything. They can sign up if they got the link."

Lejla (L115): "Students get a special… They are directed to a separate checkout, which is providing them with like a 50% discount. At least that's the current workflow. And the checkout, at least the new checkout should check if the student qualifies for repeat."

Lejla (L115, cont.): "Sometimes we will allow a student to skip a semester… those, if the checkout is. Cross referencing our repeat qualify list for the current semester, they will not, it will not find that name in that list because the students has been with us like two semesters ago. So those would be like the only exceptions where, you know, there could be like a need for like a manual override."

Kamran (L116): "That sounds like something that should be like a manual override." — Lejla (L119): "Or there could be like, like add a repeat student manually. Maybe that can be within like the operations. Just like a way to add a student manually to the current, not current semester, but to the repeat list. So when they actually get, what's it called? When they get a link to repeat, they can. Like finish the checkout process without any issues."

Lejla (L121–125): "No, no, they are, they are new." … "Yeah. Just so we know. Because usually what we will do is for repeat students, we will assign them to a different teacher, if at all possible. So that's like our policy and that kind of goes into like assignment criteria as well. That a student, if possible, is assigned to a different teacher for the upcoming semester."


Parsed mapping

A. Reporting

Q Resolution Spec impact
Q1 — Keep v1 reports or add new? Mixed: keep v1 reports, add new v2 reports to fill gaps. Basic-first philosophy (Kamran): reports deliver raw data, analysis is separate downstream work. 09-reporting.md adds new reports; preserves Student Report, Referrals, Specific Reports, Student Composition, Logs.
Q2 — 3–5 concrete reports (1) Active Semester Enrollment Report — list of all enrolled students for a given semester, sliced by enrollment type (Continuing/New/Repeat/Year 2) × level × elective × gender × payment status. (2) Revenue Breakdown Report — % of students at each price tier (full / repeat-50% / family / scholarship), installment vs one-time, projected revenue if all installments complete. (3) Installment → One-Time Conversion Report (nice-to-have) — uptake of one-time-with-discount offer among prior-semester installment students. (4) Notification/Email Impact Report (nice-to-have) — correlation between messaging and attendance/submissions. (5) Enrollment-over-time curve (may live in Active Enrollment report as a chart). 09-reporting.md §7, §8, §9 (new).
Q3 — Export formats CSV only ("CSV is fine" — Lejla). PDF not required. Excel not required. 09-reporting.md global note.
Q4 — Live dashboard vs scheduled email Live dashboards + on-demand CSV export. No scheduled email sends for reports. (Note: scheduled send for the Communication > Blast Email system is unrelated and unchanged — see ADR-003.) 09-reporting.md global note.
Outstanding Full report catalog requires a dedicated working session. What v2 locks in now: the 2 primary reports + 2 nice-to-have stubs. Flagged in IMPLEMENTATION-PLAN.md Deferred Items.

B. Issue Queue state machine

Q Resolution Spec impact
Q1 — State set Open, In Progress (with optional delegated_to sub-state: CS / IT / Teaching Staff), Resolved, Rejected. "Closed" removed (was a v1 carryover with no distinct semantic from Resolved). 10-admin-system.md §6.4, ADR-006.
Q2 — Resolve vs Delete semantic Rename Delete → Reject. Resolved = "handled, kept in history." Rejected = "not a real issue, still kept in history." 10-admin-system.md §6.5.
Q3 — Reopen allowed? Yes. Resolved → Open and Rejected → Open are both legal transitions. Admin re-triages from Open. 10-admin-system.md §6.5, ADR-006.
Q4 — Backward moves Allowed (In Progress → Open, Resolved → In Progress via Reopen→Open→Admin-moves). Not blocked. ADR-006.
Q5 — Hard vs soft delete Soft only — nothing is hard-deleted. All issues retained in the system; Archive is a filter/view, not a state. 10-admin-system.md §6.5, ADR-006.
Q6 — Archive Yes, as a view. Lejla wants it specifically to run reports over historical issue data and refine the student-side "Report Issue" dialog UX. 10-admin-system.md §6.5, plus cross-reference from 09-reporting.md.
Delegation targets CS, IT, Teaching Staff. "Delegated" is an informational handoff — admin retains ownership + time-to-resolution tracking. These role labels are NOT backed by RBAC routing in v2 mockup (see Deferrals). 10-admin-system.md §6.5, 01-global-patterns.md status palette if needed.
Fresh desk integration Explicitly deferred. v2 mockup assumes no Fresh desk routing. Future "Delegate → email Fresh desk" is out of scope. IMPLEMENTATION-PLAN.md Deferred Items.

C. Repeat Semester workflow

Q Resolution Spec impact
Q1 — Visibility of opted-in repeaters Indicator on existing student views, not a separate section. Added as a new Enrollment Type column on Students list (values: Continuing / New / Repeat / Year 2). Repeat students surface via filter on this column + semester filter. 03-student-management.md Students list + Student Detail Enrollment section.
Q2 — Admin approval? None. Fully self-service via the fail-email opt-in link. 04-semester-management.md End Checklist Step 3 (confirms), 11-communication.md Automation Emails (confirms).
Q3 — Special handling: pricing 50% discount via separate checkout (existing production flow, preserved in v2 spec). Checkout cross-references a per-semester repeat-eligible list and rejects non-eligible sign-ups. 08-billing-payments.md new subsection.
Q3 — Special handling: manual override Add Repeat Student Manually admin action — required for edge cases (e.g., student skips a semester and repeats later; not on auto-generated eligible list). Placement: per-student action on Student Detail → Actions tab ("Mark as repeat-eligible for [semester]"), NOT a 5th Operations card. Rationale: per-student, not bulk; preserves ADR-005's 4-card consolidation; discoverable via student search. Also surfaced via a toolbar button on the repeat-eligible list view (Students list filtered by Enrollment Type=Repeat). 03-student-management.md Student Detail Actions tab.
Q3 — Special handling: TA assignment POLICY INVERSION: repeat students should be assigned to a DIFFERENT TA, if possible (was: "same TA as previous semester" per v1/current-v2 spec). Fall back to previous TA only when no alternative is available within capacity/gender constraints. 07-teacher-management.md §4.4.2 — see ADR-002 amendment.
Q4 — Effect on final_status / level tag None. Repeat students are regular active students enrolling in the new semester. final_status and level_tag unaffected. Tracking is via the new Enrollment Type field + a repeat tag on the semester-enrollment record. 03-student-management.md + 04-semester-management.md Tags section.

Deferrals made or reconfirmed

Topic Status Source
Fresh desk integration Explicitly deferred, v2 mockup assumes no routing Apr 22 L65–66
Full reporting catalog Working session still needed; Apr 22 commits 2 primary + 2 nice-to-have reports Apr 22 L41, L59
RBAC routing for delegation (CS/IT/Teaching Staff as login roles) Deferred; v2 mockup treats delegation as tag + informational only Apr 22 L76 (Kamran)
Auto-enrollment Still parked; revisit post-app-redesign Apr 21 ANSWERS §5
Notification/Email Impact Report definition Nice-to-have stub only; full design pending reporting working session Apr 22 L55

Glossary additions from Apr 22

Term Definition
Enrollment Type The reason a student is enrolled in a given semester. Values: Continuing (was with us last semester, enrolling in something new — graduated from L1–4, or Year 2 progression), New (first-time enrollee), Repeat (repeating a level they previously failed or opted to redo), Year 2 (currently in Year 2 program). Distinct from user_semester_status (Enrolled/Pass/Fail) which describes semester outcome, not type.
Repeat-eligible list Per-semester list that the repeat-discount checkout cross-references. Auto-populated from failed L1–4 students who were sent the fail-with-opt-in email. Manually extensible via "Add Repeat Student Manually" for skip-a-semester edge cases.
Delegated (Issue Queue) Sub-state of In Progress. delegated_to ∈ {CS, IT, Teaching Staff}. Informational flag — admin retains ownership.
Archive (Issue Queue) View/filter over Resolved + Rejected issues. Not a state; no hard delete. Lejla's primary use: periodic reports over historical issue patterns to refine the student-side "Report Issue" dialog UX.