NovaAI is a multimodal Earth Observation (EO) analysis system that combines RemoteCLIP-based satellite image understanding with LLM reasoning to turn satellite imagery into structured scene intelligence.
The system is designed around a staged analysis pipeline:
Satellite Image β RemoteCLIP Vision β EO Interpretation β Prompt Construction β LLM Analysis β Professional Report
It provides land-cover classification, confidence-aware interpretation, AI-generated analysis, risk assessment, provenance metadata, and an HTML-based professional report.
- π°οΈ Satellite image analysis using RemoteCLIP ViT-L/14
- π Zero-shot Earth Observation classification using candidate land-cover labels
- π§ EO interpretation layer that converts vision scores into structured scene context
- π€ LLM-powered reasoning through OpenRouter's OpenAI-compatible API
- π Structured analysis responses with dominant and secondary land-cover classes
- π Professional AI reports generated through a configurable report model
- π Unified HTML report rendering with embedded imagery and analysis
- β‘ GPU acceleration when CUDA is available, with CPU fallback
- β»οΈ RemoteCLIP singleton loading to avoid reloading the large model for every request
- π‘οΈ Fault-tolerant pipeline β LLM failures can return a
partial_successresponse while preserving vision results - π Pipeline provenance including vision model, LLM model, report model, processing time, timestamp, and API version
- πΌοΈ Frontend drag-and-drop image upload with JPG/JPEG/PNG/WEBP validation and a 20 MB client-side limit
ββββββββββββββββββββββββββββββββ
β Satellite Image β
β PNG / JPG / JPEG / WEBP β
ββββββββββββββββ¬ββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββ
β Image Validation & Loading β
ββββββββββββββββ¬ββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββ
β RemoteCLIP ViT-L/14 β
β Vision Encoder β
β β
β β’ Image embeddings β
β β’ Cosine similarities β
β β’ Zero-shot scores β
ββββββββββββββββ¬ββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββ
β EO Interpreter β
β β
β β’ Dominant land cover β
β β’ Secondary land cover β
β β’ Relative confidence β
β β’ Scene summary β
ββββββββββββββββ¬ββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββ
β Prompt Builder β
β Structured EO Context β
ββββββββββββββββ¬ββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββ
β OpenRouter LLM β
β Configurable model β
ββββββββββββββββ¬ββββββββββββββββ
β
ββββββββββββββββββββββββ
βΌ βΌ
ββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ
β Analyst Narrative β β Professional Report β
β GPT/LLM analysis β β Configurable report LLM β
ββββββββββββββββ¬ββββββββββββ ββββββββββββββββ¬ββββββββββββ
β β
ββββββββββββββββ¬βββββββββββββββ
βΌ
ββββββββββββββββββββββββββββ
β Unified AnalysisResponse β
β + HTML Report β
ββββββββββββββββββββββββββββ
The backend validates the uploaded image before processing it and converts it into the expected image representation.
NovaAI loads the RemoteCLIP ViT-L/14 checkpoint and computes:
- Image embeddings
- Embedding statistics
- Zero-shot cosine similarity
- Softmax-based confidence scores
- Inference and total processing time
The RemoteCLIP checkpoint is downloaded automatically when it is missing or invalid.
The raw zero-shot outputs are passed to a dedicated EO interpreter that derives structured scene information such as:
- Dominant land-cover class
- Secondary land-cover class
- Relative confidence
- Scene summary
The structured EO context is transformed into a prompt and sent to a configurable LLM through OpenRouter.
The LLM layer is intentionally separated from the vision pipeline so the vision output remains useful even when the external LLM is unavailable.
When the LLM stage succeeds, NovaAI can generate a professional report containing structured sections such as:
- Executive dashboard
- Environmental assessment
- Key findings
- Recommendations
The report output is merged with deterministic fallbacks to preserve structural integrity when the report model is unavailable or returns invalid JSON.
The backend renders the final report into HTML, including the analyzed image, classification information, risk level, findings, recommendations, and supporting metadata.
Nova-AI/
β
βββ backend/
β βββ api/
β β βββ analyze.py
β β βββ chat.py
β β βββ insights.py
β β βββ interpreter.py
β β βββ report.py
β β βββ vision.py
β β
β βββ config/
β β βββ settings.py
β β
β βββ interpreter/
β β βββ eo_interpreter.py
β β βββ eo_rules.py
β β βββ eo_schema.py
β β
β βββ llm/
β β βββ base.py
β β βββ gpt_service.py
β β βββ openrouter.py
β β
β βββ prompts/
β β βββ prompt_builder.py
β β βββ templates.py
β β
β βββ report/
β β βββ claude_prompt_builder.py
β β βββ html_renderer.py
β β βββ pdf_generator.py
β β βββ report_service.py
β β βββ schemas.py
β β βββ templates.py
β β
β βββ schemas/
β β βββ analysis.py
β β βββ prompt.py
β β
β βββ services/
β β βββ analysis_service.py
β β βββ question_service.py
β β
β βββ utils/
β β βββ logger.py
β β
β βββ vision/
β β βββ image_loader.py
β β βββ inference.py
β β βββ labels.py
β β βββ preprocessing.py
β β βββ remoteclip.py
β β
β βββ main.py
β
βββ frontend/
β βββ src/
β β βββ App.jsx
β β βββ ...
β βββ package.json
β βββ ...
β
βββ models/
βββ data/
βββ docs/
βββ .env.example
βββ .gitignore
βββ README.md
- Python 3.9+
- FastAPI
- Uvicorn
- PyTorch
- OpenCLIP
- RemoteCLIP
- Pillow
- Pydantic Settings
- OpenAI-compatible async client
- Tenacity
- OpenRouter
- React 18
- Vite
- JavaScript / JSX
- CSS
- RemoteCLIP ViT-L/14
- Zero-shot image-text similarity
- Cosine similarity
- Confidence scoring
- LLM-based EO reasoning
- Structured report generation
Create a .env file in the project root:
OPENROUTER_API_KEY=your_openrouter_api_key
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
MODEL_NAME=your_primary_model
REPORT_MODEL=your_report_model
LOG_LEVEL=INFOMODEL_NAME must be explicitly configured. REPORT_MODEL controls the model used for professional report generation.
Do not commit .env or API keys to GitHub.
git clone https://github.com/Nirmal0804/Nova-AI.git
cd Nova-AI
python -m venv venvvenv\ScriptsοΏ½ctivatesource venv/bin/activateInstall backend dependencies:
pip install -r backend/requirements.txtConfigure environment variables:
cp .env.example .envOn Windows, copy .env.example to .env manually if cp is unavailable.
Start the API:
python -m uvicorn backend.main:app --reload --port 8000Open a second terminal:
cd frontend
npm install
npm run devVite will start the development server and provide the local frontend URL.
NovaAI uses the RemoteCLIP ViT-L/14 checkpoint.
The application manages the checkpoint automatically:
- Checks whether the checkpoint exists.
- Validates the expected file size.
- Downloads the checkpoint when required.
- Supports resuming an interrupted download.
- Loads the model once and reuses it through a singleton service.
- Uses CUDA when available and falls back to CPU otherwise.
The checkpoint is large, so the first model initialization can take significantly longer than subsequent inference requests.
The backend exposes API modules for:
- Image analysis
- Chat / LLM interaction
- Insights
- EO interpretation
- Vision processing
- Professional report generation
The primary analysis flow is exposed through the analysis API and returns a structured AnalysisResponse.
A successful response can include:
status
dominant_land_cover
secondary_land_cover
confidence
summary
gpt_analysis
professional_report
warning
insight
classes
flags
title
risk_level
metadata
NovaAI keeps model provenance in the final analysis response.
Example metadata fields:
Vision Model
LLM Reasoning Model
Report Model
Processing Time
Timestamp (UTC)
API Version
This makes the pipeline easier to inspect and helps distinguish model output from deterministic EO interpretation.
NovaAI does not make the external LLM a single point of failure.
If the LLM request fails:
RemoteCLIP
β
EO Interpretation
β
Vision Results
β
partial_success
The system can still return the available vision classification and EO summary.
Professional reports also use fallback structures when the report model is unavailable or produces invalid JSON.
- Store API keys only in environment variables.
- Never commit
.env. - Do not expose OpenRouter credentials in frontend code.
- API requests should be protected appropriately before production deployment.
- The current frontend is designed primarily as a local/development interface.
NovaAI is a research/prototype system rather than a production-grade satellite intelligence platform.
Important limitations include:
- RemoteCLIP zero-shot classification depends on the candidate label set.
- Confidence scores should not be interpreted as calibrated geospatial probabilities.
- LLM-generated explanations may contain hallucinations and should be independently verified.
- Satellite scene understanding is limited by image quality, resolution, sensor characteristics, and the available semantic labels.
- The RemoteCLIP ViT-L/14 checkpoint requires substantial storage and compute resources.
- External LLM functionality depends on OpenRouter availability, API limits, and configured models.
- Production deployments require stronger authentication, rate limiting, observability, and data governance.
Potential extensions include:
- Multi-sensor and multispectral analysis
- AOI-aware geospatial processing
- Temporal satellite change detection
- Vegetation and environmental indices
- Geospatial database integration
- Satellite metadata ingestion
- Map-based visualization
- More specialized EO foundation models
- Retrieval-augmented geospatial knowledge
- Automated PDF report delivery
- Batch satellite scene analysis
- Production-grade authentication and deployment
NovaAI aims to bridge the gap between raw Earth Observation imagery and human-readable geospatial intelligence by combining specialized vision models with language-model reasoning.
Instead of returning only a classification label, the system attempts to provide an interpretable analysis pipeline with:
Vision β Interpretation β Reasoning β Reporting β Provenance
Add the project's chosen license before distributing NovaAI publicly.
Nirmal P
GitHub: @Nirmal0804