Archived Brief
This brief has been completed and is retained as a build record.
Brief B-CAT-02¶
RTOpacks Public Surface — Search, Unit Detail, RTO Onboarding Entry Point¶
Status: Ready to build
Precondition: B-CAT-01 confirmed deployed. RTP-PREVIEW-MONTHLY type confirmed as per_month, display reads $100.00/month.
Cloudflare Account: e5a9830215a8d88961dc6c80a8c7442a
Surface: ucca.college (public, unauthenticated) — front door to the RTOpacks pipeline
Do Not Touch: engine-db products table, Stripe integration, ops console, existing Moodle content on ucca.college
Context¶
The search surface at ucca.college already exists and works. Type "co" and you get quals, units, and skill sets with status badges. The corpus is live and queryable. That's the first shock — this thing knows everything.
B-CAT-02 takes that surface from "it works" to "it blows people out of the water." It is the front door to the entire RTOpacks pipeline. Every realisation, every upgrade, every corporate pitch, every free workspace starts here.
Three deliverables:
- Search results — cleaned up and expanded (add RTO results, filter superseded)
- Unit detail page — the hook that makes pricing make sense
- RTO result card + onboarding entry point — free workspace claim flow
→ ALEX¶
Deliverable 1 — Search Results Cleanup and RTO Results¶
Filter: - Superseded and Deleted results hidden by default - Optional toggle: "Include superseded" — collapsed by default, power user feature
Four result type groups: Currently: Qualifications / Units / Skill Sets Add: RTOs
RTO result card shows: - RTO name - RTO number - State - Status (Active) - Qual count on scope: "47 qualifications on scope" - Single CTA: "Claim your free workspace →"
RTO data source: ASQA public register data already in rtopacks-db. If RTO domain data is not present in rtopacks-db, note as a precondition gap — do not build the domain verification step until confirmed available.
Deliverable 2 — Unit Detail Page¶
This is the page that makes the price land correctly. By the time they see the number they already understand what they're buying.
URL pattern: ucca.college/units/:unit_code
Page layout — three columns on desktop, stacked on mobile:
Left column — Unit data (from TGA via rtopacks-db): - Unit code + full title - Training package - AQF level - Unit descriptor (full text) - Elements and performance criteria — expandable per element - Required knowledge — expandable - Required skills — expandable - Assessment conditions - Foundation skills
Full TGA unit record. Presented cleanly. Not a government PDF. Every section expandable.
Right column — RTOs offering this unit: - List of RTOs who have this unit on scope (from ASQA data in rtopacks-db) - Each RTO shows: name, state, clickable - Click RTO → RTO detail page (Deliverable 3) - If no RTOs: "No RTOs currently offering this unit. Be the first."
Centre/bottom — Pricing and CTA:
Surfaces after unit data. Not before.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Standard pack — off the shelf
Template document + assessment, TAE-mapped
Delivered as: Word / PDF / SCORM
$40.00 inc. GST
UCCA packs to order and contextualises.
This is the off-the-shelf price.
Your pack can be built for your context,
your learners, your delivery model.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Price pulled from L3 catalogue API — RTP-UNIT-GENERIC SKU. Never hardcoded.
CTA: "To purchase you need a workspace. It's free." Button: "Create your workspace →"
Secondary CTA: "Already an RTO? Enter your RTO number and we'll load your approved scope." → leads to RTO onboarding flow
Video embed: Placeholder container — 16:9, max-width 560px, above pricing block. Tim to supply video. Alex builds container now, content drops in when ready.
Qualification context: Collapsed section below unit detail: "This unit appears in X qualifications." Expand → list of quals containing this unit, each linkable. Qual detail page: stub the route now, build in a future brief.
Deliverable 3 — RTO Detail Page + Onboarding Entry Point¶
URL pattern: ucca.college/rtos/:rto_number
What we show — a considered subset. Not a data dump: - RTO name and number - Trading name if different - State - ASQA registration status - 5 quals from their scope (first 5 alphabetically) with "+ X more" count - Single statement: "Your free workspace is ready. Everything you're approved to deliver is already loaded."
Not "we found your data." — "You're pre-approved. Welcome aboard."
CTA: "Claim your free workspace →"
Step 1 — Verification:
To get you in we need one thing.
Enter your work email and mobile.
We'll send you two codes. That's it.
[ work email field ]
[ mobile number field ]
[ Send my codes ]
Email must match RTO's registered domain. If domain match fails: "That email doesn't match your registered domain. Try your work email or contact us." Do not reveal what domain we're expecting.
Step 2 — Two codes:
Both required. 6-digit OTP. 10 minute expiry.
Step 3 — Data confirmation:
Welcome to RTOpacks.
Here's what we know about you. Is this correct?
RTO Name: [name]
RTO Number: [number]
State: [state]
ASQA Status: Active
Quals on scope: [count] — [view all]
[ Yes, that's us → ] [ Something's wrong ]
"Yes, that's us" → workspace opens, Composer enabled in free tier, welcome screen shown.
"Something's wrong" → free text flag, they still get in, flag logged, notification to admin@ucca.online.
Role inference from email (logged to ops, never shown to user):
- ceo@ / director@ / owner@ / principal@ → decision maker
- admin@ / info@ / contact@ → role account, prompt for name on first use
- firstname.lastname@ → named individual
Workspace welcome screen (first login only):¶
You're in.
Your workspace is loaded with your
[X] approved qualifications and [Y] units.
Start noodling — it's free.
Map an existing course, design a new one,
or search for a unit and start there.
Infinite noodles. Free. Forever.
Print for $10/month when you're ready.
[ Start with a unit → ] [ Browse my quals → ]
No tour. No walkthrough. No onboarding sequence. They're adults. Get out of the way.
FastAPI endpoints required¶
GET /v1/public/units/:unit_code— unit detail (public)GET /v1/public/units/:unit_code/qualifications— quals containing this unit (public)GET /v1/public/units/:unit_code/rtos— RTOs offering this unit (public)GET /v1/public/rtos/:rto_number— RTO public profile (public)POST /v1/onboarding/verify-email— send OTP to email + mobilePOST /v1/onboarding/confirm— verify both OTPs, create workspace sessionPOST /v1/onboarding/confirm-data— log yes/flag responsePOST /v1/onboarding/flag— log data correction flag
OPS STUB REQUIRED AT DEPLOY¶
ops.ucca.online → COMMERCIAL → Onboarding
- Table: rto_number, email (masked), domain_matched, verified_at, data_confirmed, flag_text
- Row count: "X RTOs onboarded"
- Flag queue: unresolved flags visible and resolvable
Confirm deployed with:¶
- Screenshot: search results showing RTO result type alongside quals/units/skill sets
- Screenshot: unit detail page showing TGA data, RTO list, and pricing block
- Screenshot: RTO detail page showing subset data and claim CTA
- Screenshot: onboarding flow — all three steps
- Screenshot: workspace welcome screen
- Screenshot: ops onboarding table showing at least one test onboard
- Confirm price on unit detail page pulls live from L3 — change RTP-UNIT-GENERIC in ops console, confirm page updates without redeploy
→ TIM¶
- Video embed container is live but empty. Record a short explainer (2-3 mins) — what RTOpacks builds against a unit and how. Drop URL to Alex when ready.
- Domain verification depends on ASQA domain data in rtopacks-db. Alex will flag if missing. Fallback: user types their domain manually. Less elegant, unblocks the build.
- Test the onboarding yourself on deploy. Go to ucca.college, find your RTO, claim the workspace, go through the flow. If the data confirmation screen feels wrong, flag it before B-PORT-01 lands on top of it.
- "Something's wrong" flags arrive at admin@ucca.online. These are data quality signals against the ASQA register. Don't ignore them.
UCCA Inc · Brief B-CAT-02 · Session 18 · 18 March 2026
Cloudflare Account: e5a9830215a8d88961dc6c80a8c7442a
"Infinite noodles. Free. Forever."