--- title: Solar_Culient_Predictor app_file: enhanced_app.py sdk: gradio sdk_version: 4.26.0 --- # SOLAI Scoring Dashboard (Gradio) A lightweight UI to train a baseline logistic regression on your solar leads dataset and generate `probability_to_buy` predictions. Uses the same feature candidates and preprocessing approach as `scripts/batch_scoring.py`. - Default dataset: `examples/synthetic_v2` - Outputs are always written to `/Users/git/solai/scores` and are also downloadable from the UI. ## Features - Choose data source: - Use preset example data: `examples/synthetic_v2/leads_features.csv` and `examples/synthetic_v2/outcomes.csv` - Upload your own CSVs (features and outcomes) - Train + score with a single click - Evaluation metrics (test split): - ROC AUC, PR AUC, Brier score (gracefully handles degenerate label cases) - Preview: - `predictions.csv` (lead_id, probability_to_buy) - `leads_features_scored.csv` (features merged with probability_to_buy) - Download both files from the UI in addition to saving to disk (`/Users/git/solai/scores`) ## Requirements - Python 3.9+ recommended - macOS (as per environment), should also work on Linux/Windows Install dependencies (ideally in a virtual environment): ```bash python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate pip install -r dashboard_gradio/requirements.txt ``` ## Run the App ```bash python dashboard_gradio/app.py ``` Gradio will launch on a local URL (typically http://127.0.0.1:7860). Open it in your browser. ## Usage 1. Start the app. 2. Select a data source: - Default: “Use example synthetic_v2” - Or switch to “Upload CSVs” and provide: - Features CSV (must include `lead_id` and a subset of feature columns listed below) - Outcomes CSV (must include `lead_id` and `sold` columns) 3. Click “Train + Score”. 4. Review metrics and preview tables. 5. Download the generated files or find them on disk under `/Users/git/solai/scores`. ## Expected Columns - Features CSV must contain `lead_id` and some subset of these candidate features: - living_area_sqft - average_monthly_kwh - average_monthly_bill_usd - shading_factor - roof_suitability_score - seasonality_index - electric_panel_amperage - has_pool - is_remote_worker_household - tdsp - rate_structure - credit_score_range - household_income_bracket - preferred_financing_type - neighborhood_type - Outcomes CSV must contain: - `lead_id` - `sold` (0/1) ## Outputs Saved to `/Users/git/solai/scores` with a timestamp suffix: - `predictions_YYYYMMDD_HHMMSS.csv` - Columns: `lead_id`, `probability_to_buy` - `leads_features_scored_YYYYMMDD_HHMMSS.csv` - Original features merged with `probability_to_buy` Both files are also offered as downloads directly in the UI. ## Notes and Troubleshooting - If the outcomes data has only a single class (all sold=0 or all sold=1), ROC AUC and PR AUC are undefined; the app shows “N/A” for those metrics but still computes Brier score and produces predictions. - If you see “No candidate features found”, ensure your features CSV contains at least one of the listed feature names. - If port 7860 is in use, Gradio will choose another port automatically, displayed in the terminal. - For larger datasets, training time may increase but should remain quick for typical CSV sizes. ## Development - Core logic is in `dashboard_gradio/app.py`. - The pipeline mirrors `scripts/batch_scoring.py`: ColumnTransformer with passthrough numeric features and OneHotEncoder for categoricals, then LogisticRegression. - Extend easily with additional visualizations (e.g., calibration plots), feature importance, or a data dictionary viewer.