Penguin Ai automates HCC coding and risk adjustment for healthcare payers, delivering RAF accuracy, compliance, and revenue capture with explainable AI.
Penguin Ai - Intelligent HCC Coding and Risk Adjustment
Penguin Ai automates Hierarchical Condition Category (HCC) coding and risk adjustment workflows for healthcare payers and risk-bearing organizations. The platform combines clinical AI, agentic automation, and continuous validation to improve Risk Adjustment Factor (RAF) accuracy, capture risk adjustment revenue, and maintain CMS compliance - all with a human-in-the-loop for governance and oversight.
How It Works
Penguin Ai analyzes structured and unstructured clinical data across both prospective and retrospective workflows. Every output is validated against Monitoring, Evaluating, Assessing, and Treating (MEAT) criteria and CMS guidelines. The platform supports current CMS/HHS methodologies including V24 and V28 models, providing audit-ready documentation with full traceability.
Core Capabilities
HCC Identification and Validation
Automate ICD coding and HCC grouping from clinical documentation
Identify undocumented conditions and detect care gaps for prospective capture
Validate codes retrospectively to reduce audit risk and revenue leakage
Explainable AI and Human-in-the-Loop Workflow
Deliver clear clinical evidence and rationale for every recommended code
Confidence-based automation with intelligent exception routing for human review
Full transparency into AI decision-making for compliance and governance teams
RAF Scoring, Compliance, and Audit Readiness
Calculate RAF scores using current CMS/HHS methodologies (V24/V28)
Automate MEAT validation and CMS model compliance checks
Generate audit-ready documentation with complete traceability
Integration and Deployment
Penguin Ai is delivered as a container product on AWS Marketplace. The platform integrates with Electronic Health Records (EHRs), claims systems, and risk platforms to deliver explainable HCC insights within existing operational workflows. Built for enterprise healthcare environments, the solution supports PHI security with HIPAA-compliant data governance.
Key Benefits
Revenue capture: More complete HCC identification across prospective and retrospective workflows
Operational efficiency: Reduce manual coding effort across chart review and coding workflows through intelligent routing and automation
Compliance strength: CMS-aligned documentation and MEAT validation for audit defensibility
Security: PHI security and HIPAA-compliant data governance throughout the platform
Explainability: Every code recommendation includes clinical evidence and rationale, enabling confident decision-making
Getting Started
To learn more about deploying Penguin Ai in your environment or to request a personalized demo, contact the Penguin Ai team at hello@penguinai.co. The team can walk you through integration options, deployment architecture, and how the platform maps to your specific risk adjustment workflows.
Highlights
Penguin Ai automates both prospective and retrospective HCC coding workflows by analyzing structured and unstructured clinical data with healthcare-trained AI models. The platform identifies undocumented conditions, detects care gaps, and validates codes against MEAT criteria and CMS guidelines - reducing manual chart review effort while maintaining a human-in-the-loop for governance.
Every code recommendation includes clear clinical evidence and rationale, giving compliance and coding teams full transparency into AI decision-making. The platform calculates RAF scores using current CMS/HHS methodologies including V24 and V28 models, automates MEAT validation, and generates audit-ready documentation with complete traceability - strengthening audit defensibility and reducing compliance risk for healthcare payers.
Built for enterprise healthcare environments, Penguin Ai integrates with Electronic Health Records (EHRs), claims systems, and risk platforms as a container product on AWS Marketplace. The platform maintains PHI security with HIPAA-compliant data governance throughout all workflows, enabling risk-bearing organizations to deploy intelligent HCC coding automation within their existing infrastructure and operational processes.
AWS Marketplace now accepts line of credit payments through the PNC Vendor Finance program. This program is available to select AWS customers in the US, excluding NV, NC, ND, TN, & VT.
Pricing is based on the duration and terms of your contract with the vendor. This entitles you to a specified quantity of use for the contract duration. If you choose not to renew or replace your contract before it ends, access to these entitlements will expire.
Additional AWS infrastructure costs may apply. Use the AWS Pricing Calculator to estimate your infrastructure costs.
This contract combines two charges. You pay a recurring Monthly Subscription Fee for ongoing access to the platform. On top of that, you pay a Transaction fee per case, which scales with how many cases you process. The subscription covers your base access, while the per-case fee grows with your usage volume. Together, these two dimensions form your total cost: a fixed monthly component plus a variable component tied to case activity.
Top-of-mind questions for buyers
What counts as one case for the transaction fee?
A case is one patient chart processed through the platform. Each chart runs through prospective capture or retrospective recovery, where Ai Workers surface supportable HCC codes with evidence. Your coders then review each candidate before submission. Every chart you send for review counts as one case toward the per-case charge.
How do the monthly fee and the per-case fee combine on my invoice?
Both charges apply together. The Monthly Subscription Fee is a fixed recurring amount for platform access. The Transaction fee per case is variable and adds up with each chart you process. Your subscription stays steady month to month, while the per-case total rises or falls with your case volume.
Does the per-case fee change based on whether a chart is prospective or retrospective?
The pricing table lists one transaction fee per case, without separate rates for prospective capture and retrospective recovery. Both workflows run on the same platform and share one evidence model. For confirmation of how mixed prospective and retrospective volumes are counted, contact the vendor.
www.penguinai.co
Helpful?
Vendor refund policy
All fees are non-refundable. Either party may terminate for an uncured material breach (30 days' written notice, including non-payment) or if a party ceases operations. Termination ends platform access and future fees but does not refund pre-paid or unused fees. The sole exception: if Penguin Ai terminates in response to a third-party intellectual property claim, it will refund pre-paid, unused fees for the terminated portion of the term.
How can we make this page better?
Tell us how we can improve this page, or report an issue with this product.
Give us feedbackReport a problem with this product or seller
Legal
Vendor terms and conditions
Upon subscribing to this product, you must acknowledge and agree to the terms and conditions outlined in the vendor's End User License Agreement (EULA).
Content disclaimer
Vendors are responsible for their product descriptions and other product content. AWS does not warrant that vendors' product descriptions or other product content are accurate, complete, reliable, current, or error-free.
Containers are lightweight, portable execution environments that wrap server application software in a filesystem that includes everything it needs to run. Container applications run on supported container runtimes and orchestration services, such as Amazon Elastic Container Service (Amazon ECS) or Amazon Elastic Kubernetes Service (Amazon EKS). Both eliminate the need for you to install and operate your own container orchestration software by managing and scheduling containers on a scalable cluster of virtual machines.
Version release notes
Product overview
A HIPAA-aware backend service that extracts ICD-10-CM codes from medical charts and computes HCC/RxHCC risk-adjustment scores. It runs OCR over clinical documents with Amazon Textract, applies LLM extraction with Claude models on Amazon Bedrock to produce evidence-backed code suggestions, and supports a coder/auditor review workflow, chart assignment, claims, and reporting.
Key capabilities: ICD-10-CM extraction backed by the 2025 code set, midyear mappings, and coding guidelines; HCC and RxHCC risk scoring over extracted and submitted diagnoses; chart assignment with per-user capacity limits and draft/final states for both coder and auditor roles; change-log auditing of review actions; claims and reporting endpoints; ICD search across the bundled code set; admin configuration for risk-score and workflow settings, roles, and UI features; and a batch processor for bulk chart ingestion.
The service runs entirely on AWS services. It exposes a REST API (OpenAPI/Swagger) and ships as a single container image that serves both the API and the batch processor.
Product at a glance
Runtime: FastAPI + Uvicorn (Python 3.11), non-root container (user appuser) Listening port: 8000/tcp (HTTP, behind a TLS-terminating ingress) Health endpoint: GET /health returns {"status":"healthy"}. Liveness only - see Section 8. API docs: GET /docs, GET /redoc, GET /openapi.json Route prefixes: /auth, /charts, /claims, /icd_search, /reports, /admin Roles: admin, coder, coder_draft, auditor, auditor_draft State: stateless - all persistent data lives in external, buyer-owned AWS services Volumes: none required - see Section 5 Version: 1.0.1
ROOT_PATH defaults to /hcc-icd, not to root. The same image also serves a Snowflake Native App deployment, which is mounted under that prefix. If your ingress serves the API at its root, set ROOT_PATH="" or every path is prefixed and the UI and probes will 404.
Prerequisites
Provision the following in your own AWS account and supply their coordinates through environment variables or AWS Secrets Manager:
Amazon EKS or Amazon ECS - the container runtime.
Amazon DocumentDB (MongoDB-compatible, TLS) - charts, codes, users, roles, audit records. The CA certificate ships in the image at /app/global-bundle.pem. Use an instance-based 5.0 cluster so the service can authenticate with IAM through its role instead of a stored password (Section 5).
Amazon Bedrock with Claude model access enabled in the deployment Region - the inference engine for code extraction. Model access is requested per Region in the Bedrock console; a Region without it returns AccessDeniedException at runtime.
Amazon Textract - OCR for clinical PDFs and images. No endpoint or key is configured; access is granted entirely through the container's IAM role (Section 9).
Amazon S3 - source documents, generated artifacts, and the reference-data files below.
Microsoft Entra ID app registration - OAuth sign-in and role mapping. This is an identity provider only; no PHI is sent to it.
Application Load Balancer / Ingress with a TLS certificate forwarding to port 8000.
Optional: AWS Secrets Manager for JWT_SECRET and AZURE_SECRET, and Amazon ElastiCache is not used by this product.
Seed the reference data before first start. Upload these five files to data_sources/ in your S3 bucket; the service downloads any that are missing at startup, and coding is degraded without them:
icd10cm_codes_2025.csv
2025 Midyear_Final ICD-10-CM Mappings.csv
new_ICD_final.csv
ICD_codes_order.json
ICD-10-CM-April-2025-Guidelines-for-Coding-and-Reporting.pdf
Keep DocumentDB, S3, Bedrock, Textract, and the compute in the same Region so inference and OCR stay in-Region and no cross-Region data transfer occurs.
Deployment (high level)
Subscribe to the product and pull the container image from Amazon ECR (URI and tag shown on the product's Launch page):
aws ecr get-login-password --region us-east-1 | docker login --username AWS
--password-stdin 709825985650.dkr.ecr.us-east-1.amazonaws.com
docker pull 709825985650.dkr.ecr.us-east-1.amazonaws.com//hcc-icd-api:1.0.1
Provision the prerequisites in Section 3, enable Claude model access in Amazon Bedrock for your Region, and upload the five reference-data files to data_sources/ in your bucket.
Create the IAM role. One role serves the API and the batch processor:
bedrock:InvokeModel and bedrock:InvokeModelWithResponseStream on the configured model ARN.
textract:DetectDocumentText and textract:AnalyzeDocument, plus textract:StartDocumentTextDetection and textract:GetDocumentTextDetection if you process multi-page documents asynchronously.
s3:GetObject, s3:PutObject, and s3:ListBucket on the configured bucket.
secretsmanager:GetSecretValue and kms:Decrypt if you store secrets in Secrets Manager.
DocumentDB needs no IAM permission; access is granted inside the database (Section 5).
On Amazon EKS, bind the role with IRSA: associate an OIDC provider with the cluster, then create the role with a trust policy allowing sts:AssumeRoleWithWebIdentity where the provider's :sub condition equals system:serviceaccount::. Annotate the ServiceAccount with eks.amazonaws.com/role-arn=<ROLE_ARN> and set serviceAccountName on the pod spec. A single eksctl create iamserviceaccount command performs all four steps.
On Amazon ECS, pass the role as taskRoleArn. The separate executionRoleArn needs ECR pull and secret-read permissions.
Deploy on Amazon EKS: run the API as a Deployment on container port 8000 behind an Ingress with TLS, using GET /health as the health check path. Do not override the image's command; the default (uvicorn app:app --host 0.0.0.0 --port 8000) starts the API correctly.
Deploy on Amazon ECS: register a Fargate task definition with networkMode: awsvpc, 1 vCPU / 2 GB, a port mapping on container port 8000, awslogs log configuration, and taskRoleArn from step 3. Create a service behind an ALB target group (target type ip, port 8000, health check path /health). The image declares its own container health check against /health.
Set ROOT_PATH="" if the ingress serves the API at its root. The default is /hcc-icd.
Verify (Section 8): confirm /health, open /docs, sign in via GET /auth/ms/login_url, and call a protected endpoint. Then read the startup logs - see the warning in Section 8.
Scale by adding API replicas behind the load balancer. Batch chart processing runs separately as a scheduled task from the same image with the command python -m batch.processor, configured by BATCH_SOURCE_TYPE and BATCH_S3_BUCKET.
Configuration (high level)
Configuration is environment-variable driven. Store secrets in AWS Secrets Manager or SSM Parameter Store and inject them as environment variables; never bake them into the image.
Application:
ROOT_PATH - mount prefix. Defaults to /hcc-icd; set to "" to serve at the ingress root.
CODING_CAPACITY, AUDITING_CAPACITY - per-user chart assignment limits.
Backend selection:
DB_TYPE - set to documentdb for an AWS deployment.
CLOUD_PROVIDER - set to aws.
Database:
MONGO_URI, MONGO_DATABASE - DocumentDB connection. See "Connecting to DocumentDB with IAM" below.
Note that MongoDB settings are read at startup regardless of DB_TYPE in order to seed default UI features. On an AWS deployment DB_TYPE=documentdb already supplies them, so no extra configuration is needed.
Storage:
AWS_REGION - Region for S3, Textract, and Secrets Manager.
AWS_BUCKET_NAME - bucket holding documents, artifacts, and the data_sources/ reference files.
Inference (Amazon Bedrock):
BEDROCK_REGION - the Region whose Bedrock endpoint serves inference. Set it to a Region where Claude model access is enabled; keeping it equal to AWS_REGION avoids cross-Region PHI transfer.
BEDROCK_MODEL_ID - the Bedrock model identifier. Bedrock model IDs carry an anthropic. prefix, for example anthropic.claude-opus-5. To use cross-Region capacity, supply a cross-Region inference profile instead (identifiers are prefixed by geography, such as us.anthropic.claude-opus-5, and may also be given as a full inference-profile ARN).
OCR (Amazon Textract): no configuration keys. OCR runs in AWS_REGION and is authorized entirely by the container's IAM role.
Authentication:
AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_APP_ID, AZURE_SECRET - Microsoft Entra ID app registration.
JWT_SECRET - signs the API's own access and refresh tokens.
ACCESS_TOKEN_EXPIRE_MINUTES, REFRESH_TOKEN_EXPIRE_MINUTES - token lifetimes.
Batch processor: BATCH_SOURCE_TYPE, BATCH_S3_BUCKET.
Connecting to DocumentDB with IAM. Authenticate with IAM authentication through the container's role, so no database password is stored anywhere. The connection is entirely URI-driven and the CA certificate is already in the image, so set MONGO_URI to:
mongodb://:27017/?authMechanism=MONGODB-AWS&authSource=%24external&tls=true&tlsCAFile=/app/global-bundle.pem&retryWrites=false&replicaSet=rs0
Notes on that string:
authSource=%24external - the $ must be URL-encoded, or the driver rejects the URI.
retryWrites=false is required by DocumentDB.
tlsCAFile=/app/global-bundle.pem points at the CA already shipped in the image. Do not mount over that path.
No username or password appears in the URI; credentials are resolved from the container's IAM role by the AWS credential chain.
Authorization is granted in the database, not in IAM. No IAM policy grants DocumentDB access. Connect once as the DocumentDB primary user and map the role ARN to a database user:
use $external;
db.createUser({
user: "arn:aws:iam::<ACCOUNT_ID>:role/<ROLE_NAME>",
mechanisms: ["MONGODB-AWS"],
roles: [ { role: "readWrite", db: "<MONGO_DATABASE>" } ]
});
IAM authentication requires an instance-based DocumentDB 5.0 cluster and cannot be used for the cluster's primary user. If your cluster cannot meet that, put a password in MONGO_URI instead and rotate it as described in Section 7.
Ports: 8000/tcp is the only listening port. The batch processor opens no ports.
Volumes: none are required. The container writes to two directories it creates at build time, /app/uploads (transient uploads) and /app/data_sources (reference files downloaded from S3 at startup); both are owned by the non-root user and ephemeral storage is sufficient. Mounting a persistent volume at /app/data_sources is optional and only avoids re-downloading the reference files on every start. Application code and the CA bundle are shipped read-only; do not mount over /app/global-bundle.pem.
Data, sensitive information and encryption
Where data is stored - the container holds no durable data, and all of it stays inside your own AWS account:
Charts, extracted codes, risk scores, users, roles, and audit records go to Amazon DocumentDB (buyer-owned).
Source documents, generated artifacts, and reference data go to Amazon S3 (buyer-owned).
Secrets go to AWS Secrets Manager (buyer-owned).
Clinical text is sent to Amazon Bedrock for inference and to Amazon Textract for OCR. Both are AWS services, both are HIPAA-eligible, and both are covered by your AWS Business Associate Addendum. No PHI leaves AWS.
Amazon Bedrock does not retain your prompts or completions, and does not use them to train models.
Microsoft Entra ID is used for sign-in only. It receives authentication traffic, not PHI.
Encryption:
In transit: TLS everywhere. The ingress terminates HTTPS; DocumentDB connections use TLS with the bundled CA; all AWS SDK calls, including Bedrock and Textract, use HTTPS.
At rest: enable AWS KMS encryption on DocumentDB, S3, and Secrets Manager when you provision them.
7. Credentials and rotation
Because inference, OCR, storage, and the database all authenticate through the container's IAM role, there are few long-lived secrets. Rotate what remains on your normal cadence (90 days or less):
JWT_SECRET - rotating it invalidates every outstanding access and refresh token and forces all users to sign in again. Plan the rollout accordingly.
AZURE_SECRET - the Entra ID client secret. Rotate before expiry and overlap old and new during cutover.
DocumentDB credentials - with IAM authentication there is no database password to rotate. If you embedded one in MONGO_URI, use managed rotation and redeploy.
Amazon Bedrock and Amazon Textract - no credentials to rotate; access is authorized by the IAM role and the credentials behind it are short-lived and rotated automatically.
AWS access: use IRSA on EKS or the task role on ECS. Avoid long-lived access keys.
global-bundle.pem in the image is a public certificate authority bundle, not a secret.
Backup, recovery and health
Backup / recovery:
Amazon DocumentDB (system of record): enable automated snapshots and point-in-time recovery. To recover, restore to a new cluster and repoint MONGO_URI.
Amazon S3: enable versioning, and cross-Region replication if you need regional DR. Keep the five data_sources/ reference files in any replacement bucket.
For regional DR, confirm Claude model access is enabled in Amazon Bedrock in the failover Region as well; model access is granted per Region and does not follow a restored cluster.
Because the container is stateless, DR is: restore DocumentDB and S3, redeploy the image, repoint the configuration.
Health monitoring:
GET /health returns {"status":"healthy"} and is the correct load balancer and liveness path.
Startup is deliberately fault-tolerant, so a passing health check is not proof the service is working. Database, storage, and reference-data errors during startup are logged and the API still starts, so that /docs stays reachable for diagnosis. /health will report healthy even if DocumentDB never connected or the reference files failed to download. Always read the startup logs after deploying and confirm the line Application startup completed successfully; if you instead see Error during startup (app will continue), the deployment is degraded.
Confirm running replicas match desired in the EKS or ECS console.
Send container logs to CloudWatch Logs.
Recommended alarms: container restarts and crash-loops; replicas below desired; HTTP 5xx rate; DocumentDB CPU and connection count; Bedrock throttling and invocation errors (the InvocationThrottles and InvocationClientErrors CloudWatch metrics under AWS/Bedrock); Textract throttling; and the startup error line above.
Verification steps:
1. The process is up (use this as the ALB health check path).
4. Sign-in is configured (returns the Microsoft authorization URL).
curl -s https:///auth/ms/login_url
5. Bedrock model access is granted in the configured Region.
aws bedrock list-foundation-models --region <BEDROCK_REGION>
--query "modelSummaries[?contains(modelId,'anthropic')].modelId" --output text
6. Reference data loaded and dependencies connected - check the startup logs.
If step 3 returns 404, ROOT_PATH is still /hcc-icd and every path is prefixed.
Service quotas, IAM and pricing
Service quotas - request increases proactively via Service Quotas:
Amazon Bedrock per-model requests-per-minute and tokens-per-minute is the primary scaling constraint for extraction. Throttling surfaces as ThrottlingException; raise the quota or adopt a cross-Region inference profile to spread load.
Amazon Textract transactions per second bound OCR throughput.
Also monitor EKS nodes or ECS tasks, and DocumentDB instances and connections.
IAM (least privilege). The role listed in Section 4, step 3 is the complete set. Bind it with IRSA on EKS or as taskRoleArn on ECS. On ECS the separate execution role additionally needs ECR pull and secret-read permissions; on EKS the node role needs ECR pull.
DocumentDB needs no IAM permission. Even though the service authenticates to it with this same role, access is granted inside the database by mapping the role ARN to a DocumentDB user (Section 5). Adding IAM permissions will not fix a DocumentDB authorization failure, and rds-db:connect is an Amazon RDS action that does not apply to DocumentDB.
Pricing - software is billed through AWS Marketplace at the listed rate. You separately pay standard AWS rates for the infrastructure you run it on: EKS or ECS compute, DocumentDB, S3, Secrets Manager, the load balancer, CloudWatch, Amazon Bedrock per-token inference, and Amazon Textract per-page OCR. Bedrock token spend is typically the largest variable cost. Because every dependency is an AWS service, the whole deployment can be modeled in the AWS Pricing Calculator.
Security and compliance (PHI)
This product processes Protected Health Information. Every service in the data path is an AWS service, so a single AWS Business Associate Addendum covers it. To operate in a HIPAA-eligible manner:
Execute an AWS Business Associate Addendum and use HIPAA-eligible AWS services. Amazon Bedrock, Amazon Textract, Amazon DocumentDB, Amazon S3, Amazon EKS, Amazon ECS, and AWS Secrets Manager are all HIPAA-eligible.
Enable KMS encryption at rest and TLS in transit; run workloads and data stores in private subnets, exposing only the load balancer.
Use VPC endpoints for Bedrock, Textract, S3, and Secrets Manager so PHI-bearing traffic never traverses the public internet.
Restrict the container security group so port 8000 is reachable only from the load balancer.
Restrict CORS to your frontend origin at the ingress. The application ships with a permissive CORS configuration, so origin filtering should be enforced in front of it.
Scope the IAM role to least privilege and keep the container non-root. Application code and the CA bundle are already shipped read-only.
Do not enable debug logging that could capture PHI.
Enable Bedrock model invocation logging to CloudWatch or S3 if your compliance program requires an inference audit trail. Those logs contain prompts and completions, so treat the destination as PHI storage.
11. Upgrades and release notes
Upgrades are a rolling image replacement with no destructive migration:
Review the release notes for the target version and any new or changed configuration.
Snapshot DocumentDB and confirm S3 versioning.
Pull the new image tag and update the Deployment or ECS service. Update the batch processor's task to the same tag so both run the same version.
Verify with the checks in Section 8, including the startup log line - a passing /health alone does not prove a good upgrade.
Roll back to the prior tag if needed; rollback is immediate since no destructive migration runs.
If a release changes the default BEDROCK_MODEL_ID, confirm you have been granted access to the new model in Amazon Bedrock for your Region before rolling out.
Release notes (v1.0.1 - initial release): ICD-10-CM extraction backed by the 2025 code set, midyear mappings, and coding guidelines; HCC and RxHCC risk scoring; coder and auditor workflow with capacity limits, draft and final states, and change-log auditing; claims and reporting; ICD search; admin configuration for risk scores, workflow, roles, and UI features; clinical-document OCR via Amazon Textract; LLM extraction via Claude models on Amazon Bedrock; and a batch processor for bulk ingestion. Hardened non-root container on Python 3.11 with application code and certificates shipped read-only, and TLS-enforced DocumentDB connectivity with passwordless IAM authentication. Future releases are labeled Critical (security), Important, or Optional.
Support
This product is provided by Penguin AI. For product support, questions, or issues, contact support@penguinai.co. AWS infrastructure issues are handled through AWS Support. A running instance serves its interactive API reference at /docs and /redoc.
Additional details
Usage instructions
HCC & ICD Coding API - Usage Instructions
HIPAA-aware FastAPI service (Python 3.11): ICD-10-CM extraction from medical charts plus HCC/RxHCC risk scoring, with coder/auditor review. Non-root, port 8000/tcp.
PREREQUISITES
Amazon EKS, ECS, or a Docker host; ALB with TLS to port 8000.
Amazon DocumentDB 5.0 instance-based (TLS).
Amazon Bedrock with Claude model access in the deploy Region.
Amazon Textract (OCR): no keys; uses the container role.
Amazon S3: documents, artifacts.
Microsoft Entra ID app registration.
Seed reference data: upload the five ICD-10-CM code, mapping, order and guideline files to data_sources/ in the bucket, else coding degrades.
PULL IMAGE (ECR login first; URI on the Launch page)
docker pull 709825985650.dkr.ecr.us-east-1.amazonaws.com/<ns>/hcc-coding:1.0.1
IAM ROLE
One role serves the API and the batch job: bedrock:InvokeModel(+WithResponseStream) on the model
ARN; textract:DetectDocumentText and AnalyzeDocument; s3:GetObject/PutObject/ListBucket;
secretsmanager:GetSecretValue; kms:Decrypt.
EKS (IRSA): associate an OIDC provider, then create the role with a trust policy allowing
sts:AssumeRoleWithWebIdentity where its :sub equals system:serviceaccount:hcc:hcc-sa. One
"eksctl create iamserviceaccount" does this plus the two kubectl steps in 4.
ECS: pass it as taskRoleArn; the separate executionRoleArn needs ECR pull + secret read.
DEPLOY (host/ALB -> container port 8000)
EKS:
kubectl create ns hcc && kubectl create sa hcc-sa -n hcc
kubectl annotate sa hcc-sa -n hcc eks.amazonaws.com/role-arn=<ROLE_ARN>
kubectl create deploy hcc-api -n hcc --image=<IMAGE> --port=8000
kubectl set serviceaccount deploy/hcc-api hcc-sa -n hcc
kubectl set env deploy/hcc-api -n hcc ROOT_PATH= DB_TYPE=documentdb CLOUD_PROVIDER=aws
AWS_REGION=<r> AWS_BUCKET_NAME=<b> MONGO_URI=<uri> BEDROCK_REGION=<r> BEDROCK_MODEL_ID=<id>
kubectl expose deploy/hcc-api -n hcc --port=80 --target-port=8000
kubectl rollout status deploy/hcc-api -n hcc
Add an Ingress with TLS to that Service; keep secrets in a Secret.
ECS: Fargate task definition, networkMode awsvpc, 1 vCPU / 2 GB, containerPort 8000, taskRoleArn
from 3, awslogs, no command override; service behind an ALB target group (type ip, port 8000,
health /health).
Docker (evaluation):
docker run -d -p 8000:8000 -e ROOT_PATH= -e DB_TYPE=documentdb -e CLOUD_PROVIDER=aws
-e AWS_REGION=<r> -e AWS_BUCKET_NAME=<b> -e MONGO_URI=<uri> <IMAGE>
CONFIGURATION
SET ROOT_PATH="" if the ingress serves the API at its root - it defaults to /hcc-icd and
otherwise prefixes every path.
Required: DB_TYPE=documentdb, CLOUD_PROVIDER=aws, AWS_REGION, AWS_BUCKET_NAME, MONGO_URI,
MONGO_DATABASE, BEDROCK_REGION, BEDROCK_MODEL_ID (anthropic. prefix, e.g.
anthropic.claude-opus-5, or an inference profile ARN), AZURE_TENANT_ID/CLIENT_ID/APP_ID/SECRET,
JWT_SECRET.
DocumentDB uses IAM auth via the same role. MONGO_URI (note %24external):
mongodb://<ep>:27017/?authMechanism=MONGODB-AWS&authSource=%24external&tls=true&tlsCAFile=/app/global-bundle.pem&retryWrites=false&replicaSet=rs0
No IAM policy grants DocumentDB: run db.createUser in $external naming the role ARN.
PORTS: 8000/tcp only. VOLUMES: none (ephemeral covers /app/uploads, /app/data_sources).
VERIFY
curl https://<host>/health -> {"status":"healthy"}
curl -o /dev/null -w '%{http_code}\n' https://<host>/docs -> 200 (404 = ROOT_PATH still set)
aws bedrock list-foundation-models --region <BEDROCK_REGION> -> lists anthropic.* models.
kubectl -n hcc get pods; kubectl -n hcc logs deploy/hcc-api | grep "startup completed"
IMPORTANT: startup is fault-tolerant - DB, storage and reference-data errors are logged and the
API still starts, so /health can report healthy when nothing connected. That grep is the real check.
SECURITY AND SUPPORT
One AWS BAA covers the whole path; no PHI leaves AWS. Private subnets, ingress only; VPC endpoints for Bedrock/Textract/S3; KMS at rest, TLS in transit.
For support inquiries, product questions, or to request a demo, contact the Penguin Ai team at support@penguinai.co. The team can assist with deployment guidance, integration questions, and ongoing platform usage.
AWS infrastructure support
AWS Support is a one-on-one, fast-response support channel that is staffed 24x7x365 with experienced and technical support engineers. The service helps customers of all sizes and technical abilities to successfully utilize the products and features provided by Amazon Web Services.
Penguin Ai automates the full prior authorization lifecycle for healthcare payers - delivering faster approvals, lower costs, and audit-ready compliance beyond CMS-0057-F.
Penguin Ai automates CPT, ICD-10, and HCPCS code assignment from clinical documentation using healthcare-trained AI with human-in-the-loop oversight for providers.
Be the first to review this product. We've partnered with PeerSpot to gather customer feedback. You can share your experience by writing or recording a review, or scheduling a call with a PeerSpot analyst.