AI-Powered Hormonal Health Platform Built in 8 Weeks

femmflo · Healthcare · 2025 · source Agentic: yes · promotional bias: high · source-backed · extracted with prompt 0.5.4 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Women's hormonal health AI platform

FemmFlo wanted to launch a personalized hormonal-health assistant quickly for underserved women while handling sensitive medical data, culturally localized advice, lab results, clinical guidelines, and healthcare hallucination risk.

Constraints:

Architecture

FemmFlo and Millio AI built Gabby as an AWS Bedrock agent behind an API Gateway and interface Lambda. Open Web UI on ECS Fargate provided the testing/chat interface, while EFS and RDS supported uploads and conversation history. The interface Lambda retrieves onboarding context from DynamoDB, sends traces to Langfuse, and invokes the Bedrock agent with prompt, tool, and guardrail configuration. The agent can call a Lambda tool that retrieves structured lab results from S3; uploaded lab PDFs are first converted through a structured extraction process. A science officer validates responses in the controlled testing workspace before logic is promoted to the mobile app.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  open-web-ui["open-web-ui"] --> api-gateway["api-gateway"]
  open-web-ui --> ecs-fargate["ecs-fargate"]
  open-web-ui --> elastic-file-storage["elastic-file-storage"]
  open-web-ui --> rds-conversation-store["rds-conversation-store"]
  api-gateway --> interface-lambda["interface-lambda"]
  interface-lambda --> dynamodb-onboarding-store["dynamodb-onboarding-store"]
  interface-lambda --> langfuse-observability["langfuse-observability"]
  interface-lambda --> bedrock-agent["bedrock-agent"]
  bedrock-agent --> bedrock-guardrails["bedrock-guardrails"]
  bedrock-agent --> lab-results-tool["lab-results-tool"]
  lab-results-tool --> s3-lab-results-store["s3-lab-results-store"]
  structured-lab-extraction["structured-lab-extraction"] --> s3-lab-results-store
  s3-lab-results-store --> lab-results-tool
  bedrock-agent --> science-officer-review["science-officer-review"]
  science-officer-review --> mobile-app["mobile-app"]
  langfuse-observability --> evaluation-framework["evaluation-framework"]
  evaluation-framework --> bedrock-agent
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
open-web-ui Chat-style test and user interface with conversation history, file upload, and user separation. api-gateway, ecs-fargate, elastic-file-storage, rds-conversation-store
ecs-fargate Runs the Open Web UI deployment without managing servers. open-web-ui
elastic-file-storage Stores uploaded files for the Open Web UI environment. open-web-ui
rds-conversation-store Stores conversation history for the Open Web UI environment. open-web-ui
api-gateway Secures and throttles calls from the interface to the agent backend with API keys, rate limits, and throttling. open-web-ui, interface-lambda
interface-lambda Central orchestration function that fetches onboarding context, records observability traces, and invokes the Bedrock agent. api-gateway, dynamodb-onboarding-store, langfuse-observability, bedrock-agent
dynamodb-onboarding-store Stores user onboarding data used as context at the start of conversations. interface-lambda
langfuse-observability Captures traces of questions, agent reasoning, tool decisions, and response paths for debugging and evaluation. interface-lambda, evaluation-framework
bedrock-agent Managed AWS agent configured with objective, prompt behavior, tools, and guardrails to answer user health questions. interface-lambda, bedrock-guardrails, lab-results-tool, science-officer-review
bedrock-guardrails Safety layer that refuses inappropriate or disallowed healthcare topics. bedrock-agent
lab-results-tool Lambda tool that retrieves structured lab results when the agent needs lab context. bedrock-agent, s3-lab-results-store
s3-lab-results-store Stores structured lab results extracted from uploaded lab-report PDFs. lab-results-tool, structured-lab-extraction
structured-lab-extraction Converts uploaded lab-result PDFs into structured data usable by the agent and downstream systems. s3-lab-results-store, science-officer-review
science-officer-review Clinical review gate for validating Gabby's responses, prompts, guardrails, and guideline alignment before app promotion. bedrock-agent, structured-lab-extraction, mobile-app
evaluation-framework Human and LLM-based evaluation suite covering health questions, lab questions, user-profile questions, adversarial prompts, latency, and cost. langfuse-observability, bedrock-agent
mobile-app Production user application that receives promoted logic after testing and science-officer validation. science-officer-review

