NOVA — privacy-safe synthetic financial data for West African microfinance. A CTGAN built from scratch in PyTorch, 4-metric validation, FastAPI + Next.js.
# NOVA
**A universal synthetic-data engine for finance - with two modes - served through a FastAPI + Next.js web app.**
- **Create** *(from nothing)* - define columns, distributions and **domain rules**, and NOVA generates brand-new, realistic data **with no source dataset**. Ships with presets for seven financial domains (banking, payments/fraud, insurance, remittances, macro, wealth, corporate) - or define your own. This is the answer to data scarcity in understudied regions: anyone with domain knowledge can make the data they need.
- **Copy** *(from real data)* - upload a CSV and a **Conditional Tabular GAN, built from scratch in PyTorch**, learns its joint distribution and generates statistically identical, privacy-safe rows, scored on four independent validation metrics.
> This is a research-portfolio project. Every component - the ground-truth generator, the CTGAN, the preprocessing, the validation suite, and the criteria engine - is implemented from first principles. No `sdv`/`ctgan` library is used for the model.
---
## Table of contents
1. What's inside
2. Architecture
3. Quickstart
4. The dataset
5. The CTGAN
6. Validation
7. API
8. Web app
9. Deployment
10. Design decisions & honesty notes
11. License
---
## What's inside
```
nova/
├── backend/
│ ├── synthfin/
│ │ ├── data/generator.py # structural-causal ground-truth generator
│ │ ├── preprocessing.py # mode-specific normalization + one-hot (+inverse)
│ │ ├── ctgan.py # Generator, Discriminator, DataSampler, CTGAN
│ │ ├── validation.py # KS/Chi2, correlation L1, TSTR, privacy MIA
│ │ └── schema.py # automatic schema detection for any CSV
│ ├── app/ # FastAPI service (main.py + service.py)
│ ├── scripts/ # generate_dataset / check_preprocessing / train / validate
│ ├── data/west_african_loans.csv
│ └── models/ctgan_final.pth
├── frontend/ # Next.js 16 + TypeScript + Tailwind
├─ …