Engineering noteResearch & Engineering
What TEEI Runs on AWS
The AWS services that carry TEEI's free programmes, measured: Chime video, Bedrock checks and who decides, monitoring, and how releases are verified.
The programme
On this page
- How it fits together
- At a glance
- How it is put together
- Live video and captions
- Attendance: hours that start as meeting events
- The test room: every room, opened in its roles
- AI on Amazon Bedrock, and the checks around it
- Speech and media
- Events and analytics
- Data safety and the database move
- Monitoring from outside
- Security and the account guard
- Proofs, PDFs and images
- Build and release: the CodeBuild lane, and why it is off
- Built, not yet open
- The rest of the plumbing
- Frequently asked questions
Live video, attendance, AI checks, monitoring and builds. Measured on the live account on 14 and 15 October 2026.
TEEI’s free programmes connect people from Ukraine, and women from Latin America and the Caribbean, with volunteers who help them practise a language and build a career. The Educational Equality Institute runs those programmes on its own platform: TEEI Language, then Skills Academy, then TEEI Mentorship, with Evenhall by TEEI as the workspace for partner companies. The web front ends run on Cloudflare. Much of the work behind them runs on Amazon Web Services.
This article goes through the AWS services that carry that work and what each is for, how much each was used over 30 days in September and October 2026, every AI check that runs on Amazon Bedrock and who makes the final decision after it, and how the build lane on AWS CodeBuild worked and why it was switched off. Every number was read from the live account or from the infrastructure code on 14 and 15 October 2026. Rounded figures say “about”.
Built through volunteer contributions. TEEI’s software platforms are built through volunteer work, with NOK 0 spent on paid software development. Infrastructure and third-party services are separate from that figure.
How it fits together
A person opens TEEI Language on a phone. The page comes from Cloudflare. When they join a session, the Worker authenticates the request and asks AWS for a meeting; from then on their voice goes through the Chime media service in Ireland. When they leave, Chime tells EventBridge in Frankfurt, a forwarder tells the platform, and the platform settles the hours that a volunteer’s record and a partner company’s report are later built from. If they chat, a model on Bedrock flags concerns for a person to review. Outside the session, monitors on AWS watch the Cloudflare side every few minutes, findings land as tickets on the team’s board, and the code behind all of it is verified on one EC2 build machine before it ships.
All of that exists for conversations like the ones Oksana K. describes.
One of TEEI’s volunteers works at AWS. In a career film for TEEI Mentorship, Dana A. tells people starting out in software how she got there.
At a glance
| Measure | Figure | Note |
|---|---|---|
| Account | ||
| AWS accounts | 1 | every Region below sits in the same account |
| Regions in use | 4 | Ireland for almost everything; Frankfurt for video control, attendance and an off-Region backup; London for a video test environment; Oregon for device testing only |
| CloudFormation stacks | 46 | written in AWS CDK (TypeScript) |
| Compute | ||
| AWS Lambda functions | 82 | 64 in Ireland, 10 in Frankfurt, 8 in London |
| Lambda invocations | 288,872 | in the 30 days to 14 October |
| Live video and captions | ||
| Amazon Chime SDK attendee-minutes | 142,536 | 1 July to 13 October 2026 |
| Amazon Transcribe streaming audio | 27,074 s | the same period, about seven and a half hours of captions |
| AI | ||
| Models in product features | 2 | Claude Sonnet 4.6 and Claude Haiku 4.5 on Amazon Bedrock, through the EU cross-Region inference profile |
| AI checks live for participants | 5 | each with a named final decision maker, below |
| Amazon Bedrock Guardrails checks | 72,427 | in 30 days, input and output |
| Monitoring and builds | ||
| Amazon CloudWatch alarms | 176 | with 100 log groups and one dashboard |
| AWS CodeBuild builds | 9,751 | all on record; the lane was switched off on 11 October 2026 |
How it is put together
One account, three working Regions. TEEI uses a single AWS account. Ireland holds the API, the functions, the tables, the AI calls, the monitoring and the build machine. Frankfurt is where the Amazon Chime SDK control plane runs for TEEI’s meetings and where meeting events arrive, so attendance processing, an independent evidence trail and an off-Region copy of the database backups sit there. The audio and video themselves flow through the Chime media service in Ireland. London holds a separate video test environment, a complete second copy of the video path built for end-to-end testing. Oregon holds no deployed resources: AWS Device Farm there gives remote access to real iPhones for testing.
Everything is code. The whole estate is one AWS CDK project in TypeScript. Six stacks are built on every deploy: the foundation (encryption key, buckets, budgets, the alert topic), the data stack (DynamoDB tables, an event bus, the analytics store, the database export bucket), the launch stack (the API and nearly every product function), the alarm stack, and two attendance stacks in Frankfurt. Every other stack, from monitoring to build lanes to database hosts, needs an explicit flag at deploy time, so a plain deploy cannot bring anything up by accident. Four small CDK apps sit beside the main one: the video test plane and evidence trail, two PDF renderers, and the security sources. 46 stacks exist today, 40 in Ireland, 4 in Frankfurt and 2 in London.
One signed door. TEEI Language, Skills Academy and TEEI Mentorship run on Cloudflare Workers, and those Workers hold no AWS keys. Every call they make to AWS is an HTTPS request to one Amazon API Gateway HTTP API with 32 routes. Every request is authenticated before a product function runs. The credential never carries a person’s account id or email address. The authorizer ran 25,101 times in 30 days. It is kept warm with provisioned concurrency, and so is the video-session function, so the first join of the morning does not wait for a cold start. A separate health route lets every deploy prove that the Workers and AWS agree on the signing keys before it goes live; it answered 17,474 times.
A few narrow exceptions. Some renderers (share cards and the company contribution reports) are reached through Lambda function URLs with AWS IAM authentication. Each caller holds a credential that can do one thing: invoke that one function. A small number of other narrowly scoped credentials serve staff tools. Evenhall calls Amazon Bedrock with its own credential, through the EU cross-Region inference profile.
Most of the work is watching. Of the 288,872 Lambda invocations in the 30 days to 14 October, about half delivered findings to the team’s board or watched the platforms from outside. The signed door and its health route took about one in seven. The AI functions, the five checks described below included, made 331 calls between them.
Live video and captions
Every TEEI Language and TEEI Mentorship session, one-to-one or in a group, is an Amazon Chime SDK meeting, and so are Skills Academy’s live sessions. When a person opens the session room, the Worker first checks that they belong in that booking. Only then does it ask the video-session function for a meeting and an attendee token. The function creates or reuses the meeting, returns the token and keeps no state of its own. From that moment audio and video travel directly between the browser and the Chime media service in Ireland; none of it passes through TEEI’s servers.
In the 30 days to 13 October the video-session function ran 5,839 times, and Lambda recorded no execution errors. Use grew through the summer, from 215 attendee-minutes in the first full week of July to 17,036 in the week from 21 September; an attendee-minute is one person connected to a meeting for one minute.
Voice Focus echo reduction ran on practically all of those minutes from August onwards.
The room’s small signals ride on Chime data messages: in-call chat, raised hands, reactions, and mute and away state. Screen sharing uses Chime content share, and a host can remove a participant. Live captions are Amazon Transcribe streaming, started through Chime. They are opt-in, and in a one-to-one session both people have to agree before captions start. Transcribe identifies the language being spoken, with English as the preferred language. Captions used 27,074 seconds of streaming audio from July to 13 October.
Chime media pipelines are set up to record a short story that both people have agreed to. A recording is capped at three minutes and stops the moment either person leaves. The feature is not open to participants.
Attendance: hours that start as meeting events
Chime publishes an event to Amazon EventBridge in Frankfurt whenever someone joins, leaves or drops out, and when a meeting ends. A rule forwards those events to a small Lambda that hands each one to the platform’s ingest route; a second rule does the same for the Language staging environment. The platform then settles attendance from the event history, after the session: the time both people were connected, a five-minute minimum, settled from half an hour after the scheduled end once the room is empty, waiting up to four hours past that end for a conversation that runs over. That settlement is what verified volunteer hours are built from.
Those hours belong to volunteers like Heidi B., who comes to every session with a topic ready.
In the 30 days to 13 October the production forwarder ran 10,068 times. 33 attempts failed and were retried. An event that still fails lands in a dead-letter queue, and a drain function replays that queue every 15 minutes. On 14 October all 14 queues in the account, the 11 dead-letter queues included, were empty.
A third rule writes an independent receipt of the main Chime meeting events, eight types in all, into a versioned S3 bucket, with no names, email addresses or join tokens in it: 23,234 receipts in those 30 days. An audit can compare that trail with what the platform recorded. Every hour a canary checks that the routing rule still exists and is enabled, and sends a synthetic event all the way through (722 runs).
The test room: every room, opened in its roles
The London test environment also has a page of its own. It lists every room TEEI runs on Amazon Chime SDK, from the booked one-to-one session and the Speaking Café to TEEI Meetings and Skills Academy’s webinars: 25 rows on 16 October 2026. Nothing on it is typed in by hand. The page is computed when it loads, from the same code the rooms run: who may speak, who holds the host tools, whether captions are offered, how many video tiles are shown, and where TEEI’s settings differ from the SDK’s defaults, each with a link to the line of code that decides it.
Every room below opens with one press, signed in as one of the demo personas: the sample learners, volunteers and hosts from TEEI’s public tours. The environment has its own database, so no participant’s data is in it. The rooms are open to anyone reading this.

