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.1.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.1-py3-none-any.whl (34.1 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: giva_databricks-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 1937c9654aabd6acab7b2f9e6189b22588e64719484ad80814a147d8e166113b
MD5 cb6b4936281bddc06c0888be6b17b201
BLAKE2b-256 4520db3ac939940a8d480e4a9f1c5f25f8b024ed67bb4b48eecb06ce430fef15

See more details on using hashes here.

Provenance

The following attestation bundles were made for giva_databricks-0.1.1.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.1-py3-none-any.whl.

File metadata

File hashes

Hashes for giva_databricks-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d88fbb27e71a70c6be385baa6ecf705e1dc52dfae466a84f4125955dbabda787
MD5 51b1851ceb47febc574f2f26b6860364
BLAKE2b-256 51f5043129a114921e87f917576af394b2b3b16da48cca96c4b04dbb6918f6f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for giva_databricks-0.1.1-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