Week-by-week path from evaluation to production UniSchema deployment.
| Day | Task | Success signal |
|---|
| 1 | docker compose up --build | Health check returns 200 |
| 1 | Open mapping canvas at :3000 | Vendor dropdown shows 8 vendors |
| 2 | npm run demo:multi | Multiple ConstituentEvent JSON files in data/egress/ |
| 2 | npm run downstream-demo | Egress report + PhilanthroPy or CRM join output |
| 3 | Review limitations-and-roadmap.md | Team accepts schema + tier model |
| 4 | Point one vendor test webhook (GiveCampus or Cvent) | Ingestion status completed |
| 5 | Share egress_report.ipynb with stakeholders | Leadership sees normalized data |
Optional ML:
pip install -r examples/downstream/requirements-philanthropy.txt
python3 examples/downstream/philanthropy_crm_pipeline.py data/egress samples/crm-golden-record.csv
| Day | Task | Owner |
|---|
| 1–2 | Set all 7 webhook HMAC secrets in .env | Operator |
| 2 | Configure MAPPING_SYNC_TOKEN + DRIFT_AGENT_TOKEN | Operator |
| 3 | Verify Tier 3 vendors (Blackbaud, NPSP, Slate, Ellucian, CiviCRM) with real payloads | Admin + Developer |
| 4 | Canvas mapping for org-specific normalizedMetadata fields | Admin |
| 5 | Document vendor webhook URLs for vendor portals | Operator |
| Day | Task | Success signal |
|---|
| 1 | Terraform S3 bucket (deploy/terraform/s3-egress/) | Bucket created |
| 2 | Set EGRESS_TARGET=s3 + AWS credentials | S3 NDJSON batch appears |
| 3 | Run downstream-pipeline.md Snowflake/dbt path | mart_constituent_rfm_features runs |
| 4 | Optional: wire AIRFLOW_WEBHOOK_URL | DAG triggered on batch |
| 5 | Load test: ./scripts/load-benchmark.sh | Throughput within rate limits |
| Day | Task | Owner |
|---|
| 1 | Complete operator-guide.md production checklist | Operator |
| 2 | Enable OIDC or oauth2-proxy for admin UI | Operator |
| 3 | Review mapping audit log after canvas changes | Compliance |
| 4 | Write up your pilot results (events normalized, CRM join rate, scores) | Project lead |
| 5 | Go/no-go for production donor data | Leadership |