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.com email)
  • ☐ 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

  1. Open Google Drive (drive.google.com) in your browser
  2. Click the "+ New" button (top left, blue)
  3. Select "New folder"
  4. Name it exactly: UAD Knowledge Base — Master
  5. 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:

  1. 01_Guidelines & Standards
  2. 02_Appraisal Forms
  3. 03_Templates & Addenda
  4. 04_Training Materials
  5. 05_Quality Control
  6. 06_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)

  1. Open the UAD Knowledge Base — Master folder in Drive
  2. Look at the URL bar in your browser. It will look like: https://drive.google.com/drive/folders/1AbCdEfGhIjKlMnOpQrStUv
  3. The long string of letters and numbers at the end is your Folder ID
  4. Copy everything after /folders/ and paste it into a notes document
  5. 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

  1. Go to Google Sheets (sheets.google.com)
  2. Click the "+" (Blank) to create a new spreadsheet
  3. 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

  1. Click the row number "1" on the far left to select the entire first row
  2. Click the bold button (B) in the toolbar to make headers bold
  3. Click the background color bucket icon and choose a light blue or gray color

Step 2.4 — Freeze the Header Row

  1. Click View in the top menu
  2. Hover over "Freeze"
  3. Click "1 row"

Step 2.5 — Get the Sheet ID (Important — save this)

  1. Look at the URL bar. It will look like: https://docs.google.com/spreadsheets/d/1AbCdEfGhIjKlMnOpQrStUv/edit
  2. Copy the long string between /d/ and /edit
  3. Paste it into your notes document
  4. Label it: GOOGLE_SHEETS_QA_LOG_ID = [paste the ID here]

Step 2.6 — Rename the Sheet Tab

  1. At the bottom of the screen, double-click the tab labeled "Sheet1"
  2. Type Q&A Log and 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

  1. Go to firebase.google.com
  2. Click "Get started"
  3. Sign in with your Google account (use your company Google account)

Step 3.2 — Create a New Project

  1. Click "Add project" (or "Create a project")
  2. Name your project: uad-knowledge-base
  3. Click Continue
  4. On the "Google Analytics" screen — toggle it OFF
  5. Click Create project
  6. Wait 30–60 seconds, then click Continue

Step 3.3 — Enable Google Login

  1. In the left sidebar, click "Build" → "Authentication"
  2. Click "Get started"
  3. Click "Google" from the sign-in providers list
  4. Click the toggle to Enable it
  5. Select your email in the "Project support email" dropdown
  6. Click "Save"

Step 3.4 — Create the Database

  1. In the left sidebar under "Build", click "Firestore Database"
  2. Click "Create database"
  3. Choose "Start in production mode" and click Next
  4. Select a Cloud Firestore location closest to your company:
    • us-east1 (Virginia) — for US East companies
    • us-central1 (Iowa) — for US Central/West companies
  5. Click Enable and wait 30–60 seconds

Step 3.5 — Get Your Firebase Configuration (save all 6 values)

  1. Click the gear icon ⚙️ next to "Project Overview"
  2. Click "Project settings"
  3. Scroll to "Your apps" and click the "</>" (Web) icon
  4. In "App nickname," type: UAD KB Web
  5. Click "Register app"
  6. You'll see a config block. Save each value to your notes:
    • NEXT_PUBLIC_FIREBASE_API_KEY
    • NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN
    • NEXT_PUBLIC_FIREBASE_PROJECT_ID
    • NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET
    • NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID
    • NEXT_PUBLIC_FIREBASE_APP_ID
  7. Click "Continue to console"

Step 3.6 — Create Firebase Admin Credentials

  1. Still in Project settings, click the "Service accounts" tab
  2. Click "Generate new private key" → "Generate key"
  3. A JSON file downloads — open it with Notepad (Windows) or TextEdit (Mac)
  4. Find and save these two values:
    • FIREBASE_ADMIN_CLIENT_EMAIL = the "client_email" value
    • FIREBASE_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

  1. In the left sidebar, click "Firestore Database" → "Rules" tab
  2. Delete all existing text and paste the following (replace yourcompany\\.com with 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; }
  }
}
  1. Click "Publish"

Note: Change yourcompany\\.com to 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

  1. Go to console.cloud.google.com
  2. Click the project dropdown at the top and select: uad-knowledge-base

Step 4.2 — Enable the Google Drive API

  1. In the search bar at the top, search: Google Drive API
  2. Click it, then click the blue "Enable" button

Step 4.3 — Enable the Google Sheets API

  1. Search for: Google Sheets API
  2. Click it, then click the blue "Enable" button

Step 4.4 — Create a Service Account

  1. In the left sidebar, click "IAM & Admin" → "Service Accounts"
  2. Click "+ Create Service Account"
  3. Fill in:
    • Name: uad-kb-service
    • Description: Service account for UAD KB website to access Drive and Sheets
  4. Click "Create and Continue"
  5. Set Role to "Editor"
  6. Click "Continue" → "Done"

Step 4.5 — Create Service Account Key

  1. Click on the service account email you just created
  2. Click "Keys" tab → "Add Key" → "Create new key" → "JSON" → "Create"
  3. A JSON file downloads. Open it and save:
    • GOOGLE_SERVICE_ACCOUNT_EMAIL = the "client_email" value
    • GOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY = the entire "private_key" value

