SATIF AI
AI toolkit for transforming any input files into any output files.
⚠️ Disclaimer
EXPERIMENTAL STATUS: This package is in early development and not production-ready. The API may change significantly between versions.
BLOCKING I/O: Despite the async API, some operations may contain blocking I/O. This package should be used for testing and experimental purposes only.
Installation
pip install satif-ai
Overview
SATIF AI enables automated transformation of heterogeneous data sources (CSV, Excel, PDF, XML, etc.) into any desired output format in 2 steps:
- Standardization: Ingests heterogeneous source files (CSV, Excel, PDF, XML, etc.) and transforms them into SDIF, a structured intermediate format.
- Transformation: Applies business logic to the standardized data to generate the target output files, with transformation code generated by AI.
Key Features
- Any Format Support: Process virtually any input, even challenging unstructured content (PDFs, complex Excel sheets)
- AI-Powered Code Generation: Automatically generate transformation code from examples and natural language instructions
- Robust Schema Enforcement: Handle input data drift and schema inconsistencies through configurable validation
- SQL-Based Data Processing: Query and manipulate all data using SQL
- Decoupled Processing Stages: Standardize once, transform many times with different logic
Usage
Basic Workflow
import asyncio
from satif_ai import astandardize, atransform
async def main():
# Step 1: Standardize input files into SDIF
sdif_path = await astandardize(
datasource=["data.csv", "reference.xlsx"],
output_path="standardized.sdif",
overwrite=True
)
# Step 2: Transform SDIF into desired output using AI
await atransform(
sdif=sdif_path,
output_target_files="output.json",
instructions="Extract customer IDs and purchase totals, calculate the average purchase value per customer, and output as JSON with customer_id and avg_purchase_value fields.",
llm_model="o4-mini" # Choose AI model based on needs
)
if __name__ == "__main__":
asyncio.run(main())
Architecture
┌─────────────────┐ ┌───────────────────────┐ ┌─────────────────┐
│ Source Files │────▶│ Standardization Layer │────▶│ SDIF File │
│ CSV/Excel/PDF/ │ │ │ │ (SQLite-based) │
│ XML/JSON/etc. │ └───────────────────────┘ └────────┬────────┘
└─────────────────┘ │
│
┌─────────────────┐ ┌───────────────────────┐ │
│ Output Files │◀────│ Transformation Layer │◀─────────────┘
│ Any format │ │ (AI-generated code) │
└─────────────────┘ └───────────────────────┘
SDIF (Standardized Data Interoperable Format) is the intermediate SQLite-based format that:
- Stores structured tables alongside JSON objects and binary media
- Maintains rich metadata about data origins and relationships
- Provides direct SQL queryability for complex transformations
Documentation
For detailed documentation, examples, and advanced features, visit SATIF Documentation.
Contributing
Contributions are welcome! Whether it's bug reports, feature requests, or code contributions, please feel free to get involved.
Contribution Workflow
-
Fork the repository on GitHub.
-
Clone your fork locally:
git clone https://github.com/syncpulse-solutions/satif.git cd satif/libs/ai
-
Create a new branch for your feature or bug fix:
git checkout -b feature/your-feature-name
or
git checkout -b fix/your-bug-fix-name
-
Set up the development environment as described in the From Source (for Development) section:
make install # or poetry install
-
Make your changes. Ensure your code follows the project's style guidelines.
-
Format and lint your code:
make format make lint
-
Run type checks:
make typecheck -
Run tests to ensure your changes don't break existing functionality:
make test
To also generate a coverage report:
make coverage -
Commit your changes with a clear and descriptive commit message.
-
Push your changes to your fork on GitHub:
git push origin feature/your-feature-name
-
Submit a Pull Request (PR) to the
mainbranch of the originalsyncpulse-solutions/satifrepository.
License
This project is licensed under the MIT License.
Maintainer: Bryan Djafer (bryan.djafer@syncpulse.fr)
Metadata
Release files for satif-ai 0.2.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| satif_ai-0.2.12.tar.gz | 40.7 kB | With provenance | Details for satif_ai-0.2.12.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| satif_ai-0.2.12-py3-none-any.whl | Python 3 | none | any | Details for satif_ai-0.2.12-py3-none-any.whl |
Total release size: 86.5 kB
Release files / satif_ai-0.2.12.tar.gz
| Download URL | satif_ai-0.2.12.tar.gz |
|---|---|
| Size | 40.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f0cf100e150f55a9bc357dbefd424f6e84cfe8e4b19216558e013ed5f5c6ad08
|
|
BLAKE2b-256 checksum How to use checksums |
43002dd0950574208ce00551224fb6b53095bcac6937ee2095efa9aeae6cf771
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 22, 2025.
Transparency logRelease files / satif_ai-0.2.12-py3-none-any.whl
| Download URL | satif_ai-0.2.12-py3-none-any.whl |
|---|---|
| Size | 45.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a97c97e9709acb0a31f5ec9f2f30b533f438b6fb904b9bb1f1bc8f0f41a8d788
|
|
BLAKE2b-256 checksum How to use checksums |
ad07121193158fe9e2fe98dfa69e143bd67dfbab326e0bf86e0f193c797793a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 22, 2025.
Transparency logSecurity for satif-ai 0.2.12
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for satif_ai-0.2.12.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 22, 2025.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.