diff --git a/onboarding-console (6).html b/onboarding-console (6).html index 7dd76a8..a6f907d 100644 --- a/onboarding-console (6).html +++ b/onboarding-console (6).html @@ -15,6 +15,8 @@ --client:#1596d8; --client-soft:#123a5c; --intern:#39c8a8; --intern-soft:#1d4a45; --contractor:#f0a94b; --contractor-soft:#4d3820; + --experiment:#a78bfa; --experiment-soft:#33295a; + --mvp:#f472b6; --mvp-soft:#552440; --accent:var(--client); --accent-soft:var(--client-soft); --ok:#42d392; --err:#ff6b6b; --radius:14px; --radius-sm:9px; @@ -53,7 +55,7 @@ body{ .step-sep{flex:1;height:1px;background:var(--line-soft);min-width:12px;max-width:40px} /* role selector */ -.roles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:22px} +.roles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:22px} .role{position:relative;cursor:pointer;border:1px solid var(--line);background:var(--panel);border-radius:var(--radius); padding:16px;text-align:left;color:var(--ink);transition:border-color .2s,background .2s,transform .12s;display:flex;flex-direction:column;gap:9px} .role:hover{transform:translateY(-2px)} @@ -65,6 +67,8 @@ body{ .role[data-role="client"]{--r:var(--client);--r-soft:var(--client-soft);--r-line:#3a478a} .role[data-role="intern"]{--r:var(--intern);--r-soft:var(--intern-soft);--r-line:#2c6b60} .role[data-role="contractor"]{--r:var(--contractor);--r-soft:var(--contractor-soft);--r-line:#77571f} +.role[data-role="experiment"]{--r:var(--experiment);--r-soft:var(--experiment-soft);--r-line:#5b4a99} +.role[data-role="mvp"]{--r:var(--mvp);--r-soft:var(--mvp-soft);--r-line:#8a3a68} .role[aria-pressed="true"]{background:var(--panel-2);border-color:var(--r);box-shadow:inset 0 0 0 1px var(--r),0 8px 24px -14px var(--r)} .role[aria-pressed="true"]::after{content:"";position:absolute;top:12px;right:12px;width:8px;height:8px;border-radius:50%;background:var(--r); box-shadow:0 0 0 3px color-mix(in srgb,var(--r) 25%,transparent)} @@ -215,6 +219,16 @@ select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='ht Contractor A scoped engagement. Captures terms and deliverables. + +
@@ -523,6 +537,127 @@ select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='ht

Note: do not enter tax IDs, bank details, or other sensitive payment information here. Those are collected separately through a secure channel.

+ +
+
Experiment
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
Venture & Contact
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
Problem & Scope
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+

How your information is used

@@ -585,14 +720,23 @@ const BASE = "https://autonomy.digitalchances.co.ke/webhook"; const ENDPOINTS = { client: BASE + "/client-onboarding", intern: BASE + "/intern-onboarding", - contractor: BASE + "/contractor-onboarding" + contractor: BASE + "/contractor-onboarding", + experiment: BASE + "/experiment-onboarding", + mvp: BASE + "/mvp-onboarding" +}; +// Discord channels the n8n workflows open threads in; sent with each submission. +const DISCORD_CHANNELS = { + experiment: "1511998970216448031", // #experiment-products + mvp: "1534550504401670194" // #mvps-pre-onboarding }; const SHARED_SECRET = ""; // set to match the workflows' SECRET const ROLE_META = { client: { tag:"Client", title:"Client engagement", required:["name","contactEmail","projectName","projectGoal","owner"], nameLabel:"Company name" }, intern: { tag:"Intern", title:"Intern placement", required:["name","focusArea","mentor","owner"], nameLabel:"Full name" }, - contractor: { tag:"Contractor", title:"Contractor engagement", required:["name","specialty","scope","owner"], nameLabel:"Full name" } + contractor: { tag:"Contractor", title:"Contractor engagement", required:["name","specialty","scope","owner"], nameLabel:"Full name" }, + experiment: { tag:"Experiment", title:"Experiment product", required:["name","productName","hypothesis","owner"], nameLabel:"Lead / team name" }, + mvp: { tag:"MVP", title:"MVP pre-onboarding", required:["name","contactEmail","productName","problem","owner"], nameLabel:"Founder / company name" } }; const INTERN_HANDBOOK = `# Digital Chances - Intern Handbook @@ -670,6 +814,7 @@ function gotoStep(n){ function collect(){ const data = { type: currentRole, submittedAt: new Date().toISOString() }; + if(DISCORD_CHANNELS[currentRole]) data.discordChannelId = DISCORD_CHANNELS[currentRole]; form.querySelectorAll("[data-shared]").forEach(i=>{ if(i.name) data[i.name]=i.value.trim(); }); const active = document.querySelector(`.role-fields[data-fields="${currentRole}"]`); active.querySelectorAll("input,select,textarea").forEach(i=>{ if(i.name) data[i.name]=i.value.trim(); }); @@ -706,7 +851,7 @@ form.addEventListener("submit",(e)=>{ function buildReview(data){ const rows = el("reviewRows"); rows.innerHTML = ""; - const skip = new Set(["type","submittedAt"]); + const skip = new Set(["type","submittedAt","discordChannelId"]); Object.keys(data).forEach(k=>{ if(skip.has(k) || !data[k]) return; const row = document.createElement("div"); row.className="rev-row"; @@ -750,11 +895,14 @@ el("submitBtn").addEventListener("click", async ()=>{ function showConfirm(ref){ el("refNumber").textContent = ref; const m = ROLE_META[currentRole]; - el("confirmTitle").textContent = `${m.tag} engagement started`; + el("confirmTitle").textContent = { experiment:"Experiment registered", mvp:"MVP pre-onboarding received" }[currentRole] + || `${m.tag} engagement started`; const steps = { client: ["An internal owner has been assigned to your engagement.","A project space is being set up.","Expect a first response within 1–2 business days."], intern: ["Your placement record has been created.","Your mentor will be notified.","Download your documents below and read them before day one."], - contractor: ["Your engagement record has been created.","Contract and deliverables are being reviewed.","Expect next steps from your point of contact shortly."] + contractor: ["Your engagement record has been created.","Contract and deliverables are being reviewed.","Expect next steps from your point of contact shortly."], + experiment: ["Your experiment record has been created.","A thread is being opened in #experiment-products.","Post progress there and judge it against your kill criteria on the decision date."], + mvp: ["Your MVP record has been created.","A thread is being opened in #mvps-pre-onboarding.","An owner will review scope and reach out to schedule a kickoff."] }[currentRole]; el("confirmMsg").textContent = "Your submission has been received and routed to the right owner at Digital Chances."; el("nextSteps").innerHTML = steps.map(s=>`
  • ${s}
  • `).join("");