Skip to content

Repository files navigation

SynthOps

Synthetic Operational Data Generator for Analytics, AI Prototyping and Decision Intelligence

SynthOps is an open-source synthetic data generation framework designed to create realistic, structured operational datasets across different industries.

The project helps analysts, analytics engineers, BI developers, data scientists, educators and product builders generate safe fictional datasets for dashboarding, data modelling, AI prototyping and decision-intelligence use cases.


Project Status

SynthOps is currently in early development.

Version 1 starts with an Adult Social Care domain module and will later expand into other operational domains such as finance operations, construction operations, SaaS metrics and workforce analytics.


Why This Project Exists

Realistic operational datasets are often difficult to access because they may contain sensitive, private or commercially confidential information.

This creates a barrier for people who want to practise analytics engineering, build dashboards, test AI prototypes, or demonstrate decision-support systems using realistic data.

SynthOps addresses this by generating fictional but structured datasets that reflect plausible operational patterns without using real personal or confidential data.


Current Domain Module

Adult Social Care

The first module generates synthetic adult social care operations data.

Current table:

  • care_homes

Planned tables:

  • residents
  • resident_care_needs_history
  • staff
  • shifts
  • incidents
  • observations
  • handover_notes

Current Features

  • Modular Python package structure
  • Reusable core ID generation utilities
  • Reusable date utilities
  • Scenario-driven adult social care home generation
  • Configurable ID prefixes and widths
  • Configurable care home type
  • Configurable turnover profile
  • Type-influenced occupancy behaviour
  • Synthetic sample CSV output
  • Time-aware adult social care resident lifecycle generation
  • Configurable dataset start and end dates for resident lifecycle data
  • Active, discharged and deceased resident records
  • Resident records linked to generated care homes
  • Automated tests with pytest

Example Usage

from synthops.domains.adult_social_care.care_homes import generate_care_homes
from synthops.domains.adult_social_care.residents import generate_residents

care_homes = generate_care_homes(
    number_of_homes=10,
    id_prefix="HM",
    id_width=3,
    seed=42,
)

residents = generate_residents(
    care_homes=care_homes,
    dataset_start_date="2020-01-01",
    dataset_end_date="2024-12-31",
    id_prefix="RES",
    id_width=5,
    seed=42,
)

print(care_homes.head())
print(residents.head())

Example Output

The current generator can create synthetic care home records with fields such as:

  • care_home_id
  • care_home_name
  • region
  • local_authority
  • care_home_type
  • turnover_profile
  • bed_capacity
  • occupancy_rate
  • current_residents
  • cqc_rating
  • opened_date

Project Structure

synthops/
├── data/
│   └── sample/
├── docs/
├── examples/
├── notebooks/
├── src/
│   └── synthops/
│       ├── core/
│       └── domains/
├── tests/
├── README.md
├── requirements.txt
└── pyproject.toml

Installation for Local Development

Create and activate a virtual environment:

python -m venv .venv
.\.venv\Scripts\Activate.ps1

Install the project in editable mode:

pip install -e ".[dev]"

Run tests:

pytest

Generate Sample Data

Run the example script:

python examples/generate_adult_social_care_sample.py

Current Adult Social Care sample outputs:

  • data/sample/adult_social_care/care_homes.csv
  • data/sample/adult_social_care/residents.csv

The residents output includes:

  • resident_id
  • care_home_id
  • date_of_birth
  • gender
  • admission_date
  • exit_date
  • exit_reason
  • status_at_dataset_end

---

## Responsible Use

SynthOps generates fictional data for learning, analytics development, dashboarding and prototyping.

The generated data must not be used for clinical decision-making, safeguarding decisions, regulatory reporting, financial decisions, employment decisions, or real-world assessment of individuals or organisations.

The assumptions used in this project are synthetic modelling choices designed to create plausible variation for analytics and prototyping. They should not be interpreted as real-world benchmarks.

---

## Roadmap

Planned development areas include:

- Resident lifecycle generation
- Care needs history generation
- Staff and shift generation
- Incident and observation generation
- Power BI demo dashboard
- Finance operations domain module
- Construction operations domain module
- Documentation site
- Optional Streamlit interface

---

## Portfolio Purpose

This project demonstrates the design of a reusable synthetic data product with modular architecture, responsible data assumptions, test coverage, documentation and analytics-ready output.

It supports professional positioning as an Analytics Engineer / Data Scientist focused on building trusted data products that transform fragmented operational data into reliable business decisions.

About

SynthOps Open-source synthetic operational data generator for analytics, BI, AI prototyping and decision intelligence.

Topics

Resources

Code of conduct

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages