This article lists, for every type of data Pensero ingests, whether it is processed, whether it is sent to an AI model, and whether it is stored. It complements Security, which covers our controls and certifications, and each integration article, which lists the permissions we request.
How to read the matrix
Processed: Pensero reads the field to compute a metric, resolve an identity or link records.
Sent to AI: the field is included in a prompt sent to a large language model.
Stored: the field is kept in Pensero’s database.
No: the field is not read, or is not kept.
Where AI runs
Every model runs on Amazon Bedrock inside Pensero’s own AWS account. Content is never sent to the public OpenAI or Anthropic APIs.
Your content is used for inference only. No model is trained or fine-tuned on customer data.
All connectors are read-only against your tools. The only thing Pensero writes is its own Slack notifications.
Names, emails and avatars can be anonymised across the product from Privacy settings.
What is processed, what reaches AI, and what is stored
Data element | Processed | Sent to AI | Stored | Notes |
Ticket (Jira, Linear, GitHub Issues, YouTrack) | ||||
Title, description | Yes | Yes | Yes | Cleared if the ticket is skipped |
State, type, project, milestone, parent, estimation, dates | Yes | Yes, as prompt context | Yes | |
Creator / assignee identity (name, email, avatar) | Yes | No | Yes | Anonymised at display time when enabled |
Comments | Yes | Yes | Yes | |
Attachment files | No | No | No | Only attachment metadata, used to link pull requests |
Worklogs, Tempo, plugin and admin data | No | No | No | Never requested |
Git pull request (GitHub, GitLab, Bitbucket) | ||||
Title, description | Yes | Yes | Yes | |
Code diff | Yes | Yes | No | Read to produce the summary, features, bug and quality checks; never persisted |
Changed lines | Yes | Yes | Hash only | Stored as a one-way SHA-256 digest per line |
Asset files and blank lines | No | No | No | Dropped |
Repository source outside the diff, secrets, environment variables, workflows, wikis | No | No | No | Never requested |
Reviews and review comments | Yes | Yes | Yes | Includes sentiment |
Commit SHAs, branches, labels, dates, coverage | Yes | No | Yes | |
Summary, features, metrics, enrichment | Derived | No | Yes | |
Document (Notion, Confluence, Google Drive) | ||||
Document body text | Yes | Yes, full text or the version delta | Yes, full text | Cleared if the document is skipped |
Title, url, properties, mime type, dates, author | Yes | Title only | Yes | |
Contribution shares, similarity signature, version history | Derived | No | Yes | |
Comments | Yes | Yes | Yes | |
Binary originals, Confluence attachment content | No | No | No | Only extracted text is read |
Gmail, OneDrive, SharePoint | No | No | No | A document or calendar grant does not reach them |
Message (Slack, Google Chat, Microsoft Teams) | ||||
Message text | Yes | Yes, the thread plus the person's own messages | Yes | |
Thread structure, reply counts, timestamps, channel metadata | Yes | No | Yes | |
Author identity | Yes | Name only | Yes | |
Pull request, ticket and document links in the text | Yes | No | Yes | Resolved into references |
Direct messages and group DMs | No | No | No | Only public channels and private channels the bot was invited to |
Uploaded file content, reactions and emoji | No | No | No | |
Messages from people not mapped to a Pensero user | No | No | No | Dropped during sync |
Calendar event (Google Calendar, Microsoft 365) | ||||
Event title | Yes, pattern matching only | No | Yes | Absence detection uses fixed HR-tool title patterns, not AI |
Description, location, url | No | No | Yes | Stored with the event, never interpreted |
Start and end times, timezone, event type | Yes | No | Yes | |
Organizer, creator and attendees with response status | Yes | No | Yes | |
Out-of-office name, flag and source | Derived | No | Yes | Cleared if the event stops being marked out of office |
Unrecognised shared-calendar titles | Yes | No | Yes | Kept so absence patterns can be extended |
Ordinary meetings on a personal calendar | No | No | No | Not even requested unless focus-time tracking is enabled |
Devin session | ||||
Original prompt | Yes | Yes | Yes | |
Full transcript, every turn | Yes | Yes | Yes | |
Devin's own analysis, tags, ACUs, message counts, size, status | Yes | Yes, as session facts | Yes | |
Raw API response | No | No | Yes, verbatim | |
Linked pull request urls and states | Yes | No | Yes | Matched to the pull request in Pensero |
Repository checkout, shell output, browser session, artifacts | No | No | No | Not exposed by the Devin API |
Notes worth highlighting
Code never lands in our database. A pull request diff is read to produce its summary, features and quality checks, then discarded. Only one-way hashes of the changed lines are kept, which is what lets us detect rework and duplicated work without retaining your source code.
Calendars never reach an AI model. Absence detection is pure pattern matching on the event title.
Personal calendars are minimised. Without focus-time tracking, Pensero only asks your calendar for out-of-office entries; ordinary meetings are never retrieved.
Documents are the one type stored in full, because contribution shares and duplicate detection are computed from the text itself.
For what Pensero calculates about individuals from this data, and how profiling differs from automated decision-making, see AI, profiling and automated decision-making: what Pensero calculates about individuals.
For our certifications, subprocessors and full data-processing details, see the Trust Center.