This page is for IT and security reviewers.
Last checked against the code: 26 Sep 2026.
DMS is a consulting firm in Metuchen, New Jersey, that works on AI governance and cybersecurity. Research from ISE&S board members drove the idea behind the kind of mentoring the app supports.
Dr. Deborah Mohammed-Spigner is on the ISE&S founding board and is CEO of DMS. The programme team that runs the pilot is six people from DMS and the ISE&S board.
The app and its Postgres database run on Railway, in Railway's US East region in Virginia, USA. The app reaches the database over Railway's private network. Railway says traffic on that network is encrypted with WireGuard.
Railway says it holds SOC 2 Type II and SOC 3 certification (Railway's compliance page). That certification is Railway's, as the host. It does not cover xEllerator.
A plain HTTP request is sent on to HTTPS, and every answer tells the browser to keep using HTTPS for a year, subdomains included (HSTS).
Every page carries a content security policy. Pages can run only the site's own scripts, and no other site can show xEllerator inside a frame. The policy still allows inline styles, which the pages use. This is the policy as sent:
default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; font-src 'self'; img-src 'self' data:; connect-src 'self'; frame-ancestors 'none'; object-src 'none'; base-uri 'none'; form-action 'self'
Pages load nothing from other companies' servers. The fonts, images and scripts all come from xEllerator itself, and there are no advertising or analytics scripts. Answers from the sign-in and data routes are never cached.
People join from the email invite that HR sends, and fill in their own profile.
All organisations share one database. Every record carries the organisation it belongs to, and HR's screens read only their own organisation's records. Tests check that one organisation's HR cannot see or change another organisation's people or matches, and that its mentees and mentors cannot write to another organisation's matches.
HR sees the names, matches and progress of people in their own organisation. For check-ins and outcomes, HR sees only figures for groups of 5 or more people.
Check-in answers and requests for support never reach the other person. A mentor's private session notes and a mentee's takeaways are seen only by the person who wrote them.
The six people who run the pilot see names across organisations, and every match with its score and reason. On the team's page they read check-ins, the mentee's short answers after each session, requests for support, and what the pair said about the sponsorship the mentor logged, pair by pair. That page leaves out a pair the reader is in, and every pair in an organisation where the reader is HR. The admin console's lists of people and matches show every pair.
When the admin console loads people's data, the app logs who looked, which page and which organisation. A repeat of the same read within 10 minutes is not logged again. This covers the people list, matches, equity figures, match explanations, pilot applications and the programme team's page. The Pathway report, which shows only group figures, is not in this log. The entry holds no content, and HR cannot see the log. If the entry cannot be written, the data is not sent.
A group's figures are shown only if it had 5 people or more when they were worked out. An organisation with fewer than 5 active mentees sees no group figures. Figures come from a snapshot saved once a week, and a group's figures change only after at least 5 people or answers behind them have changed, so one person's change does not show on its own.
When a group is hidden, others may be hidden too. That way its figures cannot be worked out by taking the shown groups away from everyone. The size of a hidden group can sometimes be worked out from the total. Some other combinations of figures, and some readings across weeks, are not checked yet.
At the end of a match, a mentee is asked whether her answers can be counted in programme figures. The box starts unticked. Answers about promotions, moves and confidence are counted only if she ticks it. Without it, they are kept but never counted.
The app logs what happens, such as a goal added or a match accepted. Each entry is a fixed phrase from a closed list, with ids for the people and things involved. It never holds text that anyone typed, such as notes, comments, goals or written reasons. The code refuses an entry with its own message or an unknown type, and tests check that no typed text reaches the log.
The app uses two OpenAI models: gpt-4o-mini for text, and text-embedding-3-small for comparing text by meaning.
The app estimates what each AI call costs from its own price table. By that estimate, a match run can spend at most $20, and all AI spend is capped at $5 a day for the platform and $2 a day for each organisation. The totals are kept in the database, so the caps hold across restarts. Two runs at the same moment can go over a cap by the cost of the calls they have in flight. With no key, at a cap, or when a call fails, the app uses word matching and written templates instead, and the match run still finishes. Model answers are cached on the app's server, and a cached answer is not asked for again.
OpenAI's rules for data sent to its API are on OpenAI's site.
Neither person in a pair sees a proposal until HR releases it. HR can instead withhold it, with a reason from a fixed list: a reporting line, a prior relationship, a conflict of interest, or another reason with a note. HR cannot re-rank proposals, choose a different mentor or change a score. Each withhold is logged, and that pairing is not proposed again. The Equity page shows the share of proposals HR withheld for each group.
DMS compared this design with the four functions of the NIST AI Risk Management Framework. The framework is voluntary, and there is no certificate for it. The comparison is DMS's own.
| Function | In the app |
|---|---|
| Govern | HR owns the release decision in its own organisation. The reason list limits what HR may decide on, and the activity log names who released or withheld each proposal. |
| Map | The review step exists because the engine cannot see reporting lines, prior relationships or conflicts of interest. |
| Measure | The share withheld is measured for each group, beside acceptance rate, match scores and matches that ended badly. |
| Manage | Withholding is the way to step in. It is logged with its reason, and the next match run leaves that pairing out. |
| Company | What it does | What it receives |
|---|---|---|
| Railway | Hosts the app and its database | Everything the app stores |
| Brevo | Sends the app's emails, such as invitations, from send.strategydms.com | The person's name, email address and the email itself |
| OpenAI | Runs the AI models described above | The text listed under "Prompts" |
No other company gets data from the app.
Email DMS at info@strategydms.com with "xEllerator security" in the subject. Say what you found and how to see it again. Please do not open or change other people's data while you check.
The same contact is in /.well-known/security.txt.
The pilot is for up to 20 organisations and runs for 8 to 12 weeks. It is free and there is no contract. Each organisation gets a written report at the end about its matches, meetings, feedback and gaps.
Apply for the pilot