Gary Club
AI

AI Gist

Three endpoints, one shape — summarize a contact, a company, or a deal in a sentence plus three bullets. Built for the moment a human (or agent) needs catch-up context fast.

Cache + FUEL economics
First call computes via Haiku and deducts 1 FUEL. For 24 hours afterward, the same contact / company / deal returns the cached gist with cost_credits: 0. Pass ?force=true to skip the cache and pay 1 FUEL for a fresh compute (e.g. after a major activity ingest).

Contact gist#

Summarize a contact

POST/v1/ai/contacts/{id}/gist
Pulls the contact, recent activities, deals, and conversations; runs them through Haiku; caches for 24h.

Path parameters

iduuidrequired
Contact id.

Query parameters

forceboolean
true to bypass the 24h cache and recompute.
Request
curl -X POST \
  https://agency.gary.club/api/public/v1/ai/contacts/con_EXAMPLE_aaaa/gist \
  -H "Authorization: Bearer gc_live_EXAMPLE_AbCdEfGhIj0123456789"

Company gist#

Summarize a company

POST/v1/ai/companies/{id}/gist
Same shape; surfaces account-level context — contacts, open deals, recent activity volume, churn signals.

Path parameters

iduuidrequired
Company id.

Query parameters

forceboolean
true to bypass the 24h cache.

Deal gist#

Summarize a deal

POST/v1/ai/deals/{id}/gist
Where the deal stands today, what's blocking it, who's involved, and the last meaningful event.

Path parameters

iduuidrequired
Deal id.

Query parameters

forceboolean
true to bypass the 24h cache.

Response shape#

Response
{
  "gist": {
    "summary": "Operations lead at a 60-person plumbing co. Asked about same-day emergency dispatch but never booked.",
    "bullets": [
      "Inbound call 2026-04-22 — wanted a quote for 6 service vans",
      "Said decision-maker is the owner, will loop them in by end of week",
      "Hasn't replied to two follow-up texts"
    ],
    "computed_at": "2026-04-28T01:00:00.000Z"
  },
  "cost_credits": 1,
  "cached": false
}

Errors#

  • 404 not_found — entity not in your tenancy.
  • 402 fuel_exhausted — needed 1 FUEL on a cache miss; balance was 0.
  • 500 internal — Haiku call failed; retry with backoff.

Use patterns#

  • Pre-call brief. Hit contacts/{id}/gist right before the dialer connects so the human has context. Cache means repeated dials inside the day are free.
  • CRM card hover. Pop a tooltip showing the gist on hover. Costs FUEL only on the first unique view.
  • Slack notify. When a deal advances, fetch the deal gist and post the bullets to Slack so the team sees what changed without opening the CRM.