Complete Deployment Guide
How to Build and Publish the UAD Knowledge Base — Step by Step
Who This Is For: The person responsible for getting this project live. No technical background required.
Time Required: 3–5 hours total, spread across 2–3 sessions
Cost: $0 to start. Paid tiers only needed if usage grows beyond free limits.
Before You Begin
What You Will Need
- ☐ A company Google account (your
@yourcompany.comemail) - ☐ Admin or Super Admin access to your Google Workspace (or someone in IT who has it)
- ☐ A personal or work email address to create free accounts on new services
- ☐ A computer (Mac or Windows — does not matter)
- ☐ About 2–3 hours for the first session, then 1–2 hours for a second session
What You Will NOT Need
- Any coding experience
- Any software installed on your computer (everything is done in a web browser)
- A credit card (all services used have free tiers)
How This Guide Is Organized
This guide has 11 Parts. Do them in order — each part builds on the previous one.
| Part | What You're Setting Up | Time |
|---|---|---|
| 1 | Google Drive folder structure | 20 min |
| 2 | Google Sheets Q&A Log | 15 min |
| 3 | Firebase (website engine) | 30 min |
| 4 | Google Cloud APIs (connections) | 30 min |
| 5 | Algolia (search) | 15 min |
| 6 | Deploy the website (Vercel) | 30 min |
| 7 | Connect your environment settings | 20 min |
| 8 | Set up email automation | 20 min |
| 9 | First login and content setup | 30 min |
| 10 | Custom domain (optional) | 15 min |
| 11 | Announce to your team | 5 min |
PART 1: Set Up Google Drive
What you're doing: Creating the folder structure in Google Drive where all documents, forms, and templates will live. The knowledge base website will automatically pull files from this folder.
Step 1.1 — Create the Master Folder
- Open Google Drive (drive.google.com) in your browser
- Click the "+ New" button (top left, blue)
- Select "New folder"
- Name it exactly:
UAD Knowledge Base — Master - Press Enter or click Create
Step 1.2 — Create the Subfolders
Open the folder you just created by double-clicking it. Then create 6 subfolders inside it. For each one: click "+ New" → "New folder" → type the name → Create.
Create these 6 subfolders in this exact order:
01_Guidelines & Standards02_Appraisal Forms03_Templates & Addenda04_Training Materials05_Quality Control06_Regulatory Updates
When done, your Drive folder should look like this:
UAD Knowledge Base — Master/
├── 01_Guidelines & Standards/
├── 02_Appraisal Forms/
├── 03_Templates & Addenda/
├── 04_Training Materials/
├── 05_Quality Control/
└── 06_Regulatory Updates/
Step 1.3 — Get the Folder ID (Important — save this)
- Open the
UAD Knowledge Base — Masterfolder in Drive - Look at the URL bar in your browser. It will look like:
https://drive.google.com/drive/folders/1AbCdEfGhIjKlMnOpQrStUv - The long string of letters and numbers at the end is your Folder ID
- Copy everything after
/folders/and paste it into a notes document - Label it:
GOOGLE_DRIVE_FOLDER_ID = [paste the ID here]
Why you need this: The website will use this ID to automatically sync and display your Google Drive files.
Step 1.4 — Upload Your First Documents
Start uploading any UAD 3.6 documents you already have. Drag PDF or Word files into the appropriate subfolders. Don't worry about uploading everything now — you can add more at any time.
File naming tip: Name files like this: 2026-06_FNMA_UAD36-Field-Definitions.pdf
- Year and month first (YYYY-MM) so files sort chronologically
- Then the source (FNMA, Internal, FHA, etc.)
- Then a short description
PART 2: Set Up the Google Sheets Q&A Log
What you're doing: Creating the spreadsheet where every question submitted by staff will automatically appear. The Quality Department will use this sheet to read and answer questions — no new software needed.
Step 2.1 — Create the Spreadsheet
- Go to Google Sheets (sheets.google.com)
- Click the "+" (Blank) to create a new spreadsheet
- Click "Untitled spreadsheet" at the top and rename it to:
UAD KB — Q&A Log
Step 2.2 — Set Up the Column Headers
Click on cell A1 and type the following headers, pressing Tab between each one:
- A1:
Submission ID - B1:
Timestamp - C1:
Name - D1:
Email - E1:
Category - F1:
Question - G1:
Urgency - H1:
Status - I1:
Assigned To - J1:
Answer - K1:
Answered By - L1:
Date Answered - M1:
Notes - N1:
Promoted to FAQ - O1:
FAQ Entry ID
Step 2.3 — Format the Header Row
- Click the row number "1" on the far left to select the entire first row
- Click the bold button (B) in the toolbar to make headers bold
- Click the background color bucket icon and choose a light blue or gray color
Step 2.4 — Freeze the Header Row
- Click View in the top menu
- Hover over "Freeze"
- Click "1 row"
Step 2.5 — Get the Sheet ID (Important — save this)
- Look at the URL bar. It will look like:
https://docs.google.com/spreadsheets/d/1AbCdEfGhIjKlMnOpQrStUv/edit - Copy the long string between
/d/and/edit - Paste it into your notes document
- Label it:
GOOGLE_SHEETS_QA_LOG_ID = [paste the ID here]
Step 2.6 — Rename the Sheet Tab
- At the bottom of the screen, double-click the tab labeled "Sheet1"
- Type
Q&A Logand press Enter
PART 3: Set Up Firebase
What you're doing: Firebase is Google's platform for building web apps. It will power your website's database, login system, and hosting. It's free to set up and has a generous free tier.
Step 3.1 — Create a Firebase Account
- Go to firebase.google.com
- Click "Get started"
- Sign in with your Google account (use your company Google account)
Step 3.2 — Create a New Project
- Click "Add project" (or "Create a project")
- Name your project:
uad-knowledge-base - Click Continue
- On the "Google Analytics" screen — toggle it OFF
- Click Create project
- Wait 30–60 seconds, then click Continue
Step 3.3 — Enable Google Login
- In the left sidebar, click "Build" → "Authentication"
- Click "Get started"
- Click "Google" from the sign-in providers list
- Click the toggle to Enable it
- Select your email in the "Project support email" dropdown
- Click "Save"
Step 3.4 — Create the Database
- In the left sidebar under "Build", click "Firestore Database"
- Click "Create database"
- Choose "Start in production mode" and click Next
- Select a Cloud Firestore location closest to your company:
us-east1(Virginia) — for US East companiesus-central1(Iowa) — for US Central/West companies
- Click Enable and wait 30–60 seconds
Step 3.5 — Get Your Firebase Configuration (save all 6 values)
- Click the gear icon ⚙️ next to "Project Overview"
- Click "Project settings"
- Scroll to "Your apps" and click the "</>" (Web) icon
- In "App nickname," type:
UAD KB Web - Click "Register app"
- You'll see a config block. Save each value to your notes:
NEXT_PUBLIC_FIREBASE_API_KEYNEXT_PUBLIC_FIREBASE_AUTH_DOMAINNEXT_PUBLIC_FIREBASE_PROJECT_IDNEXT_PUBLIC_FIREBASE_STORAGE_BUCKETNEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_IDNEXT_PUBLIC_FIREBASE_APP_ID
- Click "Continue to console"
Step 3.6 — Create Firebase Admin Credentials
- Still in Project settings, click the "Service accounts" tab
- Click "Generate new private key" → "Generate key"
- A JSON file downloads — open it with Notepad (Windows) or TextEdit (Mac)
- Find and save these two values:
FIREBASE_ADMIN_CLIENT_EMAIL= the"client_email"valueFIREBASE_ADMIN_PRIVATE_KEY= the entire"private_key"value (including BEGIN/END lines)
Security Warning: Never share this file or email these values. They are master keys to your database.
Step 3.7 — Set Up Firestore Security Rules
- In the left sidebar, click "Firestore Database" → "Rules" tab
- Delete all existing text and paste the following (replace
yourcompany\\.comwith your domain):
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
function isCompanyUser() {
return request.auth != null &&
request.auth.token.email.matches('.*@yourcompany\\.com');
}
function getUserRole() {
return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role;
}
function isEditor() {
return isCompanyUser() && getUserRole() in ['editor', 'admin', 'super_admin'];
}
function isAdmin() {
return isCompanyUser() && getUserRole() in ['admin', 'super_admin'];
}
match /articles/{id} { allow read: if isCompanyUser(); allow write: if isEditor(); }
match /faq/{id} { allow read: if isCompanyUser(); allow write: if isEditor(); }
match /qa_submissions/{id} { allow create: if isCompanyUser(); allow read, update: if isAdmin(); }
match /documents/{id} { allow read: if isCompanyUser(); allow write: if isEditor(); }
match /users/{userId} { allow read: if isCompanyUser(); allow write: if isAdmin() || request.auth.uid == userId; }
}
}
- Click "Publish"
Note: Change
yourcompany\\.comto your actual domain — e.g.,acmeappraisal\\.com. The double backslash is required.
PART 4: Set Up Google Cloud APIs
What you're doing: Giving the website permission to read your Google Drive files and write to your Google Sheets Q&A log.
Step 4.1 — Open Google Cloud Console
- Go to console.cloud.google.com
- Click the project dropdown at the top and select:
uad-knowledge-base
Step 4.2 — Enable the Google Drive API
- In the search bar at the top, search:
Google Drive API - Click it, then click the blue "Enable" button
Step 4.3 — Enable the Google Sheets API
- Search for:
Google Sheets API - Click it, then click the blue "Enable" button
Step 4.4 — Create a Service Account
- In the left sidebar, click "IAM & Admin" → "Service Accounts"
- Click "+ Create Service Account"
- Fill in:
- Name:
uad-kb-service - Description:
Service account for UAD KB website to access Drive and Sheets
- Name:
- Click "Create and Continue"
- Set Role to "Editor"
- Click "Continue" → "Done"
Step 4.5 — Create Service Account Key
- Click on the service account email you just created
- Click "Keys" tab → "Add Key" → "Create new key" → "JSON" → "Create"
- A JSON file downloads. Open it and save:
GOOGLE_SERVICE_ACCOUNT_EMAIL= the"client_email"valueGOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY= the entire"private_key"value
Step 4.6 — Share Google Drive Folder with the Service Account
- In Google Drive, right-click the "UAD Knowledge Base — Master" folder
- Click "Share"
- Paste the service account email (ends in
@uad-knowledge-base.iam.gserviceaccount.com) - Set permission to "Viewer"
- Uncheck "Notify people" → "Share"
Step 4.7 — Share Google Sheets with the Service Account
- Open the "UAD KB — Q&A Log" Google Sheet
- Click "Share" (top right)
- Paste the same service account email
- Set permission to "Editor"
- Uncheck "Notify people" → "Share"
PART 5: Set Up Algolia Search
What you're doing: Algolia powers the instant search bar. The free tier supports up to 10,000 searches per month.
Step 5.1 — Create an Algolia Account
- Go to algolia.com → click "Start free"
- Sign up and verify your email
Step 5.2 — Create a Search Index
- In the Algolia Dashboard, click "Create Index"
- Name the index:
uad_kb_content - Click "Create"
Step 5.3 — Get Your API Keys (save all 3)
- In the left sidebar, click "Settings" (gear icon) → "API Keys"
- Save these to your notes:
NEXT_PUBLIC_ALGOLIA_APP_ID= Application IDNEXT_PUBLIC_ALGOLIA_SEARCH_API_KEY= Search-Only API Key (safe to share)ALGOLIA_ADMIN_API_KEY= Admin API Key (keep secret)
PART 6: Deploy the Website
What you're doing: Publishing the website code to the internet using Vercel — a free hosting service connected to your GitHub repository.
Step 6.1 — Create a Vercel Account
- Go to vercel.com → click "Sign Up"
- Click "Continue with GitHub"
- If you don't have a GitHub account, create one (it's free)
- Authorize Vercel to access your GitHub account
Step 6.2 — Import Your Project
- In Vercel, click "Add New..." → "Project"
- Find "UAD-KB" in the list and click "Import"
- On the configuration screen, confirm:
- Framework Preset: Next.js (should auto-detect)
- Root Directory:
./
- Do NOT click Deploy yet — add environment variables first (Part 7)
PART 7: Connect All the Pieces (Environment Variables)
What you're doing: Giving the website all the passwords, IDs, and keys it needs. This is done by filling in a list of settings — no coding required.
Step 7.1 — Add Every Variable in Vercel
On the Vercel configuration screen, scroll to "Environment Variables". For each row below:
- Type the Variable Name in the "Name" field
- Paste the value from your notes in the "Value" field
- Click "Add"
| Variable Name | Where to Find the Value |
|---|---|
NEXT_PUBLIC_FIREBASE_API_KEY |
Notes — Part 3.5 |
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN |
Notes — Part 3.5 |
NEXT_PUBLIC_FIREBASE_PROJECT_ID |
Notes — Part 3.5 |
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET |
Notes — Part 3.5 |
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID |
Notes — Part 3.5 |
NEXT_PUBLIC_FIREBASE_APP_ID |
Notes — Part 3.5 |
FIREBASE_ADMIN_CLIENT_EMAIL |
Notes — Part 3.6 |
FIREBASE_ADMIN_PRIVATE_KEY |
Notes — Part 3.6 |
GOOGLE_SERVICE_ACCOUNT_EMAIL |
Notes — Part 4.5 |
GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY |
Notes — Part 4.5 |
GOOGLE_DRIVE_FOLDER_ID |
Notes — Part 1.3 |
GOOGLE_SHEETS_QA_LOG_ID |
Notes — Part 2.5 |
NEXT_PUBLIC_ALGOLIA_APP_ID |
Notes — Part 5.3 |
NEXT_PUBLIC_ALGOLIA_SEARCH_API_KEY |
Notes — Part 5.3 |
ALGOLIA_ADMIN_API_KEY |
Notes — Part 5.3 |
NEXT_PUBLIC_COMPANY_DOMAIN |
Your company email domain (e.g., acmeappraisal.com) |
QUALITY_DEPT_EMAIL |
Quality Department's email address |
NEXT_PUBLIC_APP_URL |
Leave blank for now |
NEXTAUTH_SECRET |
Generate one at generate-secret.vercel.app |
NEXTAUTH_URL |
Leave blank for now |
Step 7.2 — Deploy the Website
- Scroll to the top and click "Deploy"
- Wait 2–4 minutes for the build
- When you see a green checkmark and "Congratulations!", your website is live!
- Save your Vercel URL (e.g.,
uad-kb-yourname.vercel.app)
Step 7.3 — Update the App URL Variables
- In Vercel → Settings → Environment Variables
- Update
NEXT_PUBLIC_APP_URLto your Vercel URL (withhttps://) - Update
NEXTAUTH_URLto the same URL - Go to "Deployments" and click "Redeploy"
Step 7.4 — Add Your Site URL to Firebase
- Firebase Console → Authentication → Settings tab
- Under "Authorized domains", click "Add domain"
- Paste your Vercel URL (without
https://) - Click "Add"
PART 8: Set Up Email Automation
What you're doing: Adding a script to your Google Sheet that automatically emails the Quality Department when a new question arrives, and emails staff when their question is answered.
Step 8.1 — Open the Apps Script Editor
- Open your "UAD KB — Q&A Log" Google Sheet
- Click "Extensions" → "Apps Script"
- A new browser tab opens with a code editor
Step 8.2 — Paste the Email Script
- Delete all existing text (Ctrl+A then Delete)
- Replace
YOUR_QUALITY_DEPT_EMAILandYOUR_COMPANY_NAMEin the script below, then paste it:
var QUALITY_EMAIL = 'YOUR_QUALITY_DEPT_EMAIL';
var COMPANY_NAME = 'YOUR_COMPANY_NAME';
function onNewSubmission(e) {
try {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Q&A Log');
var lastRow = sheet.getLastRow();
if (lastRow < 2) return;
var data = sheet.getRange(lastRow, 1, 1, 15).getValues()[0];
GmailApp.sendEmail(
QUALITY_EMAIL,
'[' + (data[6] || 'Low').toUpperCase() + '] New UAD KB Question — ' + (data[4] || ''),
'New question submitted:\n\nFROM: ' + data[2] + ' (' + data[3] + ')\nCATEGORY: ' + data[4] +
'\nURGENCY: ' + data[6] + '\n\nQUESTION:\n' + data[5] +
'\n\nTo answer: open the Q&A Log, type in Column J, change Column H to "Answered".\n\n' +
'View log: ' + SpreadsheetApp.getActiveSpreadsheet().getUrl()
);
} catch (error) { Logger.log('Error: ' + error.toString()); }
}
function onSheetEdit(e) {
try {
var sheet = e.source.getActiveSheet();
if (sheet.getName() !== 'Q&A Log') return;
if (e.range.getColumn() !== 8 || e.range.getRow() < 2) return;
if (e.value !== 'Answered') return;
var data = sheet.getRange(e.range.getRow(), 1, 1, 15).getValues()[0];
if (!data[3] || !data[9]) return;
GmailApp.sendEmail(
data[3],
'Your UAD Knowledge Base Question Has Been Answered',
'Hi ' + data[2] + ',\n\nYour question has been answered.\n\nYOUR QUESTION:\n' + data[5] +
'\n\nANSWER:\n' + data[9] + '\n\nQuality Department\n' + COMPANY_NAME
);
sheet.getRange(e.range.getRow(), 12).setValue(new Date());
} catch (error) { Logger.log('Error: ' + error.toString()); }
}
function sendWeeklySummary() {
try {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Q&A Log');
var data = sheet.getRange(2, 1, Math.max(sheet.getLastRow() - 1, 1), 15).getValues();
var pending = data.filter(function(r) { return r[7] === 'New' || r[7] === 'In Review'; }).length;
var answered = data.filter(function(r) { return r[7] === 'Answered'; }).length;
var highPending = data.filter(function(r) { return (r[7] === 'New' || r[7] === 'In Review') && r[6] === 'High'; }).length;
GmailApp.sendEmail(QUALITY_EMAIL, 'UAD KB — Weekly Q&A Summary',
'Pending: ' + pending + '\nAnswered: ' + answered + '\nHigh urgency pending: ' + highPending +
'\n\nView log: ' + SpreadsheetApp.getActiveSpreadsheet().getUrl());
} catch (error) { Logger.log('Error: ' + error.toString()); }
}
- Click Save (floppy disk icon), name the project
UAD KB Automation, click OK
Step 8.3 — Set Up Triggers
- Click the clock icon in the left sidebar (Triggers)
- Click "+ Add Trigger" and set up these three triggers:
Trigger 1 — New Question Alert:
- Function:
onNewSubmission| Source:From spreadsheet| Event:On form submit - Click Save → authorize if prompted
Trigger 2 — Answer Sent Alert:
- Function:
onSheetEdit| Source:From spreadsheet| Event:On edit - Click Save
Trigger 3 — Weekly Summary:
- Function:
sendWeeklySummary| Source:Time-driven| Type:Week timer| Day:Every Monday| Time:8am to 9am - Click Save
Step 8.4 — Test the Email System
- In the Google Sheet, add a test row: any name, your email, a category, a question, "Low" urgency, "New" status
- Check the Quality Dept email — notification should arrive within 1 minute
- Change the Status cell to
Answered, add text to the Answer cell - Check your email — the answer notification should arrive within 1 minute
PART 9: First Login and Content Setup
Step 9.1 — First Login
- Go to your website URL
- Click "Sign in with Google" and sign in with your company account
- You'll be logged in as a "Viewer" by default
Step 9.2 — Set Yourself as Admin
Find your User ID:
- Firebase Console → Authentication → Users tab
- Find your account and copy the User UID
Create your admin record:
-
Firebase Console → Firestore Database → "+ Start collection"
-
Collection ID:
users→ Next -
Document ID: paste your User UID
-
Add these fields:
email(string): your company emaildisplayName(string): your namerole(string):super_admin
-
Click Save
-
Refresh your website — you now have admin access
Step 9.3 — Test the Q&A Flow
- Go to "Ask a Question" on your website
- Fill out and submit the form
- Check the Q&A Log Google Sheet — the question should appear within 30 seconds
- Check the Quality Dept email — notification should arrive within 1–2 minutes
Step 9.4 — Sync Google Drive Documents
- Go to the website admin panel (
/admin) - Navigate to Documents → Sync from Google Drive
- Click "Sync Now" — Drive files appear in the Document Library
Step 9.5 — Add Your First FAQ Entry
- Admin → FAQ → "+ New FAQ Entry"
- Question:
What is UAD 3.6 and why does it matter? - Category:
General / Getting Started - Short Answer:
UAD 3.6 (Uniform Appraisal Dataset version 3.6) is the standardized format required by Fannie Mae and Freddie Mac for residential appraisal reports. - Click Publish
PART 10: Set Up a Custom Domain (Optional)
Step 10.1 — Add Domain in Vercel
- Vercel → your project → "Settings" → "Domains"
- Enter:
kb.yourcompany.com→ click "Add" - Vercel shows you a DNS record (Type: CNAME, Name: kb, Value: cname.vercel-dns.com)
Step 10.2 — Add the DNS Record (IT Admin Task)
Send your IT contact this request:
"Please add a CNAME DNS record: Type=CNAME, Host=kb, Value=cname.vercel-dns.com. This will make kb.yourcompany.com point to our knowledge base."
DNS changes take 5–30 minutes.
Step 10.3 — Update Your App URL
- Vercel → Environment Variables → update
NEXT_PUBLIC_APP_URLandNEXTAUTH_URLtohttps://kb.yourcompany.com - Redeploy
- Firebase → Authentication → Settings → Authorized Domains → add
kb.yourcompany.com
PART 11: Announce to Your Team
Subject: Introducing the UAD 3.6 Knowledge Base — Now Live
Team,
We're excited to launch the UAD Knowledge Base — your one-stop resource
for UAD 3.6 appraisal standards, forms, guidelines, and quality resources.
Access it at: [your URL]
Log in with your company Google account — no new password needed.
WHAT YOU'LL FIND:
✓ In-depth articles on UAD 3.6 standards and requirements
✓ Downloadable forms, templates, and addenda
✓ FAQ section with answers to common questions
✓ "Ask a Question" — submit directly to the Quality Department
HAVE A QUESTION?
Use the "Ask a Question" feature instead of emailing Quality directly.
You'll receive a reply via email, and popular questions get added to the FAQ.
[Your name]
Troubleshooting
| Problem | Solution |
|---|---|
| "Access Denied" when logging in | Check NEXT_PUBLIC_COMPANY_DOMAIN in Vercel — no @ or www. Redeploy after changing. |
| Q&A form submitted but Sheet is empty | Verify service account is an Editor on the Sheet (Part 4.7). Check the Sheet ID is correct. |
| Email notifications not arriving | Check spam folder. In Apps Script, verify all 3 triggers exist under the clock icon. |
| Website build fails in Vercel | Click the failed deployment to see the error log. Usually a missing or misspelled env variable. |
| Drive files don't appear in Document Library | Confirm service account is a Viewer on the Drive folder. Re-run Sync in admin panel. |
Full Progress Checklist
Part 1 — Google Drive
- ☐ Master folder created
- ☐ 6 subfolders created
- ☐ Folder ID saved to notes
- ☐ First documents uploaded
Part 2 — Google Sheets
- ☐ Q&A Log sheet created with 15 headers
- ☐ Sheet tab renamed to "Q&A Log"
- ☐ Sheet ID saved to notes
Part 3 — Firebase
- ☐ Firebase project created
- ☐ Google authentication enabled
- ☐ Firestore database created
- ☐ 6 Firebase config values saved
- ☐ Admin private key saved
- ☐ Security rules published
Part 4 — Google Cloud APIs
- ☐ Drive API enabled
- ☐ Sheets API enabled
- ☐ Service account created and key saved
- ☐ Drive folder shared with service account (Viewer)
- ☐ Google Sheet shared with service account (Editor)
Part 5 — Algolia
- ☐ Account created
- ☐ Index
uad_kb_contentcreated - ☐ 3 API keys saved
Part 6–7 — Vercel Deployment
- ☐ Vercel account created
- ☐ UAD-KB repository imported
- ☐ All 20 environment variables entered
- ☐ Website deployed successfully
- ☐ Live URL working
- ☐ Firebase authorized domain updated
Part 8 — Email Automation
- ☐ Apps Script pasted and saved
- ☐ 3 triggers created
- ☐ Test notification email received
- ☐ Test answer email received
Part 9 — First Content
- ☐ Admin role set in Firebase
- ☐ First FAQ entry published
- ☐ Q&A form tested end-to-end
Part 10 — Custom Domain (optional)
- ☐ DNS record added by IT
- ☐ Domain verified in Vercel
- ☐ URLs updated in environment variables
Quick Reference
| What | Where to Go |
|---|---|
| Website (staff view) | kb.yourcompany.com or Vercel URL |
| Admin panel | kb.yourcompany.com/admin |
| Q&A Log | Google Sheets — UAD KB — Q&A Log |
| Documents | Google Drive — UAD Knowledge Base — Master |
| Website deployment | vercel.com |
| Database | console.firebase.google.com |
| Email automation | Google Sheets → Extensions → Apps Script |
| Search management | algolia.com |
Every step in this guide can be completed in a web browser. No software installation required.