Zoho Catalyst Deployment Guide — GridMind AI

HackSphere 3.0 at BITS Hyderabad

Project: GridMind AI — Smart Energy Microgrid & Demand Forecasting Engine
Tagline: "Predict Demand. Balance Power. Prevent Overloads."


1. Project Directory Structure for Zoho Catalyst

├── catalyst.json                 # Catalyst project definition (Slate client + AppSail)
├── catalyst/
│   ├── backend/
│   │   ├── main.py               # FastAPI AppSail backend entry point
│   │   ├── requirements.txt      # Python dependencies for AppSail
│   │   └── predict.py            # QuickML inference adapter
│   └── README.md                 # Deployment instructions (this file)
├── dist/                         # Compiled React client assets for Catalyst Slate
├── predict.py                    # Root evaluation script for test_eval.py contract
├── test_eval.py                  # Official evaluation runner
├── train_telemetry.csv           # QuickML training dataset (weather features + ground truth target)
├── sample_test_input.csv         # 24h+ test telemetry inputs
├── package.json
└── server.ts                     # Full-stack Node/Express dev & testing server

2. Zoho Catalyst QuickML Training & Endpoint Publishing

To connect the forecasting pipeline to your custom-trained machine learning model:

  1. Sign in to Zoho Catalyst Console: Navigate to https://catalyst.zoho.com and create or select your project (HackSphere-GridMind).

  2. Open QuickML:

    • In the left sidebar, click AI Services > QuickML.
    • Click Create Pipeline > Select Tabular Regression.
  3. Upload Training Data:

    • Upload the included train_telemetry.csv.
    • Set target_demand_kw as the Target Column.
    • Set timestamp as datetime/time-series feature or extract hour.
    • Set ambient_temp_c, humidity_pct, and solar_irradiance_wm2 as numerical features.
  4. Train & Evaluate:

    • QuickML automatically tests models (Random Forest Regressor, Gradient Boosting, XGBoost, Linear Regression).
    • Review RMSE and $R^2$ metrics on the validation split.
  5. Publish Model & Copy REST API Endpoint:

    • Click Deploy / Publish Pipeline.
    • Copy the published Inference Endpoint URL (e.g. https://quickml.zoho.com/api/v1/projects/.../predict).
    • Copy the Authorization Token (or Catalyst Project Auth Header).

3. Environment Variables Configuration

Create a .env file in the project root or configure via Catalyst AppSail Console:

# Published Zoho Catalyst QuickML Endpoint URL
QUICKML_ENDPOINT_URL="https://quickml.zoho.com/api/v1/projects/YOUR_PROJECT_ID/predict"

# Optional Auth Token for Catalyst Service
QUICKML_AUTH_TOKEN="YOUR_CATALYST_AUTH_TOKEN"

# Strict mode: set to true to enforce QuickML API only (fail on error rather than baseline fallback)
STRICT_MODE="false"

# Application URL
APP_URL="https://gridmind-app.catalystserverless.com"

4. Frontend Build Instructions (Catalyst Slate)

# 1. Install dependencies
npm install

# 2. Build production assets into /dist
npm run build

The output directory dist/ contains the static SPA bundle configured in catalyst.json:

{
  "client": {
    "source": "dist"
  }
}

5. Catalyst Deployment Instructions (CLI)

# 1. Install Catalyst CLI globally if not already installed
npm install -g zcatalyst-cli

# 2. Login to Zoho Catalyst
catalyst login

# 3. Associate with your project
catalyst init

# 4. Deploy all services (Slate client + AppSail backend)
catalyst deploy

Once deployment finishes, Catalyst prints the live public web application URL:

Client URL: https://<project-domain>.catalystserverless.com/app/index.html

6. Official Pre-Submission Checklist

Before final submission to the HackSphere 3.0 portal:

  • [x] predict.py root execution:

    python predict.py --input sample_test_input.csv --output predictions.csv
    

    Verified: exactly 1000 prediction rows produced matching input timestamps.

  • [x] test_eval.py self-test check:

    python test_eval.py
    

    Verified: returns SUCCESS.

  • [x] Switching Controller Logic:

    • Rule A: predicted load > 160 kW -> Renewable Storage Mode
    • Rule B: timestamp hour 18:00–22:00 inclusive -> Renewable Storage Mode
    • Rule C: otherwise -> Main Grid Mode
    • Rule D: predicted load >= 200 kW -> Critical Overload Alert
    • Verified via 9 unit tests in tests/test_switching_controller.py.
  • [x] Battery State of Charge:

    • Physically clamped between 0.0% and 100.0%.
    • Verified with boundary test cases.
  • [x] Security:

    • No API keys or auth tokens hardcoded in client source files.
    • QuickML credentials passed via server-side proxy / environment variables.

7. Troubleshooting

Issue Resolution
QuickML API returns HTTP 401 / 403 Verify that QUICKML_AUTH_TOKEN is set with valid Bearer or CATALYST-AUTH headers.
Missing predictions in CSV Ensure input CSV contains non-empty timestamps and weather features matching schema.
Slate UI route not loading API Ensure Slate proxies /api/* to the AppSail service URL.
Share this project:

Updates