Engineering contributions
The work behind
the products.
89 contributions across 5 product and engineering areas. Explore the changes, the decisions behind them, and the stack I used.
Integration records code history. Deployment is identified separately where verified.
36 contributions of 89
Contribution results
Growtrics AcademyVoice and realtimeStream voice tutoring and handle interruptionsConnected speech recognition, model responses and sentence-based audio to a live tutoring session.PythonFastAPIWebSocketsGoogle GeminiElevenLabs+3 in detailBuilt · integrated sourceSep 2025 – May 2026
What I changed
- Integrated ElevenLabs speech-to-text into the WebSocket audio path.
- Handled interruption events and Gemini response timeouts as session transitions.
- Streamed sentence-sized TTS output instead of waiting for a complete narration.
- Used Gemini's native stream to bypass an additional Agno parser/model pass.
- Decision
- Keep turn and interruption control in the session transport and remove extra model work from the streaming path.
- Result
- Implemented a streaming voice interaction with explicit cancellation/timeout behavior. No latency percentage is claimed.
Stack used
- Python
- FastAPI
- WebSockets
- Google Gemini
- ElevenLabs
- Agno
- PCM audio
- asyncio
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyVoice and agent statePersist tutoring state and bound conversation historyImplemented shared voice-session state and a tutoring agent that records learning progress.PythonAgnoRedisFirestoreFastAPI+2 in detailBuilt · integrated sourceNov 2025 – May 2026
What I changed
- Replaced SQLite agent-session storage with Redis for concept and conversation agents.
- Added Teach Gracies processing with agent tools and Firestore-backed session state.
- Triggered conversation compression by token usage.
- Reworked WebSocket lifetime ownership and introduced a Redis-backed session registry.
- Decision
- Separate persistent tutoring/conversation facts from a socket's lifetime, and bound model history explicitly.
- Result
- Sessions gain durable state and a controlled history/lifetime instead of depending only on one process.
Stack used
- Python
- Agno
- Redis
- Firestore
- FastAPI
- WebSockets
- asyncio
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyModel serving and speechServe Higgs Audio on GPU and expose typed speech APIsImplemented a historical GPU speech-serving path and later typed APIs for narration providers.PythonModalNVIDIA CUDANVIDIA L40SPyTorch+7 in detailHistorical implementationNov 2025 – May 2026
What I changed
- Defined a CUDA/PyTorch/vLLM container serving Higgs Audio through an OpenAI-compatible speech API on Modal.
- Added persistent model caches, GPU startup/health handling and streaming PCM consumption.
- Instrumented first-audio, total-inference and inter-chunk timing in the speech client.
- Added Inworld speech streaming with visemes and a typed service route supporting streaming and non-streaming responses.
- Decision
- Put self-hosted inference behind a provider-neutral speech interface and measure its streaming phases.
- Result
- Implemented an inference-serving deployment and product speech API. Timing instrumentation exists, but benchmark results were not recovered here.
Stack used
- Python
- Modal
- NVIDIA CUDA
- NVIDIA L40S
- PyTorch
- vLLM
- HiggsAudio
- OpenAI-compatible API
- Inworld
- HTTPX
- NumPy
- PCM audio
Scope & evidence
Historical speech-serving work from November 2025, followed by separate provider-API changes. Current GPU deployment and measured throughput or latency were not verified. My contribution was the serving integration, not the underlying Higgs Audio model.
Growtrics AcademyAI content generationGenerate narrated visual lessons through a restartable pipelineBuilt the visual and narration stages behind conceptual learning material.PythonAgnoLangGraphGoogle GeminiAzure Speech+5 in detailBuilt · integrated sourceSep 2025 – May 2026
What I changed
- Generated images and HTML with relationship/continuation steps for visual consistency.
- Aggregated speech visemes and narration timing using Azure speech and other TTS paths.
- Introduced versioned generation with task orchestration and restart behavior.
- Converted slide/image generation worker work to a synchronous ThreadPoolExecutor path and moved walkthrough generation into its own bounded context.
- Decision
- Represent generation as versioned stages with explicit worker ownership and separate narration/visual artifacts.
- Result
- Implemented a pipeline from generated explanations to rendered visual/narrated learning assets. Corpus-size and learning-outcome claims remain unverified.
Stack used
- Python
- Agno
- LangGraph
- Google Gemini
- Azure Speech
- Playwright
- Google Cloud Storage
- Firestore
- Celery
- ThreadPoolExecutor
Scope & evidence
Several pipeline versions and TTS providers are historical. The stack describes the authored implementations, not every provider's current production use.
Growtrics AcademyMultimodal AITurn uploaded questions into structured solver stateImplemented the agents and graph stages behind question analysis and solving.PythonAgnoLangGraphGoogle GeminiOpenAI+4 in detailBuilt · integrated sourceDec 2025 – May 2026
What I changed
- Created the core solver/import-context agents, graph stages and API composition.
- Represented question parts and analysis results as structured model state.
- Connected image handling with Firestore-persisted solver/session data.
- Added agentic retrieval and relevance evaluation for question search.
- Decision
- Keep multimodal analysis, question identity and solver decisions structured across graph boundaries.
- Result
- Implemented an input-to-question/solver flow rather than an unstructured one-shot response.
Stack used
- Python
- Agno
- LangGraph
- Google Gemini
- OpenAI
- Pydantic
- FastAPI
- Firestore
- Pillow
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyAgent tutoringStream guided tutoring with generated answer referencesAdded a multi-turn tutoring pipeline and reference-answer generation around individual question parts.PythonAgnoGoogle GeminiOpenAIPydantic+4 in detailBuilt · integrated sourceJan – May 2026
What I changed
- Implemented objective-based tutoring chat and an SSE response path.
- Added generated answer references and a locking mechanism for answer generation.
- Connected tutor tools and question-part context with the agent/session state.
- Added subject/education context and bounded session history.
- Decision
- Separate answer-reference preparation from the tutoring turn, while keeping question-part identity available to tools.
- Result
- Implemented contextual guided tutoring with streamed replies and prepared reference answers.
Stack used
- Python
- Agno
- Google Gemini
- OpenAI
- Pydantic
- FastAPI
- SSE
- Firestore
- Celery
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyPerformance engineeringMove image and database work off the tutoring critical pathReworked the homework hot path at its database, image and memory-compression boundaries.PythonAgnoFirestoreGoogle Cloud Storagegcloud-aio-storage+3 in detailBuilt · integrated sourceMay 2026
What I changed
- Used native async Firestore on the chat path.
- Downloaded GCS images through gcloud-aio-storage and cached base64 data in Redis.
- Moved session compression from a pre-hook to a post-hook so it did not block time to first token.
- Replaced a synchronous vector-service call wrapped in a thread with a native async client.
- Decision
- Keep persistence and artifact reads asynchronous, and schedule nonessential model-memory work after the initial response.
- Result
- Removed identified blocking work and an extra pre-response compression step. No measured TTFT reduction is asserted here.
Stack used
- Python
- Agno
- Firestore
- Google Cloud Storage
- gcloud-aio-storage
- Redis
- asyncio
- HTTPX
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyAssessment and concurrencyMake grading admission and request handling asynchronousHardened the grading boundary around entitlement checks and background processing.PythonFastAPIFirestoreasyncioCelery+1 in detailBuilt · integrated sourceJan – May 2026
What I changed
- Added post-grading resource updates and access checks.
- Migrated grading request and after-buzzer handlers toward native async execution.
- Exposed the access-pass denial reason instead of leaving admission failure ambiguous.
- Added load-testing work and stabilized metrics labels to avoid per-execution label growth.
- Decision
- Separate request admission from background grading work, and expose the same admission decision to the client.
- Result
- Implemented asynchronous boundary handling and clearer failure information. This does not establish ownership of every grading algorithm.
Stack used
- Python
- FastAPI
- Firestore
- asyncio
- Celery
- Locust
Scope & evidence
A separate topics/accuracy/completion-time write change is present only in branch/PR history. It is not treated as an integrated outcome.
Growtrics AcademyAssessment and concurrencyFix question-help reads and worker loop ownershipImproved the question-help path around input reads and step-by-step generation.PythonFastAPIFirestoreCeleryLangGraph+2 in detailBuilt · integrated sourceMay 2026
What I changed
- Converted preparation reads to native AsyncFirestore.
- Removed nested asyncio.run use from the Celery generation chain.
- Kept task execution on the intended sync worker boundary.
- Used default answer keys for question-help generation.
- Decision
- Use async I/O on the request boundary and avoid creating competing event-loop lifetimes inside synchronous workers.
- Result
- Implemented more consistent generation inputs and task execution boundaries. The underlying question-help product predates these maintenance changes.
Stack used
- Python
- FastAPI
- Firestore
- Celery
- LangGraph
- OpenAI
- asyncio
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyMultimodal AI and cachingCache visual question context through Gemini's async APIImplemented context reuse and async cache management for working/short-answer visual agents.PythonGoogle Geminigoogle-genaiFastAPIPillow+2 in detailBuilt · integrated sourceNov 2025 – May 2026
What I changed
- Added a Gemini cache manager shared by live-visualization agents.
- Handled cached visual context separately from per-request processing.
- Migrated cache operations to google.genai's async API.
- Added cache-health work and load-testing scenarios around the service.
- Decision
- Treat cached model context as a managed resource instead of recreating it as an incidental request step.
- Result
- Implemented context caching and async lifecycle handling. No cache-hit, cost or latency improvement is invented.
Stack used
- Python
- Google Gemini
- google-genai
- FastAPI
- Pillow
- Google Cloud Storage
- asyncio
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyMulti-agent generationInspect, solve and revise generated quiz questionsReworked quiz validation into dedicated agent stages rather than accepting generator output directly.PythonAgnoPydanticFirestoreThreadPoolExecutorBuilt · integrated sourceNov 2025 – May 2026
What I changed
- Created separate inspection and solving agents for question tests.
- Orchestrated feedback between generation and vetting stages.
- Skipped redundant feedback work when both checks were correct.
- Applied concept identity validation and default answer-key lookup.
- Decision
- Separate generation from independent checks and feed named feedback back to the generator.
- Result
- Implemented a structured multi-agent question-vetting workflow. It is not a proven accuracy improvement without evaluation results.
Stack used
- Python
- Agno
- Pydantic
- Firestore
- ThreadPoolExecutor
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyLearning progressionTurn wrong answers into retryable remediation questsBuilt the backend quest progression flow and connected it to buzzer-round attempts.PythonFastAPIFirestoreRedisCelery+1 in detailBuilt · integrated sourceMay 2026
What I changed
- Implemented wrong-answer handling, generation dispatch, completion and try-again use cases.
- Persisted quest attempts in Firestore and used a bounded lock/alternation policy.
- Dispatched quiz/tutoring generation by task name and fan-out rather than importing sibling service tasks.
- Connected wrong buzzer answers to remediation and correct attempts to carrot awards.
- Changed round initialization to an HTTP 202 enqueue path instead of completing assembly inside the request.
- Decision
- Model progression and cross-service dispatch explicitly, with generation outside the public request lifetime.
- Result
- Implemented the Academy remediation backend and asynchronous round assembly.
Stack used
- Python
- FastAPI
- Firestore
- Redis
- Celery
- Pydantic
Scope & evidence
This is the Academy backend quest flow. It is not a claim to designing or building all games in the distinct Clevah app.
Growtrics AcademyAI content and schedulingGenerate and dispatch daily learning highlightsAdded daily learning-content generation, dispatch and a later HTTP/lazy-generation boundary.PythonGoogle GeminiFastAPICeleryCloud Scheduler+2 in detailBuilt · integrated sourceOct 2025 – May 2026
What I changed
- Implemented article/highlight generation and supporting narration stages.
- Added a scheduled dispatch task and configurable generation behavior.
- Changed scheduling references as Cloud Scheduler replaced the older service-owned beat schedule.
- Added an HTTP entry point wired to generation/warmup tasks.
- Decision
- Separate scheduling and dispatch from content generation so the same work can be initiated through explicit service boundaries.
- Result
- Implemented daily generated learning material and its dispatch path. Delivery/adoption metrics were not recovered.
Stack used
- Python
- Google Gemini
- FastAPI
- Celery
- Cloud Scheduler
- Firestore
- Google Cloud Storage
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyTransactions and rewardsKeep carrot balances and shop inventory atomicImplemented the learner reward wallet and hardened shop operations around database transactions.PythonFastAPIFirestoreFirestore transactionsPydantic+1 in detailBuilt · integrated sourceMar – May 2026
What I changed
- Added carrot-management APIs and business rules.
- Used Firestore transactions for inventory and balance operations.
- Converted shop/carrot persistence to native AsyncFirestore.
- Covered purchase and transfer paths with load-test work.
- Decision
- Treat balance and inventory changes as atomic domain operations instead of independent document updates.
- Result
- Implemented transactional virtual-currency and shop behavior. No financial or scale claim is inferred.
Stack used
- Python
- FastAPI
- Firestore
- Firestore transactions
- Pydantic
- asyncio
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyRetrieval and dataIndex question ideas and learner activity, then change the storage boundaryBuilt semantic indexing/search around question ideas and learner activity, then revised similar-question persistence.PythonWeaviateFirestorePydanticFastAPI+1 in detailBuilt · integrated sourceDec 2025 – Mar 2026
What I changed
- Added question-idea collections and vectorization of question parts.
- Indexed and searched learner activities through Weaviate.
- Added replace/insert and connection-closure behavior to activity indexing.
- Moved SimilarQuestionRepository wiring from Weaviate to Firestore.
- Decision
- Put retrieval behind a repository boundary so persistence can change without claiming every vector path uses the same database.
- Result
- Implemented question/activity retrieval features and a later storage migration.
Stack used
- Python
- Weaviate
- Firestore
- Pydantic
- FastAPI
- asyncio
Scope & evidence
Weaviate is historical for the migrated similar-question boundary. Do not market the whole current service as Weaviate-only or claim a measured retrieval-quality gain.
Growtrics AcademyMultimodal AIBuild structured multimodal assessment importsImplemented the earlier assessment import and solving pipeline before its responsibility moved elsewhere.PythonLangGraphAgnoGoogle GeminiOpenAI+4 in detailBuilt · integrated sourceDec 2025
What I changed
- Accepted multimodal input and lists of base64 images.
- Identified question parts and emitted structured solver output.
- Connected analysis/solver graphs with validation and retries.
- Changed question-part generation to an OpenAIChat provider.
- Decision
- Make multimodal parsing and solver outputs typed so part identity and validation survive each graph stage.
- Result
- Implemented the historical assessment solver/import pipeline.
Stack used
- Python
- LangGraph
- Agno
- Google Gemini
- OpenAI
- Pydantic
- Pillow
- Google Cloud Storage
- Firestore
Scope & evidence
This is the earlier assessment import and solver pipeline. Those responsibilities later moved out of this component.
Growtrics AcademyAccounts and CRMConnect referrals, onboarding and acquisition stateImplemented account-domain changes across referral relationships, subject onboarding and customer intake.PythonFastAPIFirestoreFirestore transactionsasyncio+5 in detailBuilt · integrated sourceDec 2025 – May 2026
What I changed
- Added APIs to generate/apply/validate referral codes.
- Created referral relationships atomically in Firestore.
- Moved subject-onboarding updates to native async reads with concurrent sibling operations.
- Connected waitlist accounts and attribution to HubSpot and Customer.io.
- Reworked Zoom-webhook fan-out on the synchronous worker path.
- Decision
- Keep account creation, attribution and referral ownership in named use cases, with I/O matched to request or worker lifetime.
- Result
- Implemented account and acquisition integrations. This is CRM integration, not authorship of a standalone CRM application.
Stack used
- Python
- FastAPI
- Firestore
- Firestore transactions
- asyncio
- aiohttp
- HubSpot
- Customer.io
- Zoom
- ThreadPoolExecutor
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyEntitlements and lifecycleEvaluate scoped access and synchronize trial stateImplemented access-pass and trial policies with scoped admission and customer-state synchronization.PythonFastAPIFirestoreRedisCelery+4 in detailBuilt · integrated sourceNov 2025 – May 2026
What I changed
- Added reward vouchers and per-scope access/trial gates.
- Used Redis access caching and async pricing-plan reads.
- Centralized expiry materialization and synchronized trial/account attributes to Customer.io.
- Implemented quota/expiry notifications and safe webhook-to-Mixpanel event handling in the lifecycle service.
- Decision
- Use product entitlement state as the authority for access and communication rather than separate email-side state.
- Result
- Implemented scoped access decisions and lifecycle integration.
Stack used
- Python
- FastAPI
- Firestore
- Redis
- Celery
- Customer.io
- Mixpanel
- Pydantic
- asyncio
Scope & evidence
Trial endpoint/cache policy was revised repeatedly, including removing an on-read materializer and a secondary cache later in May. Each selected mechanism is dated historical work, not a claim that every version remains active.
Growtrics AcademyPayments and monetizationImplement checkout, recurring consent and promo-aware invoicesBuilt the payment boundary and improved Airwallex integration across checkout and subscription events.PythonAirwallexHTTPXFastAPIRedis+4 in detailBuilt · integrated sourceDec 2025 – May 2026
What I changed
- Handled Airwallex webhooks through background processing.
- Cached vendor authentication tokens in Redis.
- Converted the API/use-case/vendor path to async HTTPX and database I/O.
- Carried recurring payment consent from webhook results into access-pass state.
- Applied promo discounts to invoice and payment-success handling.
- Decision
- Make vendor interaction, recurring authority and invoice calculation explicit at the payment boundary.
- Result
- Implemented concrete checkout/subscription/invoice mechanisms. No revenue or processing-volume claim is made.
Stack used
- Python
- Airwallex
- HTTPX
- FastAPI
- Redis
- Firestore
- Celery
- Pydantic
- asyncio
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyLearning data and dashboardsAggregate mastery, streaks and learning activity into a snapshotBuilt the backend data model and aggregation path behind learner progress views.PythonFirestoreRedisCeleryFastAPI+2 in detailBuilt · integrated sourceDec 2025 – May 2026
What I changed
- Lazily processed submissions and walkthrough activity.
- Separated topic mastery and streak behavior into bounded contexts.
- Built a dashboard snapshot aggregator with Firestore persistence and Redis/lazy-API wiring.
- Added streak notification use cases and payloads.
- Decision
- Aggregate existing learning facts behind one snapshot boundary rather than making each screen rebuild mastery and activity independently.
- Result
- Implemented progress/mastery/streak data flows and dashboard reads. Learning-efficacy improvements are not inferred.
Stack used
- Python
- Firestore
- Redis
- Celery
- FastAPI
- Pydantic
- asyncio
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyContent quality toolingDetect and repair answer-key LaTeX rendering defectsHardened a question-review tool for the renderer's actual formatting constraints.PythonGoogle GeminiLangChainLaTeXDartBuilt · integrated sourceApr 2026
What I changed
- Detected bare LaTeX and Unicode mathematics that needed delimiters/conversion.
- Flagged text commands inside math that the Dart renderer strips.
- Extended typed verdicts with a Unicode-to-LaTeX fix category.
- Changed Gemini review reasoning and timeout settings, and supplied precise source-field context to the reviewer.
- Decision
- Review against the actual client-rendering contract and preserve exact source identities when proposing repairs.
- Result
- Implemented targeted question/answer rendering guardrails.
Stack used
- Python
- Google Gemini
- LangChain
- LaTeX
- Dart
Scope & evidence
My contribution was targeted question-review and rendering fixes, not the entire question-tagging platform.
Growtrics AcademyOperations and notificationsDeliver operational alerts through a retryable Teams taskAdded an alert-delivery context and CI smoke coverage for the operations service.PythonMicrosoft TeamsCeleryasyncioBuilt · integrated sourceMay 2026
What I changed
- Implemented Microsoft Teams alert delivery as a Celery task.
- Added context for operational failures and consistent alert dispatch.
- Added CI smoke/review coverage for the alert path.
- Decision
- Put outbound alert delivery behind a recoverable task boundary instead of making callers own delivery.
- Result
- Implemented operational notification delivery. Production message delivery was not executed during this research.
Stack used
- Python
- Microsoft Teams
- Celery
- asyncio
Scope & evidence
Implementation and integration are verified. Production behavior and measured impact were not independently checked.
Growtrics AcademyModel evaluation experimentBuild a Qwen quiz-generation benchmark harnessPrototyped a model-comparison and quality-gating harness around quiz generation.PythonQwenAgnoModalGoogle Gemini+2 in detailExperiment / prototypeJun 2026
What I changed
- Added a Qwen benchmark path alongside existing quiz generator/vetter stages.
- Added CLI/configuration for the experiment and model execution adapters.
- Revised benchmark leakage checks and quiz quality gates.
- Decision
- Compare model behavior through the same quiz contract and keep experimental qualification distinct from the product generator.
- Result
- Built an experimental benchmark, with no proven winner or production adoption claimed.
Stack used
- Python
- Qwen
- Agno
- Modal
- Google Gemini
- OpenAI
- Pydantic
Scope & evidence
All selected source SHAs are branch/PR history outside the default/release branch snapshot.
Growtrics AcademyCost-model experimentModel AI feature cost and shared infrastructure assumptionsChanged a planning model to reflect voice, homework and grading usage alongside infrastructure costs.PythonYAMLCost modelingGoogle GeminiElevenLabs+4 in detailExperiment / prototypeApr 2026
What I changed
- Updated feature-cost calculations and realistic usage assumptions.
- Separated common infrastructure/devops cost from feature-specific AI calls.
- Updated pricing, report and rollup code to expose the assumptions.
- Decision
- Keep cost estimates inspectable as assumptions and formulas rather than presenting them as measured production savings.
- Result
- Implemented a cost-planning prototype. No budget saving or verified bill reduction is claimed.
Stack used
- Python
- YAML
- Cost modeling
- Google Gemini
- ElevenLabs
- Inworld
- Modal
- Redis
- Firestore
Scope & evidence
Provider and database costs are planning assumptions, not evidence of deployment. This remained experimental work.
Growtrics AcademyTechnical audit experimentAudit provider limits across model-calling servicesRecorded an AI-provider rate-limit audit and linked its findings to remediation work.PythonJiraAgnoGoogle GeminiOpenAI+4 in detailExperiment / prototypeApr 2026
What I changed
- Collected per-service provider/API usage reports.
- Mapped concurrency/rate-limit findings into fix and verification tickets.
- Recorded the audit report and traceable remediation links.
- Decision
- Treat provider capacity and retry behavior as a cross-service concern with an evidence trail and named follow-up work.
- Result
- Recorded audit and remediation artifacts, not a completed rate-limiter deployment.
Stack used
- Python
- Jira
- Agno
- Google Gemini
- OpenAI
- ElevenLabs
- Inworld
- Modal
- Celery
Scope & evidence
These are audit documents on branch history. Technologies are the audited estate, not provider integrations newly implemented in this repository.
Growtrics AcademyAI platformModel-aware provider routing and fallbackBuilt shared model-aware fallback policies, with later self-hosted routing work recorded separately.PythonPortkeyGoogle GeminiOpenAIAnthropic+1 in detailIntegrated + historical workMay 2026 – Jun 2026
What I changed
- Integrated typed provider fallback targets and model-specific fallback chains.
- Integrated generated Portkey configuration for synchronous and asynchronous agents.
- Developed later self-hosted Qwen routing; its integration into the main product was not verified.
- Decision
- Keep model capability and fallback decisions in one shared routing authority.
- Result
- Shared agents derive fallback policy from the selected model. Later self-hosted routing is retained as historical work, not a current production claim.
Stack used
- Python
- Portkey
- Google Gemini
- OpenAI
- Anthropic
- Pydantic
Scope & evidence
The fallback policies were integrated. Later self-hosted routing is recorded development work whose integration was not verified. Production traffic and measured impact were not checked.
Growtrics AcademyAuthenticationFirebase identity with Redis-cached learner profilesRemoved a redundant authentication RPC and added cached learner-profile lookups shared by HTTP and voice-session authentication.PythonFastAPIFirebase AdminFirestoreRedis+1 in detailBuilt · integrated sourceMay 2026
What I changed
- Removed the redundant Firebase get-user call after ID-token verification.
- Added Redis-backed profile-summary loading with a declared TTL.
- Provided cache invalidation and preserved master-user/profile-session checks.
- Decision
- Cache profile data separately from credential verification so the authentication boundary remains explicit.
- Result
- Authentication has a shared profile-cache path and explicit invalidation instead of fetching the same profile on every request.
Stack used
- Python
- FastAPI
- Firebase Admin
- Firestore
- Redis
- WebSockets
Scope & evidence
Implementation is verified. Production usage and business impact were not independently measured.
Growtrics AcademyUsage accountingPer-service user costs and daily trial budgetsCorrected trial-spend accounting and authored broader service-level cost and daily-budget revisions.PythonFirebase AdminFirestoreCeleryIntegrated + historical workMay 2026
What I changed
- Integrated: corrected which asset-related costs count toward trial-scope spending.
- Historical source: mapped usage surfaces to service ownership and added daily cost buckets.
- Historical source: added rollup dimensions and threshold-triggered trial notifications across recorder paths.
- Decision
- Account for authoritative usage in durable records rather than inferring customer spend from monitoring charts.
- Result
- The trial-spend correction was integrated. I also developed service attribution and daily-budget changes, whose integration was not verified.
Stack used
- Python
- Firebase Admin
- Firestore
- Celery
Scope & evidence
Only the trial-spend correction has verified integration here. The broader accounting changes are historical development work; no spend reduction is claimed.
Growtrics AcademyObservabilityTrace context across requests and Celery workConnected application logs, authenticated request context and background-task tracing in the shared backend library.PythonFastAPICeleryOpenTelemetryGoogle Cloud Logging+1 in detailIntegrated + historical workSep 2025 – May 2026
What I changed
- Integrated: application request/support identity and shared observability context.
- Integrated: Google Cloud Logging with automatic trace correlation.
- Integrated: correlated tracing and logging across the shared backend observability architecture.
- Historical source: a direct Sentry-to-Tempo OTLP bridge is recorded separately from the integrated architecture change.
- Decision
- Carry request and support identity through service boundaries so failures can be traced across HTTP and background execution.
- Result
- Integrated logging and observability changes connect application identity with trace context. The separately selected OTLP-bridge revision remains historical evidence rather than proof of a particular current deployment.
Stack used
- Python
- FastAPI
- Celery
- OpenTelemetry
- Google Cloud Logging
- Sentry
Scope & evidence
Cloud Logging and shared observability changes were integrated. Integration of the separate direct tracing bridge was not verified. Current telemetry coverage and faster incident response were not measured.
Growtrics AcademyInteractive tutoringVoice sessions with WebSocket transport and Silero VADBuilt native-app voice-session transport and automatic speech detection for interactive tutoring.FlutterDartBloc/CubitWebSocketsSilero VADBuilt · integrated sourceSep 2025
What I changed
- Introduced a WebSocket data source and repository boundary.
- Connected voice events to Bloc state and session timing.
- Integrated Silero voice-activity detection and force-end-speech handling during agent turns.
- Added session-flow and state-reset test coverage.
- Decision
- Separate real-time transport and speech detection from UI state so voice-session lifecycle changes have clear owners.
- Result
- The client coordinates user speech, agent turns and session timers through explicit voice-session state.
Stack used
- Flutter
- Dart
- Bloc/Cubit
- WebSockets
- Silero VAD
Scope & evidence
Implementation is verified. Production usage and business impact were not independently measured.
Growtrics AcademyClient reliabilitySolver-stream recovery and redacted diagnosticsHardened streaming solver behavior and connected client requests to redacted Sentry diagnostics.FlutterDartBloc/CubitDioSentryBuilt · integrated sourceMay 2026
What I changed
- Added SSE error classification and state-snapshot handling.
- Carried typed solver-stream events through repositories and Bloc state.
- Added a Dio correlation interceptor and application-session/support identity.
- Added Sentry redaction and identity integration at bootstrap/auth boundaries.
- Decision
- Keep recoverable stream state separate from diagnostic data, and redact identities before exporting telemetry.
- Result
- Streaming failures have named client behavior, and request/session context reaches diagnostics through a redaction layer.
Stack used
- Flutter
- Dart
- Bloc/Cubit
- Dio
- Sentry
Scope & evidence
Implementation is verified. Production usage and business impact were not independently measured.
Growtrics AcademyMobile deliverySigned store releases and explicit OTA update statesBuilt Android/iOS release lanes and OTA update states that distinguish a store binary, a patchable baseline and a targeted patch.FlutterDartFastlaneShorebirdBloc/Cubit+2 in detailBuilt · integrated sourceOct 2025 – May 2026
What I changed
- Added Fastlane Android APK/AAB and iOS archive/TestFlight lanes.
- Aligned environment flavors and signing configuration.
- Added Shorebird release/patch lanes with selected version and track.
- Connected blocking patch download, retry and restart states to the update gate.
- Decision
- Treat delivery mode and update policy as explicit inputs rather than routing every app update through the same path.
- Result
- Authored sources establish both platform release paths. An independently verified historical Android production-flavor workflow completed its deploy and update-config jobs.
Stack used
- Flutter
- Dart
- Fastlane
- Shorebird
- Bloc/Cubit
- TestFlight
- Google Play internal testing
Scope & evidence
Historical Android distribution context is Google Play internal testing. That run skipped CI/E2E and substantive iOS steps. Public production-store availability and an iOS store release are not established by this proof.
Growtrics AcademyGrowth websiteHubSpot, Customer.io and campaign attributionConnected contact and waitlist forms to CRM and email delivery, preserving campaign context through the signup journey.TypeScriptNext.jsReactHubSpotCustomer.io+1 in detailBuilt · integrated sourceJan 2026 – Jul 2026
What I changed
- Added server-side HubSpot submission with form validation and user-facing error handling.
- Added a Customer.io email client and delivery route for the campaign flow.
- Captured UTM/referrer context in proxy and form state.
- Added phone input and multilingual beta-application UI.
- Decision
- Submit leads through a controlled server boundary and keep attribution attached to the user action rather than relying only on page-view analytics.
- Result
- The website has concrete lead-submission and email-delivery adapters, and form submissions can retain acquisition context.
Stack used
- TypeScript
- Next.js
- React
- HubSpot
- Customer.io
- UTM attribution
Scope & evidence
Implementation is verified. Production usage and business impact were not independently measured.
Growtrics AcademyContent platformMigrated the education website from TinaCMS to SanityReplaced the website content backbone with Sanity schemas, structured reads and editorial preview support.TypeScriptNext.jsReactSanityBuilt · integrated sourceJun 2026
What I changed
- Added twenty-two singleton schemas and migrated the existing content model.
- Switched frontend reads from TinaCMS to Sanity and removed TinaCMS afterward.
- Added draft-gated visual editing and Live Content API integration.
- Added page-builder foundations, editable site settings and page-level SEO/image handling.
- Decision
- Move content ownership into schemas and editor workflows while making the frontend reads follow the same content authority.
- Result
- The authored migration places website sections and site settings behind a structured CMS with preview and editorial controls.
Stack used
- TypeScript
- Next.js
- React
- Sanity
Scope & evidence
The schema count is recorded in the authored change. Editorial productivity and production content traffic were not measured by this source review.
Growtrics AcademyWeb authenticationFirebase web sessions and verification-safe redirectsConnected portal authentication to server sessions and hardened verification, reset-password and resume behavior.TypeScriptNext.jsReactFirebase AdminBuilt · integrated sourceMar 2026 – May 2026
What I changed
- Added a Firebase Admin session route and client/server authentication synchronization.
- Implemented reset-password and email-verification pages.
- Switched auth listening to ID-token changes and reverified on resume.
- Synchronized verification session state before redirects and surfaced mapped Firebase errors.
- Decision
- Establish the session before navigation so verification and protected-page redirects agree about the authenticated user.
- Result
- Authentication and redirects share verified session state instead of relying only on a stale client-auth event.
Stack used
- TypeScript
- Next.js
- React
- Firebase Admin
Scope & evidence
Implementation is verified. Production usage and business impact were not independently measured.
Growtrics AcademyCommerce portalAirwallex checkout with scoped catalogs and promo previewsIntegrated the payment portal with Airwallex and connected checkout previews to access passes, invoices and promo eligibility.TypeScriptNext.jsReactAirwallexBuilt · integrated sourceDec 2025 – May 2026
What I changed
- Integrated the Airwallex Components SDK checkout path.
- Mapped scoped catalog purchase/preview responses into checkout state.
- Added promo-code validation and blocked payment progression while required previews are unresolved.
- Updated invoice display and access-pass state handling.
- Decision
- Make the preview/eligibility result authoritative before exposing a pay action so the customer sees the same purchasable scope as the backend.
- Result
- Checkout UI and invoice/access-pass presentation consume a scoped commerce contract and display provider-specific payment flows.
Stack used
- TypeScript
- Next.js
- React
- Airwallex
Scope & evidence
Provider SDK and authored checkout source were inspected. No payment volume, revenue or real card transaction was independently verified.