SculptAI
An adaptive AI training system
A training plan should be an output of what the system currently knows, not a document handed to the user on day one. SculptAI normalizes a goal stated in plain language into a structured profile, turns that profile into a prescription, shapes a week from it, and treats what the user then does — or does not do — as an event that propagates back into the next decision.
- Role
- Sole technical owner — strategy to operations
- Status
- Active development · beta preparation
- Scope
- Mobile product · internal tooling · operations console
- Architecture map
- 19 engines · 13 events
- Evidence harness
- 17 behavioral loops
At a glance
- SculptAI is an adaptive training system I architect, build and operate. It is structured as a connected system rather than a set of independent screens: a goal stated in the user's own words is normalized into a structured profile, that profile drives a prescription, and the prescription shapes the week the user is actually given.
- The session run in Gym Mode is the session the planner produced. The plan row and the session header are the same string, and the vocabulary both are built from — weak point, core, cardio — is exactly what the prescription engine declares it owns.
- Finishing that session is modeled as a declared event rather than a database write. SculptAI's event registry defines a workout completion by the state change that constitutes it, and defines the absence of one — an expected training day that passes with nothing logged — as its own event.
- Atlas is the internal architecture map: in its own words, every engine, event, dependency, ownership boundary and connectivity status the product currently knows about. It reports 19 engines and 13 events, and it also records what is confirmed broken and what has not been verified.
- A separate in-app harness defines 17 named behavioral loops that exercise those relationships against live data, alongside an 18-step manual smoke checklist for a brand-new account.
01The problem
The problem
A plan written once is answering a question the user has already moved past.
Most training software is organized around producing a plan: you answer some questions, the product hands back a program, and from then on the program is the fixed thing and you are the variable. Keeping the two aligned becomes the user's job. That transfer is the problem, because almost everything the plan depended on is in motion from the day it is written.
- Goals change, and so does their order — someone who set out to lose fat now cares about their shoulders.
- Training activity diverges from the schedule: sessions get done early, late, partially, or not at all.
- Missed work is information, and it is what a static plan is least equipped to use — nothing happened, so nothing triggered.
- Recovery is uneven: the same prescribed volume is easy one week and too much the next.
- Nutrition drifts independently of training; the plan's assumptions about it do not.
- Measurements, photographs and check-ins accumulate, and the picture they form is the real answer to 'is this working'.
- Consistency is a signal in itself — four near-perfect weeks and four half-attended ones should not produce the same next month.
The thesis
A training plan should be a response to signals, not a document the user is asked to obey.
That imposes three structural requirements. The plan has to be a function of current state rather than a stored artifact. Absence has to be representable, because a system that only listens for actions cannot notice the week in which nothing happened — the week an adaptive product most needs to react to. And the adaptation has to be legible: a product that changes what it asks of someone has to be able to say what it is now focusing on.
02The system
The system
Each stage is a named part of the system, not a step in one long function — which is what lets a later stage reach an earlier one.
The cycle
Intent
A goal stated in the user's own words, restatable later without starting over.
Plan
Intent resolved into a structured profile, a prescription, and a week of composed sessions.
Execute
The prescribed session is what Gym Mode runs, set by set.
Record
Completing, skipping or logging changes state, and each change is a named event.
Evaluate
Derived state is recalculated from what actually happened, including what did not.
Adapt
The next plan comes from the updated state, and the product says what it is focusing on.
The next pass starts from the updated state rather than from the original plan.
Each signal has a defined entry point, and the architecture declares how far it travels.
- Goals, in the user's words
- Captured at onboarding, re-openable later. Goal Profile normalizes raw goal text, focus areas and constraints into a profile the planner consumes.
- Goal priorities
- Structured fields, not prose: the Framework Registry consumes a primary goal key and priority areas, so a change of emphasis reshapes the week.
- Training activity
- Completing a workout is a declared event, defined by an inserted workout log row, that propagates rather than terminating at the write.
- Missed workouts
- An expected training day passing with no workout log is its own declared event, with its own propagation.
- Nutrition
- Meal logging is a third declared event; Nutrition is one of five top-level domains, and nutrition targets are declared outputs of the prescription engine.
- Recovery
- Recovery targets and rules are prescription-engine outputs: an input to what is asked of the user, not a note beside the plan.
- Consistency
- Derived state, not a streak counter: recovery, consistency and recent impacts are builders other surfaces read from.
- Measurements and photographs
- Baseline photos, food, water and a daily check-in are Journey checklist items — how the product asks for the evidence it reasons over.
- Progress evidence
- Scored per-region muscle health with an explicit next focus: where the system's conclusion becomes visible to the person it applies to.
Those parts are not one pipeline. Atlas — the internal architecture map covered in section 05 — decomposes the product into five domains with engines beneath them, so a signal like nutrition is not locked inside the screen that collects it.
03The product
The product
Designing for a phone on a gym bench is mostly subtraction.
Five tabs carry the product — Journey, Coach, Plan, Progress and Library — with Gym Mode reachable from anywhere. The surface that matters most is used mid-session, standing in a gym: there, anything that needs a paragraph read or a decision the product could have made is a defect, however reasonable it looks in a mockup.
- Gym Mode
- The in-session surface: set counters, elapsed and remaining time, an exercise pager, start and end movement blueprints, and an 'Equipment busy? Swap exercise' escape hatch.
- Plan
- The week as the planner produced it: one composed title per day, rest days left open, and a regenerate action on the surface rather than in settings.
- Journey
- The daily surface: the goal in the user's own words, a current-versus-future body view, and the day's checklist.
- Progress
- Derived state: 'Objective signals — no guesswork about how it's going.' Muscle health is scored per region with a specific 'Focus next' list.
The asset pipeline behind the exercise library
The exercise library is produced by an import pipeline, because a catalog that grows with the product cannot depend on manual asset production. The import screen is the whole interface: a start photo and an end photo go in, and SculptAI names the movement, tags the musculature and renders the blueprint card the library shows. Each movement carries male and female views behind a toggle. Production cost is treated as an architectural constraint rather than an afterthought, and the resulting trade-off is stated to the user on the import screen itself rather than hidden behind it.
Account, settings and beta gating
The sign-in screen at the top of this page is framed by what an account gives the user: save workouts, view history, pick up from previous weights. Settings groups appearance, plan structure, feedback straight to the founder, account controls and a legal hub, with the build stamped in the footer.
04Adaptive intelligence
Adaptive intelligence
The session Gym Mode runs and the session the planner produced are the same string, character for character.
Section 02 described the loop in the abstract. Here it is traced through the running product. Every quoted string below is text visible in a capture on this page.
The loop, traced through the running product
Intent
The user states a goal in their own words
I want to trim my waist, plus build muscle, lose fat.
Journey keeps the raw goal on screen instead of converting it to a preset and discarding the phrasing.
Source · Product — Journey
Engine
Goal Profile normalizes that intent
Normalizes raw user intent (goal text, focus areas, lifestyle constraints) into a resolved profile the planner can consume.
Atlas records the contract as well as the description: it consumes onboarding and replan intake, produces a UserGoalProfile and a PlannerPreferences resolution, and is consumed by goal-prescription and the planner.
Source · Atlas — Engine Registry and Dependency Graph
Engine
Goal Prescription turns that profile into targets
Owns required exposures, volume, nutrition, cardio, and recovery targets derived from the Goal Profile.
Its declared output is a GoalPrescription covering cardio and core targets, weak-point blocks and recovery rules, and its only declared consumer is the planner — one engine owning that decision rather than the logic spreading across screens.
Source · Atlas — Engine Registry and Dependency Graph
Engine
Framework Registry shapes the week's structure
PlannerFramework (slot list), FrameworkTailoringExplanation
It consumes specific fields rather than the whole profile. Its second output is an explanation of the tailoring — what makes a later change reviewable instead of mysterious.
Source · Atlas — Dependency Graph
Plan
The weekly split renders those decisions
Back + Triceps (Weak Point) · 15min Cardio
Tuesday in the generated week, composed from the same vocabulary as every other training day: weak point, core, cardio.
Source · Product — Plan
Execute
Gym Mode runs that same session
Back + Triceps (Weak Point) · 15min Cardio
The session header is the Tuesday row, unchanged: 22 sets across seven exercises, each with start and end blueprints and a swap action for occupied equipment.
Source · Product — Gym Mode
Event
Completion is a declared event, not just a write
A workout_logs row is inserted.
The registry defines the event by the state change that constitutes it and records seven ripple steps. It declares the inverse too, with four.
Source · Atlas — Event Registry
Derived state
Progress reports what the system now concludes
Focus next: Forearms, Hamstrings, Glutes. 18/100 overall muscle health.
Muscle health is presented as a score with a specific next focus, so the adaptation is legible to the person living it rather than applied silently.
Source · Product — Progress
Verification
The relationship is covered by a named loop
Workout Completion Loop · Muscle Health Score Loop
Two of the seventeen loops in the evidence harness cover this stretch. Section 06 shows it defined and ready, not the record of a passing run.
Source · QA — V1 Loop Evidence
Steps five and six quote the same string, character for character — and the words it is built from are the categories Goal Prescription declares it owns.
It holds in the other direction too: a meaningful action is not a private transaction between one screen and one table, but a named event whose reach the registry declares.
An expected training day that passes with nothing logged is itself an event, with four ripple steps of its own. Not doing the thing is modeled as information.
Anchoring an event to a checkable state change rather than to a button handler is what makes the event testable — and it makes absence representable, the second of the three requirements in section 01.
Where the event registry says how far something travels, the dependency graph says along which edges: what each engine reads, emits, and who is downstream.
The declared contracts behind the plan, in full
Goal Profile
StableNormalizes raw user intent (goal text, focus areas, lifestyle constraints) into a resolved profile the planner can consume.
- Consumes
- Onboarding intake · Replan intake
- Produces
- UserGoalProfile · PlannerPreferences resolution
- Consumers
- goal-prescription · planner
Goal Prescription
StableOwns required exposures, volume, nutrition, cardio, and recovery targets derived from the Goal Profile.
- Consumes
- UserGoalProfile · PlannerPreferences
- Produces
- GoalPrescription (cardio/core targets, weak-point blocks, recovery rules)
- Consumers
- planner
Framework Registry
- Consumes
- UserGoalProfile.primaryGoalKey · UserGoalProfile.priorityAreas · GoalPrescription
- Produces
- PlannerFramework (slot list) · FrameworkTailoringExplanation
Training Methodology
- Consumes
- UserGoalProfile.primaryGoalKey · UserGoalProfile.secondaryGoalKey · raw goal text
- Produces
- TrainingMethodology (descriptions only)
The row that earns its keep is the last one. What a module produces is a claim about itself and costs nothing to keep true; who consumes it is a claim about the rest of the system. That row rots first.
05Engineering
Engineering and observability
A map that only shows what works is a marketing diagram.
Everything above is behavior; Atlas is where the same product is described as a system. It is internal tooling, built at the point where reading the code stopped being a fast enough way to answer why something happened.
- World Map
- Five domains — Experience, Intelligence, Nutrition, Planning, Transformation — and their engines.
- Health Overview
- The summary view, with the counts below.
- Engine Registry
- One stated responsibility and a self-declared status per engine.
- Event Registry
- Each event defined by the state change that constitutes it, with its ripple-step count.
- Dependency Graph
- Per-engine contracts: consumes, produces, consumers.
- Ownership Graph
- Accountability boundaries. In the navigation; not among these captures.
- Connectivity Graph
- Confirmed gaps and unverified assumptions, ranked by severity.
- Engines in Atlas
- 19
- Events in Atlas
- 13
- Loops in the evidence harness
- 17
Counts SculptAI's own tooling reports about itself when these captures were taken — engines and events from Atlas, loops from the V1 harness. They describe the size of the architecture and of its verification surface. They are not users, sessions, revenue or outcomes.
Every engine states one responsibility and a status, so an engine that has quietly grown a second job shows up as a description that no longer fits.
The view that turned out to matter most is the one I expected least of: the connectivity view, where Atlas records confirmed defects and unverified assumptions ranked by severity. It currently holds five entries — two confirmed defects, one migration that was applied but never backfilled, and two relationships whose only content is that they were not checked this pass. Each names the surface it affects and says plainly what is known and what is not.
Those entries are why the Coach tab is not presented as a feature anywhere on this page, and why the beta invitation flow is described as unfinished. The tool is doing its job when it makes a claim harder to make.
Why an internal architecture map is worth the cost
Building this early is a real cost, taken deliberately. It starts paying for itself the moment behavior becomes emergent — when an outcome is the product of several engines and no single file explains it.
- Seeing the shape of the system, and noticing drift between what a part was supposed to do and what it does now.
- Debugging behavior that is correct in each individual part and wrong in aggregate.
- Making the product explainable to someone who did not build it — or to me in six months.
- Keeping known defects attached to the architecture they affect rather than in a list nobody opens.
06Validation
Validation
If the product is a set of connected loops, the loops are the thing worth testing.
SculptAI carries two pieces of validation tooling inside the application, both kept out of the ordinary user experience: a behavioral evidence harness gated to development builds, and a manual smoke checklist for a new account behind an admin-only tools route.
The harness is the part I would point an engineer at. Each test captures a real server snapshot, performs a live mutation scoped to the operator's own records, refetches the queries the UI uses, and reports before and after. Mock fallbacks are flagged in red rather than silently substituted — a green run that had fallen back to fixtures would be worse than no run at all.
- The loops are named after behavior, not modules: Workout Completion, Missed Workout, Daily Check-In, Meal / Protein, Muscle Health Score, Wins, Workout Session, Core & Mobility.
- Query Invalidation is a loop in its own right: an adaptive product most often looks broken while being correct underneath.
- Theme Safety is there too, because a rendering regression that makes a screen unreadable is a product failure whatever caused it.
- The smoke checklist covers what the harness cannot: a genuinely new sign-up, the beta gate, the legal hub, and intake persisting a profile.
07Operations
Operations
The operational surface was built ahead of the beta, not improvised during it.
A product heading into a beta needs somewhere to answer operational questions — is anything down, who has been invited, who is actually in. SculptAI has that surface built in, under the name Cockpit, described on the screen itself as a place to “operate SculptAI as a live business — monitor users, growth, health & operations.”
- System status
- Server health, database, API, storage and background jobs, each reported independently rather than as one aggregate green light, and stamped with the build.
- Beta invitations
- Issuing and redeeming invitations, so admitting a tester is an operational action rather than a database edit. Section 05 records an open defect behind this flow, so it is a surface that exists rather than a finished one.
- User management
- Per-user administration — what makes it possible to answer a beta tester's support message without opening a console.
- Activity feed
- A running view of what is happening in the product: the operational counterpart to the event model in section 04.
Operating a product asks questions on a different axis from building one, and answering them by hand does not scale past the first days of a beta. An operational action with no home in the Cockpit is one that will end up being performed unsafely.
08What I owned
What I owned
One owner from problem statement to production tooling — architecture and implementation both, which is what makes the system answerable to a single point of view.
I hold sole technical ownership of SculptAI: product strategy, architecture, implementation, validation and operations. There is no engineering team behind it. Every decision on this page is one I made and can defend — including the ones I would make differently now.
- Product design
- Framing the problem as adaptation rather than plan generation, deciding what the product asks for and what it infers, and drawing the line between shipped and unfinished.
- UX and UI
- The mobile-first surface, the five-tab structure, and the in-session design of Gym Mode — the subtractive decisions that come from designing for a busy gym floor.
- System architecture
- The engine decomposition, the event model, the declared contracts between engines, and the choice to model absence as a first-class event.
- Implementation
- The interfaces, the application logic, the generation pipeline behind the exercise library, and the internal tooling in Atlas and the Cockpit.
- AI systems design
- Deciding what the product infers versus what it asks, where model-driven behavior is allowed to act on a user's plan, and what it must declare when it does.
- Engineering method
- AI accelerates exploration and implementation in my work, and I keep responsibility for the result: the architecture is mine, I review the source, and behavior has to survive automated tests, live-data validation and visual QA before it counts as working.
- Testing and validation
- Identifying the behavioral loops worth verifying, building the harness that exercises them against live data, and writing the release smoke checklist.
- Product operations
- The Cockpit: system status, invitation control, user administration and an activity feed — the operational surface a live product needs on day one.
The interesting failures in an adaptive product live between disciplines. A missed workout is at once a data-model question, an interface question, and a question about how it feels to be told your plan has changed.
When one person holds the whole system, the architecture has to carry the institutional memory. That is why the map, the contracts and the harness exist as products in their own right.
09Current status
Current status
What exists, what is still in progress, and what is deliberately not claimed.
SculptAI is in active development and beta preparation. The build shown throughout stamps itself v1-beta-rc-1; the surfaces around it — beta gate, invitation flow, legal hub, smoke checklist — are the work of getting a first group of real users in.
- Built and demonstrable: the onboarding-to-plan chain, the weekly split, Gym Mode, Progress, the exercise library and its generation pipeline, Atlas, the evidence harness, the smoke checklist and the Cockpit.
- In progress: closing the gaps the connectivity graph records, and running the seventeen loops and eighteen smoke checks to completion against the release candidate.
- Explicitly not shipped: Coach, whose backing data store SculptAI's own tooling records as absent from production.
- Outcome metrics — users, retention, revenue, latency — are not claimed here; the product has not met a cohort yet.
What this demonstrates is the discipline that produces business results: framing a problem, decomposing it into a system, building the software and the tooling that keeps that system inspectable, defining what would count as proof, and being precise, in public, about which parts are finished.
What I would do differently
- Build the connectivity view first. The view that records confirmed defects and unverified assumptions turned out to be the most useful thing in Atlas, and it was written last.
- Write the loop harness alongside the loops. Naming a behavior as a testable loop while designing it is cheaper than reconstructing the list later.
- Declare consumers earlier. The 'who depends on this' row is the one that rots, and it would have caught coupling I only found by reading the graph.
Want to go deeper than the write-up?
Happy to walk through the architecture, the trade-offs, or the code directly.
