One press
You are in the room as a listener, with the AWS trace open beside it.
Enter the webinar as a listener as the host
Open the host in one tab and a listener in another to see both sides.
Join, step by step measured 15 October 2026
- 1Who may enter0 ms
- 2Meeting lease95 ms
- 3Signed token0 ms
- 4API Gateway125 ms
- 5Meeting Lambda52 ms
- 6Mediayour browser, straight to Amazon Chime SDK
- 1The room. The host is Fatima Al-Sayed, a demo persona; you join muted, as a listener.
- 2One press joins. Step one, who may enter, is decided before anything reaches AWS.
- 3The AWS trace: Join, Media, Capabilities, Captions, Events, Settle and Fault path.
- 4The join token, decoded. The Worker removes the account id before it writes the trace.
Twelve rooms, one press each
All 25 rows, with the code behind eacheveryone speaksthe host presentslisteners are invited up
TEEI Language
Booked one-to-one
Everyone speaks
TEEI Language
Speaking Café
Everyone speaks
TEEI Language
Workshop
The host presents held by the room
TEEI Language
Peer practice
Everyone speaks
TEEI Language
Guest in a call
Everyone speaks
TEEI Mentorship
Booked mentoring
Everyone speaks
TEEI Mentorship
Group mentoring
Everyone speaks
Skills Academy
Webinar
Invited up to speak Chime enforces
Skills Academy
Class
Everyone speaks
Skills Academy
Expert Q&A
Invited up to speak Chime enforces
TEEI Meetings
Meeting
Everyone speaks
TEEI Meetings
Webinar
Invited up to speak Chime enforces
Each button opens the room in a new tab, in that role. A running room is reused; if its demo personas are all in other rooms, you land on the overview and press again a few minutes later.
Once you are in, a panel beside the room shows what happened on AWS. A group room or a meeting lets you in as it opens; a one-to-one call waits for you to press Join:
- Join: each step of the join with its timing, the AWS X-Ray trace id, and which function answered.
- Media: packet loss, round-trip time, the video layer being received, the audio profile, and whether Voice Focus is on.
- Capabilities: in a Skills Academy webinar, the
UpdateAttendeeCapabilitiescall made when the host invites a listener to speak, as sent and as answered. - Captions: Amazon Transcribe captions in a one-to-one session, with a count of the caption bytes that passed through TEEI’s servers. The count stays at zero, because the captions reach the browser from Chime.
- Events: every EventBridge event for the meeting, the fields the forwarder sends, what the ingest did with it, and its receipt in S3 once the independent rule has written it.
- Settle: the attendance settlement, run for this one room at once instead of after the usual wait, with its outcome and the time both people were connected.
- Fault path: in the test environment only, the ingest can be set to refuse the next event. A reader then watches that event refused three times, land in the dead-letter queue, and come back stored when the queue is drained.
Inside the trace



