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:
An approved/registered 10DLC brand.
An approved/registered 10DLC campaign.
At least one enabled, usable phone number.
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.”

