Norcal SBDC - Complete Logic Flow

NORCAL SBDC COMPLETE LOGIC FLOW

Entry → Authentication → Intake → Dashboard → Actions → Impact
PHASE 1: ENTRY & DETECTION
1. USER ARRIVES
• Direct URL
• Google Search
• Partner referral
• Social media
2. GEO DETECTION
IP → County lookup
MaxMind GeoIP2
Fallback: Browser API
Default: Ask user
3. LOCATION CHECK
IF county_detected:
→ Show banner
ELSE:
→ ZIP prompt
4. CENTER ASSIGN
Match ZIP → Center
Store: localStorage
Cookie: 30 days
URL: /center/marin
5. CONTENT FILTER
Events: center_id
News: region_tag
Advisors: location
Resources: all+local
6. PAGE RENDER
"Norcal SBDC @ Marin"
Local events first
Center phone/address
Advisor photos
PHASE 2: AUTHENTICATION & ACCOUNT CREATION
7. TRIGGER
Click: "Join Us"
Click: "Register"
Click: "MySBDC"
Click: Event CTA
8. AUTH CHECK
IF has_session:
→ Skip to 641
ELSE:
→ SSO modal
9. SSO OPTIONS
Google OAuth 2.0
Microsoft Azure AD
Email + Password
(Forgot password flow)
10. AUTH PROCESS
OAuth redirect
Token exchange
JWT generation
Session: 30 days
11. USER CREATE
Check: existing email
Create: user_id
Link: center_id
Set: created_date
12. 641 CHECK
IF form_641_complete:
→ Dashboard
ELSE:
→ Form 641
PHASE 3: FORM 641 INTAKE LOGIC
13. FORM START
Load: saved progress
Show: 8-step bar
Time: ~7 minutes
Auto-save: onChange
14. STEP 1-2
Welcome message
Contact info
Consent checkboxes
Newsletter opt-in
15. STEP 3 BRANCH
Business Status?
→ Existing (fields A)
→ Starting (fields B)
→ Exploring (fields C)
16. STEPS 4-7
Demographics
Business details
Stage & capital
Goals/needs matrix
17. SCORING
Calculate: readiness
Range: 0-100
Threshold: 60+
Store: client_score
18. NEOSERRA SYNC
API: POST /clients
Map: 641 → Neoserra
Return: client_id
Queue: if offline
PHASE 4: MYSBDC DASHBOARD LOGIC
19. DASHBOARD LOAD
Fetch: user data
Fetch: milestones
Fetch: trainings
Fetch: advisor
20. SCORE ROUTING
IF score < 40:
→ Basic resources
IF score 40-59:
→ Group training
IF score 60+:
→ 1:1 advising
21. NEXT ACTION
Priority algorithm:
1. Missing docs
2. Scheduled call
3. Training reg
4. Milestone log
22. TAB CONTENT
Trainings: Neoserra
Milestones: Local DB
Advisor: Assignment
Resources: CMS
23. METRICS CALC
Capital: SUM(loans)
Jobs: COUNT(hires)
Progress: % complete
Status: realtime
24. NOTIFICATIONS
Check: new events
Check: messages
Check: deadlines
Badge: count
PHASE 5: ONE-CLICK ACTION FLOWS
25. EVENT REG
Click: Register
No form needed
Uses: 641 data
Time: < 1 sec
26. TYPE CHECK
IF type = zoom:
→ Zoom API
IF type = in-person:
→ Neoserra only
27. ZOOM API
POST /registrants
Body: {email, name}
Auto-approval: true
Return: join_url
28. NEOSERRA
POST /training/reg
Link: client_id
Status: registered
Attendance: pending
29. CALENDAR
Generate: .ics file
Include: join_url
Reminder: 1 hour
Download: auto
30. CONFIRM
Modal: success
Email: instant
Dashboard: updated
Status: ✓ Registered
31. COURSE ENROLL
Click: Enroll
Course ID: passed
User: authenticated
32. SSO TOKEN
Generate: SAML
Include: user_id
Include: email
Sign: private_key
33. LEARNWORLDS
POST /sso/login
Create: learner
Enroll: course_id
Redirect: lesson_1
34. PROGRESS SYNC
Webhook: on_complete
Update: dashboard
Log: Neoserra
Credit: hours
35. CERTIFICATE
Generate: PDF
Email: to user
Store: profile
Share: LinkedIn
36. MILESTONE LOG
Click: + Add
Types: Capital/Job/Rev
Form: 3 fields
37. VALIDATION
Check: data type
Check: date range
Check: duplicate
Flag: verification
38. STORE
Save: local DB
Queue: Neoserra
Update: dashboard
Recalc: metrics
39. SUCCESS ATLAS
Aggregate: realtime
Update: county totals
Update: impact map
Flag: story candidate
40. REPORTING
SBA: quarterly
Board: monthly
Grants: on-demand
Public: anonymous
SYSTEM INTEGRATIONS & API ENDPOINTS
NEOSERRA
POST /api/clients
GET /api/trainings
POST /api/training/register
PUT /api/milestones
GET /api/reports
ZOOM
POST /webinars/{id}/registrants
GET /meetings/{id}
GET /report/webinars/{id}
Webhook: attendee.joined
LEARNWORLDS
POST /api/sso/login
POST /api/users
POST /api/enrollments
Webhook: course.completed
CONSTANT CONTACT
POST /contacts
PUT /lists/{list_id}/contacts
POST /campaigns
GET /reports/{campaign_id}
KEY DECISION LOGIC
Condition Check True Path False Path Data Storage
Has Account? Check email in DB Login flow Create account users.email
Completed 641? Check user.form_641_date Show dashboard Start Form 641 users.form_641_complete
Business Status? 641 Step 3 selection Show relevant fields Hide irrelevant fields clients.business_status
Score >= 60? Calculate from 641 Enable advising Suggest training first clients.readiness_score
Event Type? Check training.format Zoom API if virtual Direct registration trainings.format
Has Advisor? Check advisor_assignments Show advisor card Show "Request Advisor" advisor_assignments.advisor_id
Newsletter Opt-in? Check preferences.newsletter Add to Constant Contact Skip email automation preferences.newsletter_opt_in
0
PASSWORDS
1
CLICK TO ACTION
7
MIN FORM 641
100%
DATA SYNC
18
CENTERS UNIFIED
40%
TIME SAVED