Data flow

A user onboards with geographic, health, mental-health, and personalization context, then chats with Gabby or uploads lab results. The UI calls API Gateway, which routes to an interface Lambda. The Lambda fetches onboarding context from DynamoDB, records traces in Langfuse, and invokes the Bedrock agent. The agent receives its objective, prompt configuration, tools, and Bedrock guardrails; when lab context is needed, it calls a Lambda tool to retrieve structured S3 lab results produced from uploaded PDFs. In the testing workflow, Gabby's answer is checked against user data and clinical guidelines by the science officer before the same logic is promoted to the mobile app.

5 supporting quotes
“At the core sits the bedrock agent, orchestrating on boarding, check-ins, daily check-ins, and the lab results, while the API gateway makes it simple to connect everything back into the app.”transcript, implied
“the API communicated with what we called an interface lambda, the agent interface lambda, which was sort of one of the central compute units”transcript, stated
“grabbing the users onboarding data from Dynamob and this was done so that the agent could have context text um and know kind of who it's speaking to”transcript, implied
“the tool we gave it access to in this case just one um uh for the first iteration at least of this project was the tool that grabbed lab results”transcript, implied
“the lab data comes in the guideline is retrieved the user context is then applied answer is checked by the science officer and only then it can be shipped to the app.”transcript, stated

Why this architecture

The architecture favors managed AWS services and a simple retrieval design because the team needed a secure healthcare MVP in eight weeks. Bedrock Agent centralizes agent configuration, tools, and guardrails; API Gateway and Lambda keep integration lightweight; DynamoDB and S3 are enough because the first knowledge base is small and structured; Langfuse and the evaluation framework make behavior inspectable; and science-officer review protects medical accuracy before release.

4 supporting quotes
“AWS make all of this practical by having a single managed backbone. Ingestion, storage, retrieval, model inference and even testing UIs and mobile apps are all powered by AWS”transcript, stated
“we didn't use a vector store in this case and it wasn't required because uh most of the data we had that we had to retrieve was quite small and it was already structured”transcript, stated
“The science officer from FEMF flow can validate the results and we can promote all of those updates to the app within days.”transcript, implied
“All of this runs on AWS services. So the path from being tested to being deployed is very clean and auditable and safe for this heavily regulated industry.”transcript, stated

Models used: AWS Bedrock agent · Claude 3.5 Sonnet · large language model used as evaluator

Scale

Alternatives considered (roads not taken)

Treat AI as an add-on feature

Rejected because: FemmFlo put Gabby at the center so data could be structured once and reused across onboarding, check-ins, diagnostics, and care guidance.

“Vimflow went AI first and put Gabby, their AI, at the center. It is not an add-on but as the core.”transcript, stated
“This choice meant that we can structure the data once and reuse it everywhere.”transcript, stated

Use a vector store for retrieval

Rejected because: The initial knowledge base was small, structured, and needed as whole records, so vector search would have added complexity without benefit.

“most of the data we had that we had to retrieve was quite small and it was already structured and it's not like we needed to locate a specific subsection”transcript, stated
“We actually had to grab the whole piece. So no vector store was used in this case and it uh I guess kept things quite simple.”transcript, stated

Choose the largest model for maximum health-domain knowledge

Rejected because: The team evaluated multiple models and picked the smallest model that met knowledge, latency, and cost requirements.

“we had to have enough baked in knowledge in in the LLM to answer some of these um like more nuance questions”transcript, stated
“we went with the smallest one that satisfied all of our criteria which at the time of development was Claude 3.5 set”transcript, stated

Build custom infrastructure before validating the MVP

Rejected because: Managed services, serverless components, and Open Web UI let the team focus on differentiated healthcare logic during the eight-week window.

“AWS managed services can help and handle the undifferentiated heavy lifting like AM and some security aspects so that the team can focus on launching the MV MVP very quickly”transcript, stated
“AWS make all of this possible with the serverless stack. Lambda, ECS, Fargate, API gateway, all of these are designed to keep the infrastructure cost low.”transcript, stated

Patterns

tool-use-orchestration (architecture)

The Bedrock agent is configured with tool access and an interface Lambda that supplies onboarding context, observability, and structured lab retrieval.

