Skip to main content

Jayni Ai

What Jayni is

Written by Rudy Wetou

Jayni is PitchPrfct’s built-in AI assistant. It lives in the app as a right-side chat drawer and lets users manage SMS operations with natural language instead of navigating each feature manually. It can read and update the signed-in user’s own PitchPrfct data through guarded tools.Good one-line description: Jayni is your in-app AI copilot for contacts, conversations, imports, workflows, campaigns, compliance, and messaging analytics.

Where to find it

  • Open Ask Jayni / the Sparkles button in the app.

  • It is available across logged-in, non-authenticated app pages when the Jayni feature is enabled.

  • Jayni uses a chat drawer with welcome prompts, follow-up suggestions, session history, a new-chat button, and a temporary/incognito mode.

What Jayni can help with

Contacts and lists

  • Search/filter contacts by attributes such as state, city, company, tags, custom fields, starred status, opt-out status, sentiment, and workflow/campaign history where supported.

  • View contact details and conversation history.

  • Create, update, merge, and delete contact lists; add/remove tags; update contact fields; manage notes.

  • For audience requests, Jayni can create a list automatically after resolving the audience. Attribute audiences use the same filters; behavioral audiences such as “no reply” are resolved from conversation data rather than invented contact fields.

  • Counts should come from the full matching result, not the visible preview page.

Conversations and messaging

  • Find conversations, read message history, identify unread conversations, and inspect a contact’s thread.

  • Send messages when the user asks, subject to the normal confirmation/compliance safeguards.

  • For personalized message suggestions, Jayni should read the actual conversation first and use specific context rather than guessing.

CSV imports

  • Start an interactive CSV import directly in chat.

  • The UI handles upload, field mapping, duplicate handling, list selection, and tagging.

  • Import settings can be changed mid-conversation by starting the import flow again; the previous CSV can be reused.

  • Duplicate options:

    • Skip Existing: ignores contacts already matched by phone number; best for new leads.

    • Include All: includes existing contacts and fills blank fields without overwriting existing values; best for enrichment.

    • Match Filters: includes only existing contacts matching conditions such as tags, location, response history, workflow history, or sentiment.

  • Current documented limit: 10,000 CSV rows.

  • After import, Jayni can explain new, duplicate, enriched, failed, undeliverable, and risk-contact results.

  • High-risk recent opt-outs should be reviewed before messaging. Phone scrubbing is recommended before campaigns.

  • Tags applied during import affect all imported contacts, including duplicates. Tags that trigger workflows can enroll contacts immediately, so users should be warned before applying them.

Workflows and campaigns

  • Build and update workflows, templates, workflow nodes, enrollments, and phone-number configuration.

  • Create, start, pause, and inspect SMS or workflow campaigns.

  • Before designing or creating a workflow/campaign, Jayni is intended to verify:

    1. An approved/registered 10DLC brand.

    2. An approved/registered 10DLC campaign.

    3. At least one enabled, usable phone number.

    4. At least one contact.

  • If a sending prerequisite is missing, Jayni should explain what needs to be fixed instead of pretending the campaign is ready.

  • Deleting, sending SMS, and bulk operations require confirmation. Jayni should warn about opt-outs and credit costs.

10DLC and compliance

  • Read approved/registered 10DLC brands and campaigns.

  • Inspect brand status, vetting status/history, scores, carrier limits, and related delivery information where available.

  • Jayni must not guess carrier reasons, vetting scores, throughput, or daily caps; it should query the relevant analytics/compliance tool.

  • A useful customer explanation: Delivered reached the handset; Undelivered was accepted by the carrier but could not be delivered; Failed was rejected by the carrier. Failed messages are not charged AI credits.

  • “Carrier queued” messages may be held by a carrier daily limit and delivered later; they are not necessarily lost. Actual limits and vetting values must come from the account data.

Analytics and insights

  • Sent, delivered, received, undelivered, failed, and in-flight messaging statistics.

  • Delivery rates, response rates, opt-out rates, sentiment summaries, rankings, campaign/workflow performance, and improvement insights.

  • Drill into the actual messages behind delivery-status buckets and view opt-out timelines/contacts where supported.

  • Jayni should explain the calculation context: delivery rate is delivered divided by resolved messages; response rate is received divided by delivered messages; opt-out rate is opt-outs divided by delivered messages.

How Jayni responds

  • It normally streams its work, showing tool activity/thinking in the chat while it operates.

  • Final answers are concise and appear as text plus rich UI blocks rather than raw data.

  • Rich results can include contact tables, contact cards, list-created cards, conversation tables, workflow/campaign/template tables or cards, CSV import controls, analytics charts, confirmations, and error/cost notices.

  • Jayni should not expose database IDs, raw JSON, internal field names, or provider names when a human-readable explanation is available.

  • If an action fails, it must say it failed and explain why; it should never claim success based on an intended action.

  • If the same tool fails repeatedly, Jayni stops retrying and asks the user whether to try again.

  • Follow-up suggestions may appear after a response.

  • Users can rate individual non-temporary turns with thumbs up/down.

  • Images can be attached or pasted. Jayni can describe screenshots or extract information from them. It should ask users to upload a real CSV/file rather than trying to parse a spreadsheet from a screenshot.

Sessions and privacy

  • Normal sessions are saved in Jayni history and can be renamed, resumed, or deleted.

  • Jayni keeps short-term conversational context and a separate user-level memory used to personalize future sessions.

  • Temporary / incognito sessions are fully functional but are not shown in history, do not update the user memory, and skip disposable-session title generation. They are deleted when closed or when starting a new chat; a server cleanup removes abandoned temporary sessions after 24 hours.

  • Temporary sessions still use tools and AI credits, so “temporary” means not retained in conversation history—not “free” or incapable of making changes.

Limits and AI credits

  • Live chat is subject to a per-user rate limit. The default implementation fallback is 20 messages per 10-minute window, but the active limit can be configured, so help docs should say “subject to your account’s current Jayni limit” unless Product confirms a public number.

  • AI-credit enforcement can block a turn before it starts when the balance is insufficient; the UI may show a cost gate.

  • Current credit model in the implementation docs:

    • 1 credit = $0.001 of retail AI value.

    • 500 free credits/month for the free tier; free credits expire monthly.

    • Pro: 25,000 credits/month at $29.

    • Ultra: 100,000 credits/month at $99.

    • Paid subscription credits can roll over one month, capped at 2× the plan allowance; free credits do not roll over.

    • Optional reserved add-ons and one-time credit packs exist in the billing design.

    • No pay-as-you-go overage in the documented v1 flow; if all available credit pools are exhausted, the next Jayni turn is blocked until credits are added.

  • Because pricing/rollout can change, I’d keep exact plan/pack prices in a separately maintained billing article and describe Jayni here as “credit-based and subject to the account’s available balance.”

Did this answer your question?