A semantic analysis tool that compares Wikipedia articles across languages section-by-section and paragraph-by-paragraph to identify content gaps, missing information, and added content. Features word-level diff, revision risk flagging, and language-lag detection.
# Start both backend and frontend
./start.sh all
# Start with frontend in development mode
./start.sh all --dev./start.sh docker # Foreground
./start.sh docker-up # Detached
./start.sh docker-down # Stopcd symmetry-unified-backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --host 127.0.0.1 --port 8000cd desktop-electron-frontend
yarn install
yarn start- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- API Documentation (Swagger): http://localhost:8000/docs
- Central docs hub:
/docs/README.md - Backend package docs:
symmetry-unified-backend/README.md - Frontend package docs:
desktop-electron-frontend/README.md
- Frontend: Electron 26 + React 18 + TypeScript + Vite + Tailwind CSS + shadcn/ui
- Backend: Python + FastAPI + sentence-transformers + spaCy + MarianMT
- Comparison Engine: LaBSE sentence embeddings (cosine similarity) + Levenshtein distance for disambiguation
POST /symmetry/v1/articles/compare-sections— Compare two Wikipedia articles section-by-section with paragraph-level diffs
GET /symmetry/v1/wiki/structured-article— Parse article into sections/citations/referencesGET /symmetry/v1/wiki/paragraph-diff— Word-level semantic diff between two article sections; returns aligned sentence pairs with per-tokenequal / insert / delete / replacetokensGET /symmetry/v1/wiki/revision-history— Revision history with optional risk flags (include_flags=true)GET /symmetry/v1/wiki/revision-diff— Diff between two revisions with section-level change breakdown
POST /symmetry/v1/articles/compare— Plain-text semantic comparison
GET /models/comparison— List comparison models
# Backend unit tests (CI-equivalent)
cd symmetry-unified-backend
source venv/bin/activate
python -m pytest -m "not slow and not external" --tb=short
# Frontend E2E tests (requires backend + frontend running)
cd desktop-electron-frontend
npm run test:e2e # Playwright headless
npm run test:e2e:report # Open HTML reportThe project uses GitHub Actions for continuous integration and automated releases.
| Workflow | Trigger | What it does |
|---|---|---|
CI (.github/workflows/ci.yml) |
Push/PR to main or develop |
Runs backend tests, builds frontend web bundle, builds & smoke-tests frontend Docker image, runs docker-compose integration |
Release (.github/workflows/release.yml) |
Push to main |
Runs full CI → bumps version (semver) → creates git tag → creates GitHub release → publishes Docker images to GHCR |
Released images are available from GHCR:
# Pull specific version
docker pull ghcr.io/grey-box/symmetry-project/backend:1.1.0
docker pull ghcr.io/grey-box/symmetry-project/frontend:1.1.0
# Pull latest
docker pull ghcr.io/grey-box/symmetry-project/backend:latest
docker pull ghcr.io/grey-box/symmetry-project/frontend:latestNote: Frontend and backend are versioned independently. See CHANGELOG.md for the version history of each component.
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Install dependencies (see Quick Start)
- Make changes and run tests
- Use Conventional Commits for your commit messages
- Submit a pull request to
develop - After review, PRs are merged to
develop, then promoted tomainfor release
- Project Website: Project-Symmetry
- GitHub Issues: Report Issues
- Design Resources: Figma UX
This project is licensed under the appropriate license. See the LICENSE file for details.
- Grey Box: Project development and maintenance
- Wikipedia: Source content and API access
- Open Source Community: Libraries and tools
Last Updated: March 2026 Version: 2.0.0 Maintainers: grey-box