Step 4.6 — Share Google Drive Folder with the Service Account

  1. In Google Drive, right-click the "UAD Knowledge Base — Master" folder
  2. Click "Share"
  3. Paste the service account email (ends in @uad-knowledge-base.iam.gserviceaccount.com)
  4. Set permission to "Viewer"
  5. Uncheck "Notify people" → "Share"

Step 4.7 — Share Google Sheets with the Service Account

  1. Open the "UAD KB — Q&A Log" Google Sheet
  2. Click "Share" (top right)
  3. Paste the same service account email
  4. Set permission to "Editor"
  5. Uncheck "Notify people" → "Share"

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

  1. Go to algolia.com → click "Start free"
  2. Sign up and verify your email

Step 5.2 — Create a Search Index

  1. In the Algolia Dashboard, click "Create Index"
  2. Name the index: uad_kb_content
  3. Click "Create"

Step 5.3 — Get Your API Keys (save all 3)

  1. In the left sidebar, click "Settings" (gear icon) → "API Keys"
  2. Save these to your notes:
    • NEXT_PUBLIC_ALGOLIA_APP_ID = Application ID
    • NEXT_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

  1. Go to vercel.com → click "Sign Up"
  2. Click "Continue with GitHub"
  3. If you don't have a GitHub account, create one (it's free)
  4. Authorize Vercel to access your GitHub account

Step 6.2 — Import Your Project

  1. In Vercel, click "Add New..." → "Project"
  2. Find "UAD-KB" in the list and click "Import"
  3. On the configuration screen, confirm:
    • Framework Preset: Next.js (should auto-detect)
    • Root Directory: ./
  4. 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:

  1. Type the Variable Name in the "Name" field
  2. Paste the value from your notes in the "Value" field
  3. 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

  1. Scroll to the top and click "Deploy"
  2. Wait 2–4 minutes for the build
  3. When you see a green checkmark and "Congratulations!", your website is live!
  4. Save your Vercel URL (e.g., uad-kb-yourname.vercel.app)

Step 7.3 — Update the App URL Variables

  1. In Vercel → Settings → Environment Variables
  2. Update NEXT_PUBLIC_APP_URL to your Vercel URL (with https://)
  3. Update NEXTAUTH_URL to the same URL
  4. Go to "Deployments" and click "Redeploy"

Step 7.4 — Add Your Site URL to Firebase

  1. Firebase Console → Authentication → Settings tab
  2. Under "Authorized domains", click "Add domain"
  3. Paste your Vercel URL (without https://)
  4. 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

  1. Open your "UAD KB — Q&A Log" Google Sheet
  2. Click "Extensions" → "Apps Script"
  3. A new browser tab opens with a code editor

Step 8.2 — Paste the Email Script

  1. Delete all existing text (Ctrl+A then Delete)
  2. Replace YOUR_QUALITY_DEPT_EMAIL and YOUR_COMPANY_NAME in 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()); }
}
  1. Click Save (floppy disk icon), name the project UAD KB Automation, click OK

Step 8.3 — Set Up Triggers

  1. Click the clock icon in the left sidebar (Triggers)
  2. 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

  1. In the Google Sheet, add a test row: any name, your email, a category, a question, "Low" urgency, "New" status
  2. Check the Quality Dept email — notification should arrive within 1 minute
  3. Change the Status cell to Answered, add text to the Answer cell
  4. Check your email — the answer notification should arrive within 1 minute

PART 9: First Login and Content Setup

Step 9.1 — First Login

  1. Go to your website URL
  2. Click "Sign in with Google" and sign in with your company account
  3. You'll be logged in as a "Viewer" by default

Step 9.2 — Set Yourself as Admin

Find your User ID:

  1. Firebase Console → Authentication → Users tab
  2. Find your account and copy the User UID

Create your admin record:

  1. Firebase Console → Firestore Database → "+ Start collection"

  2. Collection ID: users → Next

  3. Document ID: paste your User UID

  4. Add these fields:

    • email (string): your company email
    • displayName (string): your name
    • role (string): super_admin
  5. Click Save

  6. Refresh your website — you now have admin access

Step 9.3 — Test the Q&A Flow

  1. Go to "Ask a Question" on your website
  2. Fill out and submit the form
  3. Check the Q&A Log Google Sheet — the question should appear within 30 seconds
  4. Check the Quality Dept email — notification should arrive within 1–2 minutes

Step 9.4 — Sync Google Drive Documents

  1. Go to the website admin panel (/admin)
  2. Navigate to Documents → Sync from Google Drive
  3. Click "Sync Now" — Drive files appear in the Document Library

Step 9.5 — Add Your First FAQ Entry

  1. Admin → FAQ → "+ New FAQ Entry"
  2. Question: What is UAD 3.6 and why does it matter?
  3. Category: General / Getting Started
  4. 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.
  5. Click Publish

PART 10: Set Up a Custom Domain (Optional)

Step 10.1 — Add Domain in Vercel

  1. Vercel → your project → "Settings" → "Domains"
  2. Enter: kb.yourcompany.com → click "Add"
  3. 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

  1. Vercel → Environment Variables → update NEXT_PUBLIC_APP_URL and NEXTAUTH_URL to https://kb.yourcompany.com
  2. Redeploy
  3. 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_content created
  • ☐ 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.