Source: TEEI, captured in the London test environment on 15 October 2026, with demo personas only. Identifiers are removed from the images.
On 15 October 2026 a scripted walk with two browsers joined a Skills Academy webinar in the test room as host and listener, and passed all 23 of its steps. The listener raised a hand, the host invited them to speak, and the capability call answered with HTTP 200 in 115 ms. The meeting’s events arrived with their S3 receipts. An earlier walk the same day ran the fault path end to end: three refusals, the event in the dead-letter queue, and the event stored after the drain.
AI on Amazon Bedrock, and the checks around it
The AI checks at TEEI run on Claude Sonnet 4.6 in Amazon Bedrock, called through the EU cross-Region inference profile, so requests are processed inside EU Regions. The product functions share one configuration: that model, and a shared Bedrock guardrail at a pinned, numbered version. The infrastructure refuses to deploy a draft guardrail version.
Five AI checks run for participants today.
Volunteer screening. When someone applies to volunteer, the model reads the application at temperature zero through a forced tool and returns a structured verdict: a decision, red flags, ambiguities, positive signals, a confidence score and a seriousness rating. The application is passed to the model as untrusted data. Only the decision, the counts and the token numbers are recorded; the application text is not. Automatic approval is restricted to TEEI Language conversation partners who pass screening; mentors and course teachers always go to a person, whatever the verdict. 99 screenings ran in 30 days.
Chat safeguarding. The model flags chat concerns for staff, who decide how to respond. It never acts by itself. The message text is not recorded. 81 checks ran in 30 days.
The help assistant. It answers only from TEEI’s help articles and checks its citations against them before an answer is shown; when it cannot answer, the person is told so and can reach a member of staff. A question that touches on safety gets emergency guidance and no model text at all. On the public website the assistant answers only from four approved public FAQ lists. It sits behind the shared guardrail. 98 questions in 30 days.
Return plans. When a volunteer has been taken off the listings and submits a plan to return, the model reports what the plan contains: eight yes or no items, anything missing, and any red flags. It does not decide. Programme rules decide, and in the most serious cases a member of staff does. The model never relists anyone. There is a matching review for learners. Three reviews ran over the same 30 days.
The group practice guide. In group practice, the volunteer leading the session can ask for a guide pitched across the learners’ levels. The volunteer decides whether to use it.
| Check | Who makes the final decision |
|---|---|
| Volunteer screening | the platform, automatically, only for Language conversation partners who pass screening; staff for everyone else |
| Chat safeguarding | staff |
| Help assistant | the assistant answers, and only with a surviving citation |
| Return plans | the platform’s policy, and staff at the strictest level |
| Group practice guide | the volunteer |
A prompt cannot ship without a passing evaluation. Every check whose prompt decides something has an evaluation guard that runs when the infrastructure is synthesised. It fingerprints the prompt, the decision rule and the output contract. If any of them changes, the fingerprint no longer matches the committed evaluation receipt, and the deploy stops until the evaluation has been run again against Bedrock and has passed.
| Check | Evaluation on record | What it must achieve |
|---|---|---|
| Volunteer screening | 75 cases | zero false automatic approvals, zero errors |
| Mentor screening | 94 cases, 360 calls | safety cases refused in at least 80 % of runs, ordinary applications passed in at least 90 % |
| Chat safeguarding | 18 cases | zero escapes, zero errors |
| Return plans (volunteers, learners) | 14 cases each | zero unsafe, zero harmful, zero failed |
| Level reading | 60 cases, five repeats, three separate sets | exact level agreement of at least 0.75, never more than one band off, zero inflated levels under adversarial input |
| Practice reply | 17 cases, 34 samples | zero on every listed fault, from errors to leaked instructions |
The last two guard features that are built but not open to participants. Our note on Practice Companion’s rooms describes all four rooms, how they are built on AWS and how the companion reads a learner’s level.



