Documentation
¶
Overview ¶
Package talogen is the official Go client for talogen.dev, Tal Ogen's agent-accessible portfolio: profile, AI transformation services, case studies, autonomous agents, and the machine-readable candidate profile, business-problem analysis (can Tal help with this workflow?), plus the one write - Contact - which delivers a real message to a human. Free, no API key, standard library only.
client := talogen.New()
profile, err := client.GetProfile(ctx)
services, err := client.GetServices(ctx)
analysis, err := client.AnalyzeBusinessProblem(ctx, talogen.AnalyzeRequest{Problem: "Two admins read 80 customer emails a day and update HubSpot by hand"})
page, err := client.ListProjects(ctx, talogen.ListOptions{Tag: "human-in-the-loop"})
detail, err := client.GetProject(ctx, "human-for-ai")
API reference: https://talogen.dev/developers/ - OpenAPI: https://talogen.dev/openapi.json
Index ¶
- Constants
- Variables
- type APIError
- type Analysis
- type AnalyzeRequest
- type CapabilityPillar
- type CaseStudyMatch
- type CaseStudyMatches
- type Client
- func (c *Client) APIIndex(ctx context.Context) (map[string]any, error)
- func (c *Client) AllAgents(ctx context.Context, o ListOptions) ([]Item, error)
- func (c *Client) AllProjects(ctx context.Context, o ListOptions) ([]Item, error)
- func (c *Client) AnalyzeBusinessProblem(ctx context.Context, req AnalyzeRequest) (*Analysis, error)
- func (c *Client) Contact(ctx context.Context, req ContactRequest) (*ContactJob, error)
- func (c *Client) ContactStatus(ctx context.Context, id string) (*ContactJob, error)
- func (c *Client) Do(ctx context.Context, method, path string, query url.Values, body any, ...) error
- func (c *Client) GetAgent(ctx context.Context, id string) (*Item, error)
- func (c *Client) GetCandidate(ctx context.Context) (map[string]any, error)
- func (c *Client) GetProfile(ctx context.Context) (*Profile, error)
- func (c *Client) GetProject(ctx context.Context, id string) (*Item, error)
- func (c *Client) GetServices(ctx context.Context) (*Services, error)
- func (c *Client) LastRateLimit() RateLimit
- func (c *Client) ListAgents(ctx context.Context, o ListOptions) (*Page, error)
- func (c *Client) ListProjects(ctx context.Context, o ListOptions) (*Page, error)
- func (c *Client) RelevantCaseStudies(ctx context.Context, query string, limit int) (*CaseStudyMatches, error)
- type ContactJob
- type ContactRequest
- type Item
- type ListOptions
- type Opportunity
- type Option
- type Page
- type Profile
- type RateLimit
- type Services
- type SkillCategory
- type Stage
- type Strength
- type Text
- type UseCase
Constants ¶
const DefaultBaseURL = "https://talogen.dev"
DefaultBaseURL is the production origin.
const Version = "0.2.0"
Version of this client, sent in the User-Agent header.
Variables ¶
var EntryPoints = map[string]string{
"api_index": "https://talogen.dev/api/v1",
"services": "https://talogen.dev/api/v1/services",
"openapi": "https://talogen.dev/openapi.json",
"developer_portal": "https://talogen.dev/developers/",
"llms_txt": "https://talogen.dev/llms.txt",
"markdown_homepage": "https://talogen.dev/index.md",
"portfolio_json": "https://talogen.dev/portfolio.json",
"agent_manifest": "https://talogen.dev/.well-known/agent.json",
"candidate_profile": "https://talogen.dev/.well-known/candidate.json",
"mcp_endpoint": "https://talogen.dev/mcp",
"mcp_discovery": "https://talogen.dev/.well-known/mcp",
"mcp_server_card": "https://talogen.dev/.well-known/mcp/server-card.json",
"agent_skills": "https://talogen.dev/.well-known/agent-skills/index.json",
"ard_catalog": "https://talogen.dev/.well-known/ard.json",
"for_hiring_agents": "https://talogen.dev/for-recruiters.html",
"agent_access": "https://talogen.dev/#agent-access",
}
EntryPoints lists every machine-readable entry point of the site.
Functions ¶
This section is empty.
Types ¶
type APIError ¶
type APIError struct {
Status int
Code string // e.g. "not_found", "validation_failed", "rate_limited"
Message string
Hint string
RateLimit RateLimit
Body map[string]any
}
APIError is an error response from the API (4xx/5xx).
func IsAPIError ¶
IsAPIError returns the *APIError wrapped in err, if any.
type Analysis ¶ added in v0.2.0
type Analysis struct {
Disclaimer string `json:"disclaimer"`
Problem string `json:"problem"`
Fit string `json:"fit"` // strong, likely, partial, outside
FitExplanation string `json:"fit_explanation"`
Positioning Text `json:"positioning"`
MatchedOpportunities []Opportunity `json:"matched_opportunities"`
SuggestedApproach Text `json:"suggested_approach"`
Considerations []string `json:"considerations"`
RecommendedFirstPilot map[string]any `json:"recommended_first_pilot"`
RelevantCaseStudies []CaseStudyMatch `json:"relevant_case_studies"`
IndicativeScope map[string]any `json:"indicative_scope"`
WhatTalDoesNotDo []string `json:"what_tal_does_not_do"`
Engagement map[string]any `json:"engagement"`
}
Analysis is the response of AnalyzeBusinessProblem: heuristic and informational, never a quote.
type AnalyzeRequest ¶ added in v0.2.0
type AnalyzeRequest struct {
// Problem: what happens, who does it, how often, which tools are involved.
Problem string `json:"problem"`
Industry string `json:"industry,omitempty"`
TeamSize string `json:"team_size,omitempty"`
Tools string `json:"tools,omitempty"`
}
AnalyzeRequest describes a business workflow or operational problem.
type CapabilityPillar ¶ added in v0.2.0
CapabilityPillar is one of discovery / implementation / adoption.
type CaseStudyMatch ¶ added in v0.2.0
type CaseStudyMatch struct {
ID string `json:"id"`
Title string `json:"title"`
Flagship bool `json:"flagship"`
Link string `json:"link"`
Problem Text `json:"problem"`
Outcome Text `json:"outcome"`
Tags []string `json:"tags"`
RelevanceScore float64 `json:"relevance_score"`
WhyRelevant string `json:"why_relevant"`
Detail string `json:"detail"`
}
CaseStudyMatch is a project or agent ranked against a problem.
type CaseStudyMatches ¶ added in v0.2.0
type CaseStudyMatches struct {
Query string `json:"query"`
CaseStudies []CaseStudyMatch `json:"case_studies"`
Note string `json:"note"`
}
CaseStudyMatches is the response of RelevantCaseStudies.
type Client ¶
type Client struct {
BaseURL string
HTTPClient *http.Client
UserAgent string
// contains filtered or unexported fields
}
Client talks to the talogen.dev REST API.
func (*Client) AllProjects ¶
AllProjects follows the cursor until every project has been read.
func (*Client) AnalyzeBusinessProblem ¶ added in v0.2.0
AnalyzeBusinessProblem asks whether Tal can help with a described workflow: fit, matched opportunities, closest case studies, approach, considerations, a recommended first pilot, and an indicative scope. Deterministic heuristics, informational, never a quote. Side-effect-free.
func (*Client) Contact ¶
func (c *Client) Contact(ctx context.Context, req ContactRequest) (*ContactJob, error)
Contact sends Tal a message (async job, 202 Accepted). A human reads and replies to ReplyTo.
func (*Client) ContactStatus ¶
ContactStatus returns the delivery record of a contact job.
func (*Client) Do ¶
func (c *Client) Do(ctx context.Context, method, path string, query url.Values, body any, headers map[string]string, out any) error
Do performs one API call and decodes the JSON body into out (may be nil).
func (*Client) GetCandidate ¶
GetCandidate returns the machine-readable candidate profile (availability, target roles, location, work authorization).
func (*Client) GetProfile ¶
GetProfile returns the profile.
func (*Client) GetProject ¶
GetProject returns full detail for one project or agent by id.
func (*Client) GetServices ¶ added in v0.2.0
GetServices returns the AI transformation services for businesses: engagement stages, use cases, capability pillars, engagement, pricing stance.
func (*Client) LastRateLimit ¶
LastRateLimit returns the RateLimit headers from the most recent response.
func (*Client) ListAgents ¶
ListAgents returns one page of autonomous-agent summaries.
func (*Client) ListProjects ¶
ListProjects returns one page of project summaries.
func (*Client) RelevantCaseStudies ¶ added in v0.2.0
func (c *Client) RelevantCaseStudies(ctx context.Context, query string, limit int) (*CaseStudyMatches, error)
RelevantCaseStudies ranks projects and agents against a problem or a capability. limit 0 means the API default (5).
type ContactJob ¶
type ContactJob struct {
ID string `json:"id"`
Status string `json:"status"`
CreatedAt string `json:"created_at"`
DeliveredAt string `json:"delivered_at"`
StatusURL string `json:"status_url"`
MessageID string `json:"message_id"`
Error string `json:"error"`
Message string `json:"message"`
}
ContactJob is the delivery record of a contact message (content-free).
type ContactRequest ¶
type ContactRequest struct {
Message string `json:"message"`
// ReplyTo must be a real mailbox a human can reply to.
ReplyTo string `json:"reply_to"`
From string `json:"from,omitempty"`
Subject string `json:"subject,omitempty"`
// IdempotencyKey makes retries safe (sent as a header).
IdempotencyKey string `json:"-"`
}
ContactRequest is a message to Tal - about a role, or a business problem for an AI Opportunity Call.
type Item ¶
type Item struct {
ID string `json:"id"`
Title string `json:"title"`
Flagship bool `json:"flagship"`
CaseStudy bool `json:"caseStudy"`
Link string `json:"link"`
LinkLabel string `json:"linkLabel"`
Problem Text `json:"problem"`
// MyRole, Solution, AITechnicalApproach, Implementation and Outcome are
// the case-study sections, filled by GetProject / GetAgent. Result is the
// API's backward-compatible alias of Outcome.
MyRole Text `json:"my_role"`
Solution Text `json:"solution"`
AITechnicalApproach Text `json:"ai_technical_approach"`
Implementation Text `json:"implementation"`
Outcome Text `json:"outcome"`
Result Text `json:"result"`
Tags []string `json:"tags"`
Image string `json:"image"`
}
Item is a project or agent summary; Detail fields are filled by GetProject.
func (Item) OutcomeText ¶ added in v0.2.0
OutcomeText returns Outcome, falling back to the legacy Result field.
type ListOptions ¶
ListOptions filter a list call.
type Opportunity ¶ added in v0.2.0
type Opportunity struct {
Rank int `json:"rank"`
ID string `json:"id"`
Title string `json:"title"`
Outcome Text `json:"outcome"`
MatchedOn []string `json:"matched_on"`
ExpectedValue string `json:"expected_value"`
ImplementationDifficulty string `json:"implementation_difficulty"`
LikelyApproach Text `json:"likely_approach"`
HumanInTheLoop Text `json:"human_in_the_loop"`
FirstPilot Text `json:"first_pilot"`
}
Opportunity is one matched AI opportunity in an Analysis.
type Option ¶
type Option func(*Client)
Option configures a Client.
func WithBaseURL ¶
WithBaseURL points the client at another origin.
func WithHTTPClient ¶
WithHTTPClient replaces the underlying *http.Client.
type Page ¶
type Page struct {
Count int `json:"count"`
Total int `json:"total"`
Limit int `json:"limit"`
NextCursor string `json:"next_cursor"`
Next string `json:"next"`
Items []Item `json:"items"`
}
Page is one page of a cursor-paginated list.
type Profile ¶
type Profile struct {
Name string `json:"name"`
Headline string `json:"headline"`
Tagline Text `json:"tagline"`
Summary Text `json:"summary"`
About Text `json:"about"`
Contact map[string]string `json:"contact"`
Website string `json:"website"`
FlagshipProject any `json:"flagshipProject"`
SkillCategories []SkillCategory `json:"skillCategories"`
Skills []string `json:"skills"`
AITools []string `json:"aiTools"`
Strengths []Strength `json:"strengths"`
}
Profile is the professional profile.
type RateLimit ¶
RateLimit carries the RateLimit headers present on every response. Zero values mean the header was absent.
type Services ¶ added in v0.2.0
type Services struct {
Name string `json:"name"`
Promise Text `json:"promise"`
Approach Text `json:"approach"`
Positioning Text `json:"positioning"`
Audiences []string `json:"audiences"`
NotOffered []string `json:"not_offered"`
Stages []Stage `json:"stages"`
UseCases []UseCase `json:"useCases"`
Capabilities map[string]CapabilityPillar `json:"capabilities"`
Pricing string `json:"pricing"`
Engagement map[string]string `json:"engagement"`
Tools map[string][]string `json:"tools"`
REST map[string]string `json:"rest"`
Disclaimer string `json:"disclaimer"`
}
Services describes Tal Ogen's AI transformation offer for businesses.
type SkillCategory ¶
SkillCategory groups capabilities.
type Stage ¶ added in v0.2.0
type Stage struct {
Step int `json:"step"`
Name string `json:"name"`
Summary Text `json:"summary"`
Identifies []string `json:"identifies"`
}
Stage is one of the three engagement stages.
type Text ¶ added in v0.1.1
type Text string
Text is a string that also accepts a JSON array of strings (joined with blank lines): several profile and project fields are paragraphs.
func (*Text) UnmarshalJSON ¶ added in v0.1.1
UnmarshalJSON accepts a JSON string, an array of strings, or null.