“this is where you set up the agents um um like main objective as well as defining things like what tools it has access to”transcript, stated
“the tool we gave it access to in this case just one um uh for the first iteration at least of this project was the tool that grabbed lab results”transcript, stated

guardrails-io-filtering (safety)

Bedrock guardrails refuse inappropriate topics, while the test workspace lets the science officer tune prompts and guardrails before production promotion.

“Bedrock guardrails which is quite nice for making the agent just outright refuse to answer certain topics or inappropriate questions just to make it more secure.”transcript, stated
“It allows us to run rapid tests, tweak prompts and guard rails and check that every answer actually lines up with users input data and the clinical guideline.”transcript, stated

human-in-the-loop-gate (control)

A science officer validates Gabby's responses and the clinical guideline alignment before the same logic reaches app users.

“This is Femflow's test workspace where the sign officer can validate Gabby's response before anything goes into the app.”transcript, stated
“answer is checked by the science officer and only then it can be shipped to the app.”transcript, stated

eval-driven-development (process)

The eight-week process starts with success definitions and evaluation datasets, then iterates against metrics before production readiness and red-team testing.

3 supporting quotes
“we first of all start with setting up a clear definition of success. Um, so we know what we're aiming at before we start building.”transcript, stated
“we create an evaluation data set. So we make sure we cover all the the edge cases and we work together with the subject matter experts”transcript, stated
“We then also do some red team testing where we basically do some adversarial questions to the system”transcript, stated

observability-tracing (operations)

Langfuse traces expose the question, agent reasoning, tool use, and path to the final answer for evaluation and debugging.

“This is the software that we used for monitoring and observability. Uh and this was quite useful to set up uh the like the traces and things.”transcript, stated
“you could see like the the question that was asked to the agent and then how the agent would reasoned about um maybe what tools it was going to use”transcript, stated

structured-output-contract (data)

Uploaded lab PDFs are converted into structured lab results in S3 so the agent retrieves clean fields rather than reasoning over arbitrary documents.

“after the user uploaded like a PDF document of their lab results we ran that through a structured extraction process uh so we could store the structured the structured results”transcript, stated
“Gabby reads the long report and translate that into something that is easily stored in the database so that the AI can read it”transcript, stated

model-routing (model selection)

The team ran the evaluation framework across candidate models and selected Claude 3.5 Sonnet as the smallest model satisfying quality, latency, and cost criteria.

“we ran through our evaluation framework using a couple of different models and we went with the smallest one that satisfied all of our criteria”transcript, stated

privacy-preserving-processing (safety)

The system emphasizes user separation and no cross-talk for sensitive medical lab data.

“Gabby can read these numbers, store them under the user profile. It is very secure and there's no cross talk between the different users because these are very um sensitive medical data.”transcript, stated

cost-aware-routing (operations)

The architecture uses serverless AWS components and smallest-sufficient model selection to control infrastructure and conversation costs.

“Traditional licensing can come with very expensive upfront licensing fees. Finflow uses a pay as you grow model”transcript, stated
“we also wanted low response latency and low cost, which kind of nudged us to choose some of the smaller models.”transcript, stated

Tradeoffs

Make Gabby the core platform interface

Chose AI-first architecture over AI as an add-on to a conventional health app.

Rationale: Putting Gabby at the center let the team structure data once and reuse it across onboarding, check-ins, lab results, and care-plan interactions.

“Vimflow went AI first and put Gabby, their AI, at the center. It is not an add-on but as the core.”transcript, stated
“This choice meant that we can structure the data once and reuse it everywhere.”transcript, stated

Skip vector retrieval in the MVP

Chose structured DynamoDB and S3 retrieval over a vector-store RAG architecture.

Rationale: The needed records were small, structured, and usually retrieved whole, so vector search would have slowed the MVP without adding value.

“We actually had to grab the whole piece. So no vector store was used in this case and it uh I guess kept things quite simple.”transcript, stated

Choose the smallest model that met evaluation criteria

Chose Claude 3.5 Sonnet at development time over larger models by default.

Rationale: The selected model had enough built-in health knowledge while keeping latency and cost acceptable.

“larger models. But on the other hand, we also wanted low response latency and low cost, which kind of nudged us to choose some of the smaller models.”transcript, stated
“we went with the smallest one that satisfied all of our criteria which at the time of development was Claude 3.5 set”transcript, stated

