{"ref":"content:building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana","page":"/content/building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana","json":"/content/building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana","title":"Building an SAP BTP Agent Architecture from Scratch: Python + CAP + HANA","url":"https://community.sap.com/t5/technology-blog-posts-by-members/building-an-sap-btp-agent-architecture-from-scratch-python-cap-hana/ba-p/14450587","content_type":"blog","published_on":"source:sap-community","explains":[{"ref":"capability:search","applies_to":{"ecosystems":["cap"]}},"artifact:btp-hana-cloud","artifact:sap-cds-dk"],"summary":"A first-person build log of a Flask orchestrator on Cloud Foundry that reduces a question to keywords, searches a Node.js service's Documents entity, and passes what it finds to Claude for a grounded answer. Getting there means learning that HANA's fuzzy `.search()` matches one word but not a full sentence, fixed by splitting the query into terms and merging the per-term hits, and that provisioning [SAP HANA Cloud](artifact:btp-hana-cloud) hits a database-level free-tier quota rather than an HDI-container one, with a stopped instance needing to be resumed first. It also covers [@sap/cds-dk](artifact:sap-cds-dk) needing to sit in `dependencies` rather than `devDependencies`, since Cloud Foundry's buildpack skips the latter, before `cds deploy --to hana` can run as part of the push.","short":"Flask orchestrator with CAP and HANA answering via Claude","author":"neilaspin","published":"2026-07-28","provenance":{"discovered_via":[{"source":"source:sap-community","channel":"agentic-ai-tag"}],"first_seen":"2026-09-23"},"drafted_with_ai":true,"history":[{"date":"2026-10-17","field":"explains","from":null,"to":"applies_to on capability:search","reason":"Door scope derived from the artifacts this piece also explains, so a door page lists it only where it holds (docs/concepts/content-on-doors.md)."}]},"readings":{"liveness":[{"label":"Checked against the source","tier":"unknown","evidence":"nobody has checked it"},{"label":"Source reachable","tier":"unknown","evidence":"not crawled"},{"label":"Age","tier":"good","evidence":"published 3 months ago"}],"compatibility":[{"label":"Version","tier":"unknown","evidence":"no version declared"},{"label":"Moved since?","tier":"good","evidence":"no recorded change after 2026-07-28"},{"label":"Findings","tier":"good","evidence":"none flagged"}],"reach":[{"value":868,"unit":"views"},{"value":5,"unit":"comments"},{"value":2,"unit":"likes"}]},"signals":{"views":868,"likes":2,"comments":5,"metrics_at":"2026-10-25"},"series":null,"edges":{"authors":[]}}