AI Market Research Agent for E-Commerce Product Discovery in Singapore
Scannova is an AI-powered market research agent that helps Singapore e-commerce sellers discover trending products, analyze pricing, and identify import opportunities. It searches across trusted regional platforms (Lazada, Shopee, Amazon SG, Qoo10) using live Google Search grounding and returns ranked, exportable results.
- AI-Powered Search — Gemini 2.0 Flash with Google Search grounding for live product data
- Smart Fallback — Automatic OpenAI GPT-4o-mini fallback when Gemini is unavailable
- Trusted Sites — Lazada, Shopee, Amazon SG, Qoo10, and more
- Price Filtering — Set min/max price ranges in SGD
- Product Ranking — Scored by popularity (sales, reviews, demand signals)
- CSV Export — Download results for downstream analysis
- Premium UI — Animated, responsive design with live status indicators
| Layer | Technology |
|---|---|
| Frontend | React 19 + Vite 8 |
| Styling | Vanilla CSS + Inter font |
| Backend | Express 5 (Node.js) |
| AI (Primary) | Google Gemini 2.0 Flash + Search |
| AI (Fallback) | OpenAI GPT-4o-mini |
| Deployment | GitHub Pages (frontend) + GitHub Actions |
┌──────────────┐ ┌──────────────────┐ ┌─────────────────────┐
│ React UI │────▶│ Express API │────▶│ Gemini 2.0 (Primary)│
│ (Vite SPA) │ │ /api/research │ │ + Google Search │
└──────────────┘ └────────┬─────────┘ └─────────────────────┘
│ │
│ (fallback on failure) │
▼ ▼
┌─────────────────────┐
│ OpenAI GPT-4o-mini │
└─────────────────────┘
Note: The GitHub Pages deployment hosts the React frontend only. To use the AI research features, run the Express backend locally (or deploy it to a Node host such as Render, Railway, or Fly.io) and point the frontend at it.
scannova/
├── .github/workflows/deploy.yml # GitHub Pages CI/CD
├── server/
│ ├── index.js # Express API server
│ └── services/
│ ├── gemini.js # Gemini API integration
│ ├── openai.js # OpenAI fallback
│ └── researcher.js # Orchestrator
├── src/
│ ├── App.jsx # Main app component
│ ├── index.css # Design system
│ ├── main.jsx # React entry
│ └── components/
│ ├── Header.jsx
│ ├── SearchForm.jsx
│ ├── ProductCard.jsx
│ ├── ResultsPanel.jsx
│ └── LoadingState.jsx
├── .env.example # API key template
├── package.json
└── vite.config.js
- Node.js 20+
- A Google Gemini API key
- (Optional) An OpenAI API key for fallback
git clone https://github.com/alfredang/scannova.git
cd scannova
npm installcp .env.example .envEdit .env:
GEMINI_API_KEY=your_gemini_key_here
OPENAI_API_KEY=your_openai_key_here
Terminal 1 — Backend API:
npm run serverTerminal 2 — Frontend:
npm run devOpen http://localhost:5173.
This repo ships with a GitHub Actions workflow at .github/workflows/deploy.yml that builds the Vite SPA and publishes it to GitHub Pages on every push to main.
Live site: https://alfredang.github.io/scannova/
The Express server in server/ is a standalone Node.js app. Deploy it to any Node host (Render, Railway, Fly.io, a VM, etc.) and update the frontend to point at its URL.
- Fork the repo
- Create a feature branch (
git checkout -b feat/your-feature) - Commit your changes
- Open a Pull Request
Issues and feature requests are welcome on the issues page.
Tertiary Infotech Academy Pte. Ltd.
- Google Gemini for the primary research model and Search grounding
- OpenAI for the fallback model
- Vite and React for the frontend toolchain
If you find this useful, please consider starring the repo to support the project.