The guardrails. The shared guardrail filters harmful content and screens prompts for attacks. It refuses medical and legal advice, blocks card numbers and passwords, and masks email addresses, phone numbers, bank account numbers and similar identifiers. Practice conversations have their own role-play guardrail with a lower violence threshold, because in testing the shared one blocked 4 of 35 harmless learner lines. Practice replies receive an additional safety check on their structured output.
In 30 days the guardrails ran 72,427 checks, 40,570 on input and 31,857 on output. The role-play guardrail ran about 48,700 of them and stepped in 37 times; the shared guardrail ran about 8,600 on its pinned version and stepped in 269 times. These totals cover every guardrail in the account, evaluation runs included, which CloudWatch counts alongside live traffic.
What is recorded. TEEI leaves Bedrock model invocation logging off, so its own account keeps no copy of prompts or replies. The product functions are built to record outcomes, counts and token numbers rather than text, and each one has a per-person hourly limit and a reserved share of concurrency.
Speech and media
- Uploaded video. Participants and applicants upload testimonial, profile and work videos straight from the browser to Amazon S3 with presigned URLs (2,770 requests in 30 days). Each upload starts one AWS Elemental MediaConvert job that produces HTTP Live Streaming (HLS), an MP4 fallback and a poster frame, and a second function reports the result back to the platform: 867 jobs and 867 reports in 30 days. Deleting a video also cancels any job still running on it.
- Photographed homework. A learner can photograph handwritten work and send it to the volunteer who asked for it, through its own bucket (389 requests).
- Speech. Amazon Polly neural voices synthesised about 1,500 characters a month.
- Voice practice. A WebSocket server for spoken practice runs on Amazon ECS on AWS Fargate behind an Application Load Balancer, one task for staging and one for production. The ElevenLabs Speech Engine, which is not an AWS service, dials it, and it answers with Claude Haiku 4.5 through the EU profile behind the role-play guardrail. It is open to staff only.
Events and analytics
The platform sends product events to AWS through an events proxy (739 calls in 30 days). An event logger writes each one to DynamoDB and to an S3 analytics store in date partitions (1,063 runs), which AWS Glue describes and Amazon Athena queries. An event never carries an account id. DynamoDB holds 14 tables in all, among them the consent log, pathway progress, rate limits and email suppression, with point-in-time recovery.
Data safety and the database move
The platform’s main database is Turso (libSQL), not AWS. AWS holds the safety copies: a nightly export to S3 kept for 180 days.
The database is moving to AWS. The new home is the libSQL server on an AWS Graviton instance in its own VPC with no inbound port at all; the only way in is through Cloudflare Tunnel and Cloudflare Access. Backups stream continuously to S3, and AWS Backup takes hourly, daily and monthly recovery points into locked vaults, with a copy in Frankfurt. Every new backup object gets an S3 Object Lock retention within seconds of upload. Every minute a canary proves from outside that a request without a token is refused and that Cloudflare Access stops a request with no credentials at all. There are two hosts: one has served a demo since 5 October, and one for production was created on 11 October. Production still runs on Turso. The three locked vaults held 53, 47 and 12 recovery points on 14 October.
Monitoring from outside
The platform runs on Cloudflare, so much of its monitoring deliberately runs on AWS, where a Cloudflare outage cannot silence it.
| Watch | Runs in 30 days | Note |
|---|---|---|
| Every minute | ||
| Findings delivered as tickets | 61,535 | to the team’s board, and on events as well |
| Every five minutes | ||
| Video client-log collector | 17,282 | one run per programme |
| Portal watch from Frankfurt | 8,653 | public health, the internal scheduler heartbeat, and that each Worker can still sign in to AWS |
| Reliability monitor | 8,641 | external liveness, that the required alert rules exist, and that alerts are delivered |
| Independent snapshot collector | 8,640 | so the monitor never vouches for itself |
| CloudWatch Synthetics canary | 8,640 | through Evenhall’s public journey |
| Every hour | ||
| Observer | 720 | over Worker logs, error reports, product analytics and the support queue, with no model involved |
| Total | 114,111 | |
Behind those sit 176 CloudWatch alarms, a bridge that turns AWS alarms into Sentry events, an inbound route for Sentry’s own alerts, and AWS X-Ray tracing on the product functions. The 21 most serious alarms, among them the API’s error rate, sign-in and video-session failures and the database guards, page the team by SMS through Amazon SNS.
Security and the account guard
- AWS CloudTrail records every Region into a bucket under S3 Object Lock for a year, with write events on the database buckets.
- Amazon GuardDuty is on; a high-severity finding pages the team.
- Amazon Inspector scans the container images in Amazon ECR (13 repositories).
- AWS KMS holds seven customer-managed keys: for data, for the two database hosts, for the Frankfurt backup copy, for signing build manifests, for signing release artefacts, and for signing published impact figures.
- AWS Secrets Manager holds 63 secrets.
- GitLab CI reaches AWS through OpenID Connect, with a narrowly scoped role and no stored key.
- Public sharing of EBS snapshots is blocked for the account.
- AWS Budgets watches the account with eight budgets.
Proofs, PDFs and images
- Signed impact figures. Each published snapshot of TEEI’s impact figures is signed with an asymmetric AWS KMS key whose private half never leaves AWS, and a copy is kept in a bucket under S3 Object Lock in compliance mode for ten years. Nobody, TEEI included, can change or delete it in that time. A headless Chromium function prints the snapshot as a PDF with its digest and signature fingerprint in the footer (9 runs in 30 days).
- Company contribution reports. Evenhall’s contribution report becomes a PDF in one of two renderers: WeasyPrint (11 production runs in 30 days), or Chromium printing the same component the company sees on screen, so the PDF follows the screen (36 production runs and 107 in staging).




