Skip to main content

One-line installer for the GIVA Databricks demo (AI jewelry commerce: data + Vector Search + Genie + AI/BI dashboard + Lakebase + FastAPI app + paused background jobs).

Project description

💎 GIVA — one-line Databricks demo installer

giva packages the entire GIVA AI jewelry-commerce demo into a single pip-installable package, à la dbdemos. One call provisions the whole stack into your workspace from pre-baked real data.

%pip install giva-databricks
dbutils.library.restartPython()

import giva
giva.install('giva', catalog='my_catalog')

Locally with a CLI profile:

pip install giva-databricks
python -c "import giva; giva.install('giva', profile='AnujLathi', catalog='anuj_vm_workspace_catalog')"

What gets installed

# Asset Detail
1 UC data layer schema + volume, enriched_jewelry_products (~236 LLM-enriched products) + jewelry_embeddings + ~236 product images
2 Vector Search giva-vs endpoint + jewelry_embeddings_index (DELTA_SYNC, 1024-dim) for semantic & image search
3 Genie Space natural-language analytics over the product catalog
4 AI/BI dashboard catalog & sales analytics, published
5 Lakebase (Postgres) giva-orders instance + giva db: orders, users, nudges, live metal prices, dynamic product prices — seeded with data
6 App React + FastAPI storefront + admin analytics (Databricks App)
7 Background jobs Metals Refresh + Nudge Emails — created PAUSED (stopped, not triggered)

⏸ The two pipelines are installed PAUSED

Per design, the Metals Refresh Pipeline and Nudge Emails Pipeline jobs are created with their schedule pause_status = PAUSED. They will not run on a trigger. The demo works out of the box because metal prices and product prices are seeded into Lakebase. When you want a live refresh, either:

  • trigger them manually from the admin app (Run now), or
  • unpause the schedule in the Jobs UI.

The two job notebooks read Service-Principal credentials and (for emails) Gmail OAuth from a Databricks secret scope giva. These secrets are not created by the installer — set them before unpausing if you want the jobs to run.

Options

giva.install(
    'giva',
    catalog='my_catalog',          # required on non-Free-Edition workspaces
    schema='giva',          # default
    warehouse_id=None,             # default: first running/available
    install_app=True,
    install_lakebase=True,         # provision Lakebase + seed
    install_jobs=True,             # create the two PAUSED jobs
    install_vector_search=True,
    profile='AnujLathi',           # only when running locally
)

Rebuilding the package data (maintainers)

The packaged data/, dashboards/ and Lakebase schema are exported from the live reference build. To refresh them:

python scripts/export_live_assets.py --profile AnujLathi \
    --catalog anuj_vm_workspace_catalog --schema caratlane_jewelry
python -m build           # produces dist/giva-*.whl

Installing the package

Until it's on PyPI, install the wheel straight from a GitHub Release:

pip install https://github.com/anuj1303/giva-demo/releases/download/v0.1.0/giva-0.1.0-py3-none-any.whl

or build-and-install from source:

pip install "git+https://github.com/anuj1303/giva-demo.git"

Publishing to PyPI (maintainers)

The Publish giva-databricks to PyPI GitHub Action publishes via trusted publishing (OIDC — no API tokens). One-time setup, then a one-click publish:

  1. On https://pypi.org → your account → PublishingAdd a pending publisher:
    • PyPI Project Name: giva
    • Owner: anuj1303
    • Repository name: giva-demo
    • Workflow name: publish.yml
    • Environment: (leave blank)
  2. In the repo: Actions → Publish giva-databricks to PyPI → Run workflow.

Note: the wheel is ~88 MB (the 11.5M-row nudge_emails seed is most of it). That's under PyPI's 100 MB per-file limit but large — the GitHub Release wheel above is the recommended distribution for most users.

Reference build

  • Workspace: AWS FE VM (fe-vm-anuj-vm-workspace)
  • Source catalog/schema: anuj_vm_workspace_catalog.caratlane_jewelry
  • App: tanishq-jewelry-demo (UI name GIVA)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

giva_databricks-0.1.0.tar.gz (34.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

giva_databricks-0.1.0-py3-none-any.whl (34.1 MB view details)

Uploaded Python 3

File details

Details for the file giva_databricks-0.1.0.tar.gz.

File metadata

  • Download URL: giva_databricks-0.1.0.tar.gz
  • Upload date:
  • Size: 34.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for giva_databricks-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bd247cf485e5b5a43080456cf4c5d9056ac546a3bc6368e33cc0131f39743494
MD5 80e044672028a13b2d68ecd9a522e9f4
BLAKE2b-256 78343306aff115300eae6f8168f565ca36edaaa8ef4e83df268ffbeda6c4db6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for giva_databricks-0.1.0.tar.gz:

Publisher: publish.yml on anuj1303/giva-databricks

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file giva_databricks-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for giva_databricks-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aab646bfb685a916823c23baad7de5f51a463c5c30efc112138b5af4abf363f6
MD5 cf4b2783ddecba0bd90f245a4b11a26f
BLAKE2b-256 de5720153f8381c5116efe454039e3e789ba9049cfa457788411935f2ee48414

See more details on using hashes here.

Provenance

The following attestation bundles were made for giva_databricks-0.1.0-py3-none-any.whl:

Publisher: publish.yml on anuj1303/giva-databricks

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page