Technical Architecture

Built for engineers.
Designed for every domain.

The full technical foundation behind Aster, from conversation surface to learning loop. Every layer open for inspection.

Outcome Optimization Engine Self-Improving Learning Loop Multimodal Reasoning Pipeline Pluggable Optimizer Functions
The Full Stack
Five layers working together, from the surface your users see, to the data loop that makes every conversation smarter than the last.
Frontends
Chat Widget Typeform SurveyMonkey Webflow / WordPress Slack / Teams WhatsApp / SMS Voice / IVR React SDK REST API Mobile SDK
↓ ↓ ↓
Engine
Prompt Generator Question Orchestrator Context Manager Answer Parser + NLU Multimodal Reasoning Vision Pipeline Skip Logic Personalization Eval Runner Brand Voice Enforcer
↓ ↓ ↓
Optimize
Built-in Optimizer Functions BYOF (Your API) Visual Builder / DSL A/B Testing Engine GEPA Prompt Optimizer Optimizer Marketplace
↓ ↓ ↓
AI / LLM
↓ ↓ ↓
Data
Session Store Q/A Corpus Outcome Database Vector Store Model Registry User Memory Layer Federated Learning Drift Detection Auto-Refinement

The Optimizer Function
The optimizer answers one question at every step: "Given what we know, are we done, or what should we ask next?" It's the pluggable brain that makes Aster work across any domain without rebuilding from scratch.

Three ways to define your optimizer

Use pre-built scoring functions, connect your own API, or build one with the visual editor. Mix and match across projects.

Built-in

Pre-built optimizers for lead scoring, triage, readiness. Start in minutes.

🔌
Bring Your Own (API)

POST to your endpoint. Aster sends collected answers, you return a score + signals.

Visual Builder

Drag-and-drop DSL editor. Define rules, weights, thresholds. No code required.

BYOF API Contract

// Aster calls your API after each answer POST your-api.com/optimize { "session_id": "abc-123", "answers": [ {"q": "Team size?", "a": "50"}, {"q": "Budget?", "a": "$500/mo"} ], "context": {"source": "website"} } // Your API responds with: { "score": 0.82, "ready": false, "signals_needed": ["timeline"], "next_priority": ["timeline"] }

Optimizer functions by domain

Lead QualificationMQL Score → 0.0-1.0
Support TriageSeverity → L1/L2/L3
Insurance QuoteConfidence → 0.0-1.0
Medical TriageUrgency → 1-5
SaaS ActivationReadiness → 0.0-1.0
Recruiting ScreenFit → Pass/Fail
Churn RiskRisk → Low/Med/High
Brand VoiceTone Score → 0.0-1.0

Aster doesn't just ask questions.
It reasons over what it sees.
Text, images, voice, sliders, structured selections, all fused into a single reasoning context. Not separate channels.
👁

Vision Reasoning

Users upload photos or documents. Aster reasons over visual content to extract signals and inform the next question.

Example: Patient uploads eye photo → Aster detects redness → escalates urgency. Insurance customer uploads damage photo → Aster assesses severity → adjusts quote.
🎮

Adaptive Input Selection

Aster dynamically chooses the optimal input type per question: free text, radio buttons, sliders, or chips based on what will yield the best signal.

Example: Pain severity → Slider. Symptoms → Multi-select. Open complaint → Free text. Timeline → Chip-select.
📈

Cross-Modal Fusion

An image, a slider value, a selection, and free text aren't separate inputs, they're combined into one unified context that drives the optimizer score.

Example: Eye photo (visual) + pain slider 7/10 + "3 days duration" (text) + photophobia (select) = unified clinical picture → urgent routing.
Reasoning Pipeline
All modalities flow into a single fused context, not separate channels
💬
Text
NLU
+
📷
Image
Vision model
+
🎧
Voice
STT + tone
+
Structured
Selects, sliders
🧠
Fusion Engine
Unified context
🎯
Optimizer
Score + next action

The Learning Loop
Every session generates signal. Every signal improves the next session. The more Aster runs, the better it gets, across every deployment, without sharing sensitive data.
💬
Session Capture

Every answer, skip, and drop-off is logged. Outcomes are tagged: converted, qualified, triaged, churned.

