AbsoluteJS

Partnership

@absolutejs/partnershipv0.0.11alphaCommerce & Growth

Trust & Fit scoring, relationship classification, connection framing, and partner verification on your own AI provider.

In-house partnership and relationship intelligence — AI reasoning over the partnership lifecycle, so you do not pay a deal-copilot SaaS per seat for the parts you can run yourself. Each primitive is a pure function of typed input plus an injected AI call: the package owns the prompt, the JSON Schema, the tool contract, and the result mapping, while your app supplies the generation call along with provider, metering, timeouts, and fallbacks. Bridging to @absolutejs/ai (or a metering wrapper around it) is one line.

#Installation

BASH
bun add @absolutejs/partnership

#Capabilities

Overview

In-house partnership & relationship intelligence for AbsoluteJS apps — AI reasoning over the partnership lifecycle, so you don't pay a deal-copilot SaaS per seat for the parts you can run yourself.

Each primitive is a pure function of typed input + an injected AI call. The package owns the prompt, the JSON Schema, the tool contract, and the result mapping. Your app supplies the generation call — and with it the provider, billing/metering, timeouts, and any fallback. The package never imports a provider and never touches your ledger.

Wiring (one-time)

Bridge the package's generateObject to whatever you already use for structured generation. If you use @absolutejs/ai (directly or behind a metering wrapper), it's one line — the request shape is the subset of generateObjectAI's options the package controls, minus provider and your metering fields:

The package passes its own feature tag through ("trustFit", "classifyMatch", "personConnection", "verification"), so your usage ledger keeps its existing per-feature breakdown.

Primitives (Wave 1A)

Function — Returns

scoreTrustFit(input, ctx) — four 0–1 dimensions (audience overlap, capability, mutual value, credibility) + three per-score reasons

classifyRelationship(input, ctx) — relationship type, official name + domain, receptiveness, competitor out-serve play

Show 4 more

frameConnection(input, ctx) — why-connect / shared-ground / mutual-value / conversation-starter for a specific person

verifyPartner(input, ctx) — structured Verification Dossier (credibility, track record, audience overlap, economics, open questions)

Web-grounded primitives

verifyPartner optionally takes an injected research call (e.g. your @absolutejs/discover web-research) on the context. Omit it and synthesis falls back to knowledge-only:

Fallbacks

Primitives throw on a model or validation failure. Heuristic fallbacks (e.g. deriving rough Trust & Fit dimensions from a match's existing signals) are app-specific, so they stay in your wrapper — catch and degrade however your UI needs.

Trust & Fit scoring

scoreTrustFit returns four 0-1 dimensions (audience overlap, capability, mutual value, credibility) with three per-score reasons.

Relationship classification

classifyRelationship resolves the relationship type, official name and domain, receptiveness, and a competitor out-serve play.

Connection framing

frameConnection produces why-connect, shared-ground, mutual-value, and conversation-starter framing for a specific person.

Partner verification

verifyPartner builds a structured Verification Dossier covering credibility, track record, audience overlap, economics, and open questions.

Web-grounded research

verifyPartner optionally takes an injected research call (for example @absolutejs/discover web research); omit it and synthesis falls back to knowledge-only.

Metering-friendly tags

Each primitive passes its own feature tag through ("trustFit", "classifyMatch", "personConnection", "verification"), so your usage ledger keeps its per-feature breakdown.

Outcomes

What you can build

Overview

In-house partnership & relationship intelligence for AbsoluteJS apps — AI reasoning over the partnership lifecycle, so you don't pay a deal-copilot SaaS per seat for the parts you can run yourself.

Wiring (one-time)

Bridge the package's generateObject to whatever you already use for structured generation. If you use @absolutejs/ai (directly or behind a metering wrapper), it's one line — the request shape is the subset of generateObjectAI's options the package controls, minus provider and your metering fields:

Primitives (Wave 1A)

Function — Returns

Hardening checklist

Production guidance

Make every external boundary explicitPin the deployed @absolutejs/partnership version, replace example or memory-backed dependencies with durable implementations, bound external calls, protect credentials, and emit enough evidence to retry or recover safely.

Follow in order

Troubleshooting path

1
Fallbacks
Primitives throw on a model or validation failure. Heuristic fallbacks (e.g. deriving rough Trust & Fit dimensions from a match's existing signals) are app-specific, so they stay in your wrapper — catch and degrade however your UI needs.

#Wiring (one-time)

Partial snippet

Bridge the package's generateObject to whatever you already use for structured generation. If you use @absolutejs/ai (directly or behind a metering wrapper), it's one line — the request shape is the subset of generateObjectAI's options the package controls, minus provider and your metering fields:

TS
import type { GenerateObject } from "@absolutejs/partnership";
import { meteredGenerateObjectAI } from "./usage/meteredAI";
import { aiProvider } from "./integrations/aiProvider";

export const partnershipCtx = (userSub?: string | null) => ({
  generateObject: ((req) =>
    meteredGenerateObjectAI({ ...req, provider: aiProvider, userSub })) as GenerateObject,
});

#Primitives (Wave 1A)

Partial snippet

Function — Returns

TS
import { scoreTrustFit } from "@absolutejs/partnership";

const { dimensions, reasons } = await scoreTrustFit(
  {
    member: { niche: "devtools", offer: "hosted CI", audienceSize: "10k" },
    partner: { company: companyData, person: personData, reasoning },
    priorScores: { theirReceptiveness: 0.4, yourFit: 0.9 },
  },
  partnershipCtx(userSub),
);

#Quick Start

Partial snippet

partnershipCtx bridges the package to whatever you already use for structured generation — with @absolutejs/ai it is one line of wiring.

TS
import { scoreTrustFit } from '@absolutejs/partnership';

const { dimensions, reasons } = await scoreTrustFit(
	{
		member: {
			audienceSize: '10k',
			niche: 'devtools',
			offer: 'hosted CI'
		},
		partner: { company: companyData, person: personData, reasoning },
		priorScores: { theirReceptiveness: 0.4, yourFit: 0.9 }
	},
	partnershipCtx(userSub)
);
// dimensions: four 0-1 scores (audience overlap, capability,
// mutual value, credibility) with three reasons per score.

#Web-grounded verification

Partial snippet

verifyPartner optionally grounds its Verification Dossier in an injected web-research call, such as @absolutejs/discover.

TS
import { verifyPartner } from '@absolutejs/partnership';

const dossier = await verifyPartner(input, {
	...partnershipCtx(userSub),
	research: (system, user) => webResearch(system, user)
});
// Omit research and synthesis falls back to knowledge-only.
Alpha status
Early 0.0.x release covering the Wave 1A primitives. Primitives throw on a model or validation failure — heuristic fallbacks are app-specific, so catch and degrade in your own wrapper.
Provider-injected by design
The package never imports an AI provider and never touches your ledger. Your app injects generateObject, keeping billing, timeouts, and fallback policy in your own code.

#API reference

Search the declarations exported by the current package type files. Expand a symbol to inspect its source-backed signature.

80 symbols
AIMessageexportPermalink
TS
AIMessage
Exported from @absolutejs/partnership

Current package surface

What ships today

@absolutejs/partnershipv0.0.11 · betaCommerce & GrowthnpmSource
3entry points81symbols

Import surface · click to copy