{"ref":"artifact:sap-samples-codejam-cap-llm","page":"/artifacts/sap-samples-codejam-cap-llm","json":"/artifacts/sap-samples-codejam-cap-llm.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"sap-samples-codejam-cap-llm","name":"SAP-samples/codejam-cap-llm","artifact_type":"sample","ecosystem":"cap","use_as":"starting-point","domain":"ai-and-agents","origin_ring":"sap-official","description":{"one_line":"A CodeJam that builds a CAP-based job posting service exposing SAP AI Core's generative AI capabilities, including vector embeddings, through an OData API.","short":"CodeJam on a CAP job posting service using SAP AI Core over OData","what_it_solves":"Exposing generative AI capabilities through a business API is usually explained in the abstract, and this CodeJam walks it through ten exercises instead: connecting to SAP AI Core and SAP AI Launchpad, exploring the [SAP HANA Cloud](artifact:btp-hana-cloud) Vector Engine, defining a database schema, creating vector embeddings from an embedding model, and then defining and implementing a Job Posting Service on top. It covers data masking, anonymisation and pseudonymisation as a dedicated exercise before the service is built, and an optional exercise on prompt engineering with AI Launchpad after. It is written to be run instructor-led during a live CodeJam session, one exercise at a time, and support is available only for the duration of the scheduled event."},"links":{"repo":"https://github.com/SAP-samples/codejam-cap-llm"},"type_properties":{"form":{"value":"workshop","sources":[{"url":"https://github.com/SAP-samples/codejam-cap-llm","title":"SAP-samples/codejam-cap-llm — README","checked":"2026-10-18","quote":"This repository contains the material for the \"Expose SAP AI Core capabilities with the SAP Cloud Application Programming Model\" CodeJam."}]}},"identity":{"license":"Apache-2.0"},"maintainers":["actor:sap-samples"],"source_available":true,"demonstrates":["capability:llm-integration"],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-13"},"contributors":["actor:ajaysoreng","actor:ajinkyapatil8190","actor:ajmaradiaga","actor:kevinriedelsheimer","actor:neelamegams","actor:noravth","actor:sygyzmundovych"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"10 contributors, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-09, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"no release dates"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"fair","evidence":"none found in the tree"},{"label":"Docs","tier":"good","evidence":"README 7 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":33,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","npm":"not published under this name","stars":33,"forks":14,"open_issues":3,"archived":false,"pushed_at":"2026-09-18","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","created_at":"2024-07-19T08:06:55Z","open_prs":1,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":7555,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2024-07-19","last_commit":"2026-09-18","commits":381,"contributors":10,"readme_path":"README.md","readme_sha":"d9b4da33d9fc907af56aab962a956422d48531d7","repo_read":"2026-10-26"},"edges":{"maintainers":[{"ref":"actor:sap-samples","name":"SAP Samples","json":"/actors/sap-samples.json"}],"contributors":[{"ref":"actor:ajaysoreng","name":"Ajay Soreng","json":"/actors/ajaysoreng.json"},{"ref":"actor:ajinkyapatil8190","name":"Ajinkya Patil","json":"/actors/ajinkyapatil8190.json"},{"ref":"actor:ajmaradiaga","name":"Antonio Maradiaga","json":"/actors/ajmaradiaga.json"},{"ref":"actor:kevinriedelsheimer","name":"Kevin Riedelsheimer","json":"/actors/kevinriedelsheimer.json"},{"ref":"actor:noravth","name":"Nora von Thenen","json":"/actors/noravth.json"},{"ref":"actor:neelamegams","name":"Shrinivasan Neelamegam","json":"/actors/neelamegams.json"},{"ref":"actor:sygyzmundovych","name":"Vitaliy Rudnytskiy","json":"/actors/sygyzmundovych.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}