HSG ETH SPH Platform

Decisions

The why, the how, and what would prove me wrong.

01 The problem

Problem tree for expert supportFive causes below a core problem, five effects above it. Two causes are attacked by this build, one is only reduced, and two are deliberately deferred.EffectsProjects stallor detourMistakes surfacelate and costlyExperts triageinstead of adviseBest-connectedget the most helpDemand invisible,supply unplannedStudents with solvable problemsdo not reach the right expert in timeCausesCannot namethe problemplain language inDo not knowwho existsranked, with reasonsAsking carriesa social costlowered, not removedRouting is manual,depends who you knowsame route for allExpert capacityis invisiblenamed, not built

attacked by this build reduced, not solved deliberately deferred

02 Objectives, from those causes

O1

A stuck student reaches the right expert without knowing who to ask.

cannot name · does not know who · manual routing

O2

Asking is cheap enough that a half-formed question still gets asked.

social cost of admitting you are stuck

O3

Expert supply survives the demand this creates.

capacity is invisible

O4

It ships inside the live platform without disturbing it.

features arriving as separate products

O3 is the one this build makes worse. It lowers the cost of asking and does nothing about the cost of answering, which is how expert networks fail. It reads live on the dashboard.

03 Built, and cut

Built in the hour
  • Plain-language ask
  • Tag read-back
  • Ranked experts, with reasons
  • Request carrying the student’s words
  • Expert desk, accept or decline
  • Evidence recorded at every step
Cut on purpose
  • Scheduling and availabilitythe biggest thing that would fit, and the least revealing
  • Messaging threadsone clear handover matters more than a chat feature
  • Authenticationbelongs to the platform, not to this feature
  • Self-authored profilesmatching was the risky part, so the time went there
  • Tags as a join tablewrong at scale, correct for a sixty-minute build

04 A module, not an app

In the real role, features are built inside a platform that is already live. So this is shaped as one. module.ts declares the entire contract with the host: what it requires, what it owns, what it emits, and that it is removable.

Architecture of the expert support module inside the SPH platformStudents and experts reach a module mounted inside the host platform. The module owns its routes, a swappable matching strategy and an evidence recorder, and owns three D1 tables. Identity and the user and project entities are provided by the host and are not modified. A push deploys through CI to Cloudflare Pages in about forty seconds.StudentExpertHSG ETH SPH Platform · hostIdentity / SSOprovided, not builtUsers · Projectsrequired, unmodifiedModule · expert-support/m/expert-supportRoutesask · deskMatchStrategyswappable seamEvidencerecorderwrite-only,failure tolerantD1expertsrequestseventsowned · additive migrationsuserprojecthost tablesnever alteredDeliverygit pushGitHub ActionsCloudflare Pages/health reports the live commitabout forty seconds, verified
The module owns three tables and two routes. It requires identity and the user and project entities from the host and modifies neither, which is what makes it removable in one deploy. Matching sits behind a seam because it is the part most likely to be replaced.

05 Scaling is capacity, not traffic

SPH is thousands of students, not millions. D1 and edge rendering are already oversized for that. The binding constraint is expert attention.

  1. 1
    Now

    Tags as text, lexical matching, no capacity model.

    Correct while the open question is whether students use the front door at all.

  2. 2
    ~50 experts

    Join table, embeddings behind the same interface.

    Triggered by students routinely choosing rank two or three.

  3. 3
    Sustained volume

    Capacity model and load-aware ranking.

    Triggered by decline rate or time-to-first-response rising.

  4. 4
    Ongoing

    Useful answers per expert per month.

    Not requests sent. That number only measures the easy half.

Every stage is reversible and every migration additive, which is what makes committing to the small version now defensible rather than lazy.

06 What would prove me wrong

Five assumptions, each with a test that could disprove it and a live signal, on the evidence register. The one I cannot observe is the only one that finally matters: whether the student got an answer that helped. I would rather state that gap clearly than add a metric that does not actually test it.

SvelteKit · Cloudflare Pages · D1 · /health