- Credential artwork. Every five minutes a function draws the artwork of each new credential and the look its holder chose, into Cloudflare R2: 4,364 production runs in 30 days.



- Share cards. A volunteer can share a session they teach as a card in link, feed or story format. The production renderer was created on 13 October.
Build and release: the CodeBuild lane, and why it is off
From August to October 2026, TEEI verified release candidates of TEEI Language and TEEI Mentorship on AWS CodeBuild. An AWS Step Functions state machine per product fanned the work out in one parallel step: 15 jobs for Language and 12 for Mentorship. They covered quick preflight checks; API, route and server contracts; every database migration applied to a clean database; four shards of logic tests and two of database-heavy replays; four browser shards running the full Playwright release sweep; and two advisory lanes, a secret scan with a software bill of materials and a set of journeys that prove a save survives a reload. Each job ran in a container image pinned by digest against one exact S3 object version of the candidate. The commands were embedded in the state machine, so a run could not supply its own. The result was a manifest written exactly once and signed with an AWS KMS key. A separate release executor prepared and promoted releases. 9,751 builds are on record: 5,829 logic and contract jobs, 2,749 browser jobs, 766 security scans, 267 review publications, 99 release preparations and 20 promotions, and a few dozen more for the main site, Evenhall and the video test plane.
The off switch. We could not get the parallel lane to run reliably end to end. On 11 October 2026 TEEI switched it off. An explicit IAM deny forbids starting any lane state machine or CodeBuild project, and the release scripts in the product repository refuse before they make any AWS call. CodeBuild has recorded zero build minutes from 12 October.
The lane worked hardest just before it stopped. The week from 28 September ran 3,151 builds, about a third of everything on record, and the week of the switch-off still ran 1,850. No build has started since.
What replaced it. The same job list, from the same lane definitions, now runs on one build machine: an Amazon EC2 m7i.8xlarge (32 vCPUs, with a 500 GiB gp3 volume at 16,000 IOPS) in Ireland, in the same account. Each job runs at the exact commit, results are reused only when the source tree, lockfile, job script and lane definitions all match, and the deploy accepts the manifest it writes. The machine runs from 06:00 to midnight Oslo time on an Amazon EventBridge Scheduler schedule.
The CodeBuild projects, images, roles and state machines are still deployed, switched off rather than deleted.
Built, not yet open
| Part | State on 14 October 2026 |
|---|---|
| Practice conversation, level conversation, Skills Academy feedback, recorded stories | built, behind flags, not open to participants |
| Mentor profile, career advice | deployed, no calls in 30 days |
| Voice practice | open to staff only |
Practice conversation and the level conversation open only after they pass L2SAFE, the benchmark TEEI Research built to test whether a model understands and answers a question as safely in learner language as in fluent language.
The rest of the plumbing
| Service | What it does at TEEI |
|---|---|
| Amazon EventBridge | 72 rules in Ireland, 7 in Frankfurt and 7 in London: alarm routing, findings, database guards, the Chime event rules, and the schedules that drive the watches above |
| EventBridge Scheduler | five schedules: credential artwork (twice), the observer, and the build machine’s morning start and night stop |
| AWS Step Functions | seven state machines, kept from the CodeBuild lane |
| Amazon SQS and Amazon SNS | 14 queues, all empty on 14 October; eight topics for alerts |
| Amazon ECS, Elastic Load Balancing, Amazon VPC | the voice practice service; three load balancers; five VPCs, no NAT gateways |
| Amazon EC2 | three instances: the build machine and the two database hosts |
| Amazon S3 | 43 buckets, seven of them under Object Lock |
| AWS Certificate Manager | four certificates, all in use |
Frequently asked questions
Where does TEEI's product AI run?
On Amazon Bedrock, through the EU cross-Region inference profile, so requests are processed in EU Regions.
Does an AI decide who can volunteer?
Only for TEEI Language conversation partners on a clean pass; mentors and course teachers always go to a person.
Does TEEI keep the chat messages that are checked?
No. Bedrock invocation logging is off and the check records a rating and counts, not the text.
Why did TEEI move releases off CodeBuild?
We could not get the parallel CodeBuild lane to run reliably end to end. The full release verification now runs on an Amazon EC2 instance in the same AWS account, with the same job list.