Use managed and open-source building blocks for speed

Chose Open Web UI, API Gateway, Lambda, ECS Fargate, RDS, EFS, S3, DynamoDB, and Bedrock over custom app and infrastructure from scratch.

Rationale: Managed services absorbed undifferentiated infrastructure and helped the small team launch quickly on a pay-as-you-grow basis.

“AWS managed services can help and handle the undifferentiated heavy lifting like AM and some security aspects so that the team can focus on launching the MV MVP very quickly”transcript, stated
“AWS make all of this possible with the serverless stack. Lambda, ECS, Fargate, API gateway, all of these are designed to keep the infrastructure cost low.”transcript, stated

Gotchas (what bit them)

Healthcare hallucination risk requires a real validation path, not just a polished chat UI.

Root cause: Gabby provides medical-adjacent advice over sensitive lab and symptom data, so incorrect responses could be harmful.

Resolution: The team built a controlled Open Web UI testing workspace where the science officer validates responses, prompts, guardrails, user-data alignment, and clinical guidelines before app promotion.

“What if Gabby hallucinates or what if Gabby gives the wrong advice? Who is going to be held accountable?”transcript, stated
“we didn't just throw AI into the production. We built a control testing environment where every answer is stress tested.”transcript, stated

A default RAG/vector-store design would have added unnecessary complexity.

Root cause: The first-version knowledge base was small, structured, and usually needed as complete records rather than retrieved snippets.

Resolution: The team used DynamoDB onboarding retrieval and an S3 lab-results tool instead of a vector store.

“we didn't use a vector store in this case and it wasn't required because uh most of the data we had that we had to retrieve was quite small and it was already structured”transcript, stated
“the onboarding data that was retrieved from the Dynamob table was retrieved sort of early on in the flow through that interface lambda”transcript, stated

Generic health recommendations can fail culturally and economically.

Root cause: Western-centric datasets can suggest advice that is unavailable or unaffordable for underrepresented users in local contexts.

Resolution: FemmFlo stores localized and user-specific data so Bedrock can personalize recommendations to the user's geography and realities.

“Generic and often western centric data set can offer advice that is not practical for underrepresented women.”transcript, stated
“if you're in Nairobi, you're not going to get a more salmon recommendation into your diet because salmon can cost a day's wage.”transcript, stated

The smallest-sufficient model choice is time-sensitive.

Root cause: The model market changes quickly, so a model selected during development may not remain the best quality-latency-cost point.

Resolution: The speaker explicitly notes rerunning the evaluation as newer models arrive.

“we went with the smallest one that satisfied all of our criteria which at the time of development was Claude 3.5 set although it'd be interesting to rerun it again.”transcript, stated
“maybe there there's there's like a new better model. Always new better models coming out.”transcript, stated

Evaluation

Millio's process defines success up front, builds an evaluation dataset with subject-matter experts, combines human and LLM-based evaluation, uses red-team adversarial questions, and monitors response latency, conversation cost, traces, failures, and component interactions.

Metrics: answer quality across health-question categories · lab-result question accuracy · user-profile-specific answer quality · adversarial/refusal behavior · response latency · conversation cost · trace-level tool and reasoning behavior

4 supporting quotes
“we create an evaluation data set. So we make sure we cover all the the edge cases and we work together with the subject matter experts”transcript, stated
“So this was evaluated through a mixture of both human and automated evaluation.”transcript, stated
“we had another LLM that actually inspected the question the answer what got retrieved from the knowledge base etc to um get to some of the evaluation metrics”transcript, stated
“we also looked at some general operate operational metrics like response latency and conversation cost.”transcript, implied

Outcomes

The talk cites an eight-week build, beta users and real data, a $12 billion market with an $800 million launch segment, under-a-minute check-ins, a roughly $10,000/four-person MVP recipe, and a planned $75,000 SAFE raise.

4 supporting quotes
“deploy the AI MVP for real users with real data to interact with Gabby the AI.”transcript, stated
“She has bootstrapped Fimflow to a full MVP with beta users, lab integrations, and partnerships.”transcript, stated
“Gabby can explain these long and complicated reports in simple plain language.”transcript, stated
“the same model can be designed and scaled to B2B and public sector settings like insurers, employers, and public health programs.”transcript, stated