Find Tech Stacks for a Company

Use AI to summarize a company’s technology stack from a natural‑language prompt or an explicit domain.
Great for quick discovery and hypothesis generation — then verify deterministically with standard endpoints.

Base URL: https://api.salescaddy.ai/api


Endpoint

POST /ai/find-techstacks-for-company

Headers

  • Authorization: Bearer <token> — required
  • X-On-Behalf-Of-User: [email protected]required (AI actions are attributed to a user)

Query parameters

NameTypeRequiredDefaultDescription
promptstringNo*Natural-language question (e.g., "What tech stack does Hilton use?")
companyDomainstringNo*Domain to focus on (e.g., hilton.com)
sizeintNo20Max number of stack items

* Provide either prompt or companyDomain (or both).

Response (illustrative, trimmed)

[
  {
    "productId": "prod_snowflake",
    "productName": "Snowflake",
    "vendorDomain": "snowflake.com",
    "category": "Data Warehouse",
    "confidence": 0.86
  },
  {
    "productId": "prod_datadog",
    "productName": "Datadog",
    "vendorDomain": "datadoghq.com",
    "category": "Monitoring",
    "confidence": 0.78
  }
]
⚠️

AI results are probabilistic. Always confirm with deterministic endpoints:

  • GET /companies/{domain}/products/paged or CSV/JSONL variants.
  • POST /companies/{domain}/products-in-use for specific productIds.
  • GET /companies/{domain}/cohort/{cohort}/metrics/usage for benchmarking.

Example — Prompt only

curl -sS -X POST "https://api.salescaddy.ai/api/ai/find-techstacks-for-company?prompt=What%20tech%20stack%20does%20Hilton%20use%3F&size=15"   -H "Authorization: Bearer $TOKEN"   -H "X-On-Behalf-Of-User: [email protected]"
const url = "https://api.salescaddy.ai/api/ai/find-techstacks-for-company?prompt=What%20tech%20stack%20does%20Hilton%20use%3F&size=15";
const res = await fetch(url, { method: "POST", headers: {
  Authorization: `Bearer ${process.env.TOKEN}`,
  "X-On-Behalf-Of-User": "[email protected]"
}});
console.log(await res.json());
import os, requests
r = requests.post("https://api.salescaddy.ai/api/ai/find-techstacks-for-company",
                  params={"prompt":"What tech stack does Hilton use?","size":15},
                  headers={"Authorization": f"Bearer {os.environ['TOKEN']}",
                           "X-On-Behalf-Of-User": "[email protected]"})
print(r.json())
using System.Net.Http.Headers;
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", TOKEN);
http.DefaultRequestHeaders.Add("X-On-Behalf-Of-User","[email protected]");
var res = await http.PostAsync("https://api.salescaddy.ai/api/ai/find-techstacks-for-company?prompt=What%20tech%20stack%20does%20Hilton%20use%3F&size=15", null);
Console.WriteLine(await res.Content.ReadAsStringAsync());

Example — Explicit company domain

curl -sS -X POST "https://api.salescaddy.ai/api/ai/find-techstacks-for-company?companyDomain=hilton.com&size=20"   -H "Authorization: Bearer $TOKEN"   -H "X-On-Behalf-Of-User: [email protected]"
const url = "https://api.salescaddy.ai/api/ai/find-techstacks-for-company?companyDomain=hilton.com&size=20";
const res = await fetch(url, { method: "POST", headers: {
  Authorization: `Bearer ${process.env.TOKEN}`,
  "X-On-Behalf-Of-User": "[email protected]"
}});
console.log(await res.json());
r = requests.post("https://api.salescaddy.ai/api/ai/find-techstacks-for-company",
                  params={"companyDomain":"hilton.com","size":20},
                  headers={"Authorization": f"Bearer {os.environ['TOKEN']}",
                           "X-On-Behalf-Of-User": "[email protected]"})
print(r.json())
var res2 = await http.PostAsync("https://api.salescaddy.ai/api/ai/find-techstacks-for-company?companyDomain=hilton.com&size=20", null);
Console.WriteLine(await res2.Content.ReadAsStringAsync());

Example — Filter output to a vendor family (client‑side)

curl -sS -X POST "https://api.salescaddy.ai/api/ai/find-techstacks-for-company?companyDomain=hilton.com&size=50"   -H "Authorization: Bearer $TOKEN"   -H "X-On-Behalf-Of-User: [email protected]" | jq -c '[.[] | select(.vendorDomain|test("microsoft|azure|office|microsoft.com"; "i"))]'
const data = await (await fetch("https://api.salescaddy.ai/api/ai/find-techstacks-for-company?companyDomain=hilton.com&size=50", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.TOKEN}`, "X-On-Behalf-Of-User":"[email protected]" }
})).json();
console.log(data.filter(x => /microsoft|azure|office|microsoft\.com/i.test(x.vendorDomain || "")));
data = requests.post("https://api.salescaddy.ai/api/ai/find-techstacks-for-company",
                     params={"companyDomain":"hilton.com","size":50},
                     headers={"Authorization": f"Bearer {os.environ['TOKEN']}", "X-On-Behalf-Of-User":"[email protected]"}).json()
msft = [x for x in data if x.get("vendorDomain","").lower().find("microsoft") >= 0 or "azure" in x.get("productName","").lower()]
print(msft[:5])
var payload = await (await http.PostAsync("https://api.salescaddy.ai/api/ai/find-techstacks-for-company?companyDomain=hilton.com&size=50", null)).Content.ReadAsStringAsync();
Console.WriteLine(payload); // filter client-side as needed

Prompting tips

  • Be specific about the company or segment (“Hilton hotels”, “Europe-based airlines”).
  • Name product families or categories you care most about (“data stack”, “observability”, “marketing”).
  • Add constraints (region, size, public/private) to steer results.

Good prompts

  • “List the data engineering stack used by Marriott.”
  • “What observability tools do US airlines use?”
  • “Which collaboration tools are common at European hotel chains?”

Post‑processing (verification & enrichment)

  1. Verify candidates: GET /companies/{domain}/products/paged and/or POST /companies/{domain}/products-in-use.
  2. Benchmark with GET /companies/{domain}/cohort/{cohort}/metrics/usage.
  3. Drill down to product details via Products — Search / Vendor Products.

Errors

CodeMeaningHow to fix
400Bad requestProvide prompt or companyDomain; validate size (positive int).
401UnauthorizedProvide/refresh Bearer token.
403ForbiddenInclude X-On-Behalf-Of-User; ensure your plan permits AI usage.
404Not foundNo stack candidates found for the request.
429Rate limit exceededRetry with exponential backoff; respect Retry-After.
500Internal server errorRetry later; contact support if persistent.