📈
Eval-Driven Refinement

Automated evals score question quality, brand compliance, and completion rates. Low-scoring questions are auto-replaced via GEPA.

Optimizer Tuning

Outcome correlation analysis identifies which questions actually predict success. Weights are updated continuously.

🔌
Federated Learning

Structural patterns (question sequencing, drop-off signals) compound across all deployments, without sharing raw session data.

GEPA: Gradient-Enhanced Prompt Adaptation

// GEPA treats prompt quality as a differentiable function // Each prompt variant is scored against eval criteria // Gradient-guided search finds higher-scoring variants automatically score = eval_fn(prompt, criteria={ "completion_rate": 0.4, // weight: 40% "outcome_accuracy": 0.4, // weight: 40% "brand_compliance": 0.2, // weight: 20% }) // Variants are generated, scored, and the best is deployed // No human review required for incremental improvements

Aster remembers every user
For use cases with repeat users: SaaS products, healthcare, insurance, every return session starts with full context. No user ever answers the same question twice.

🧠 Aster Memory Layer

Built-in memory infrastructure. We store user preferences, interaction history, and learned context. Zero setup required.

user_id"usr_8821"
last_session"2026-03-14"
team_size50
budget_range"$500/mo"
qualification_score0.82
signals_pending["timeline"]

🔌 Bring Your Own Memory

Already have a CRM, user profile system, or data warehouse? Connect it via API. Aster reads from your memory layer at session start and writes back on completion.

// Aster reads context at session start GET your-api.com/user/"{user_id}"/context // Aster writes back on session end POST your-api.com/user/"{user_id}"/update { "new_answers": [...], "outcome": "qualified", "score": 0.82 }

Every conversation sounds like you
Upload your brand guidelines: tone, vocabulary, values, content standards. Aster enforces them on every generated question, verified through automated evals before and during deployment.

Same question. Different brands.

Generic AI
"Please provide your annual revenue range so we can determine the appropriate pricing tier for your organization."
With Brand Voice (Casual SaaS)
"Roughly how big is the team? No need to be exact, just helps us figure out the right plan for you."
Generic AI
"What is the nature of your medical complaint today?"
With Brand Voice (Healthcare)
"Tell me what's been bothering you. Take your time, the more detail you share, the better I can guide you."

How brand compliance is enforced

01
Brand Profile
Upload your brand book. Aster extracts tone vectors, vocabulary rules, and value constraints.
02
Prompt Infusion
Brand profile is woven into the system prompt. Every LLM call carries your brand DNA as a constraint.
03
Pre-Deploy Evals
Synthetic conversations scored by LLM-as-judge against your guidelines before going live.
04
Live Monitoring
Sample of live sessions continuously scored. Drift alerts fire if brand compliance drops.
05
Auto-Refinement
GEPA adjusts prompts automatically to maintain brand alignment without manual intervention.

Everything is accessible via API
Full programmatic control over sessions, flows, optimizers, memory, and evals. Integrate Aster into any product in any language.
POST/v1/sessions
Start a new conversation session. Returns session_id and the first message/question.
POST/v1/sessions/{id}/answer
Submit a user answer. Returns next question, input type, and current optimizer score.
GET/v1/sessions/{id}/outcome
Retrieve the final outcome, score, routing decision, and full answer transcript.
POST/v1/flows
Create a new flow from a plain-English description. Aster generates the seed prompt and optimizer config.
GET/v1/flows/{id}/evals
Run the eval suite for a flow. Returns brand compliance scores, completion projections, and quality metrics.
GET/v1/users/{id}/memory
Read the stored memory profile for a returning user: preferences, history, pending signals.
// Start a session and get the first question POST https://api.withaster.ai/v1/sessions Authorization: Bearer YOUR_API_KEY { "flow_id": "lead-qualification-v2", "user_id": "usr_8821", // optional — enables memory "context": { "source": "homepage", "utm_campaign": "enterprise-q1" } } // Response { "session_id": "sess_abc123", "message": "Hey! What's the core problem you're trying to solve?", "input_type": "free_text", "optimizer_score": 0.0 }

Ready to build on Aster?

Request early access and we'll reach out within 24 hours. Bring your use case, we'll help you design the right flow.