A virtual Seint artist. It starts from the palette Seint's own Find My Shade quiz would give, observes the face, applies Seint Artist Theory to adjust products and placements, renders the look on photographs with our own compositor and live with Banuba, and revises the look with the user.
The work is seven modules. Each module can be built and tested on its own. The proof of concept is those modules running as one session, in AR and on photographs.
What "finished" means
Two conditions, both required.
Every module has passed its required minimum checks in its own test setup.
A Seint artist accepts the full look on at least 95 percent of the frozen photo set. Accept means the artist would give that look to the user as the starting point. A small opacity change is allowed. A change of product, placement, or decision is not an acceptance. Other bars are on the acceptance page, in steps of 5 percent.
A walkthrough with no score report is not acceptance. The measure is defined on the acceptance standard page.
System map
Every piece of work belongs to one activity. Configure happens before a session. Experience is the session. Evaluate measures both. Select a box to see what it is for and which records it shares.
Configure publishes what a session is allowed to use. Experience runs the same decisions in both modes. Evaluate owns the bars on the acceptance page.
Define the Seint roles, including Cream Corrector and the features (eyes, brows, lips), and the landmark stencils each role may use, with depth ceilings per zone.
Add new roles during the proof of concept. The list is fixed.
Hold the written Seint method and its rule list, each rule tagged with its source. Version 2 is the starting text. The Unified Theory is the reference.
Change without a version and a record of what moved.
The Look Composer agent starts from the quiz palette, chooses elements, stencils, products, and settings in a fixed order, and treats every finding with the correction ladder. The Look Editor agent revises that look from chat.
Apply the look JSON to photographs with our own compositor, and to a live face through Banuba.
Choose a product or a placement.
Two modes, one decision
AR and photo use the same analysis, the same theory, the same Look Composer agent, the same Look Editor agent, and the same look JSON. The mode changes only how the face is captured and how the look is shown.
AR captures four poses: straight, left, right, and chin up, so the neck is in frame.
Photo requires a straight photograph. Left and right are optional. A neck photograph is optional. The main highlight is matched to the face. When the neck is visible, the report also says whether the neck is darker than the face and how the jaw contour will bridge it.
Overview
Platforms
The user apps capture the face and paint the look. The backend owns the data, the APIs, and both agents. It is the core of the system.
How the pieces connect
User apps
iOS
Android
Web
Seint team
Admin
Core
FastAPI
CMS data, APIs, the Look Composer agent, and the Look Editor agent.
Data
Postgres
pgvector indexes product use cases. There is no separate vector database.
Capture and live AR rendering (Banuba) stay on the user apps. Photo rendering moves to our own compositor on the API (planned; today the web app's photo test still uses Banuba). Analysis, composition, retrieval, and edits that need a model go through the API.
iOS
The user app for preferences and the full experience, in AR and photo. Native iOS. The interface toolkit is not chosen yet.
The same app includes test modules for stencils, product rendering, and related checks, so a build can be tried on a phone before the scores are recorded.
Android
The same user app as iOS: preferences, AR, photo, and the same test modules. Native Android. The interface toolkit is not chosen yet.
Web
The same user experience as iOS and Android, without the test modules. Next.js.
Admin
For the Seint team: configure, test, evaluate, and change the platform. Next.js. It is a CMS plus the test platform: catalogue, stencils, theory, retrieval checks, and scores.
Backend
FastAPI. It owns the CMS data, the APIs, and both agents. Capture and live AR rendering (Banuba) stay on the user apps. Photo rendering moves to our own compositor on the API (planned; today the web app's photo test still uses Banuba). Face analysis, composition, retrieval, and edits that need a model are requested through the API.
Data
Postgres. Product use-case search uses pgvector in that same database. Inventory does not add a separate vector database.
Overview
Scope
What the proof of concept includes, and what it leaves out. This is the working boundary until the Seint team changes it.
Included
Face analysis
AR and photo.
AR poses: straight, left, right, and up, for the neck.
Photo: up to three positions. Straight is required. Left and right are optional. A neck photograph is requested and optional.
Face shape as probabilities over round, heart, oval, oblong, rectangle, square, pear, and diamond. Shape changes contour only when the top shape's confidence is at least 0.55.
Skin tone by region, including the neck when it is visible.
Skin texture, and a separate under-eye texture reading, used to choose between an under-eye crescent and corner accents. Lip colour. Lip texture. Eye, hair, and brow colour.
Issues with a location: redness (mild or vivid), brown pigmentation or melasma, raised blemishes and acne, dark circles, fine lines and texture.
Dark areas classified as a colour cast (blue, purple, green, muddy) or a shadow from structure, with the darkest point.
A fixed set of notes the composer can use. The list is on the face analysis page.
Age. The profile is the source when the user has provided it. Gender is not collected.
Profile
Age, mood, occasion, season.
Find My Shade answers: level, face A–D, skin type, coverage, powder finish.
Concerns the user names: redness, dark circles, pigmentation, texture.
Coverage per zone, optional. For example, more on a melasma patch, less under the eyes.
Application order preset: highlight first, contour first, main first, Cheetah dots, or one brush. It changes the guide only.
Free-text preference, shown back to the user as structured points before a look is built.
Known skin conditions, allergies, and ingredient limits.
Seint palette: the products the user already owns.
A saved base profile that a session can override without deleting.
Inventory
A digital record of current Highlight (24), Contour (14), Lip + Cheek (40), Illuminator (7, all cream), Balm, Bronzer (5), and Cream Corrector (12, the Demi line) shades.
For the features step, the products seintofficial.com sold on 29 September 2026: Eyeshadow (56), Eyeliner (one shade, black), Pencil (13), Brow Wax, Archangel Brow Gel, Lipstick (3), Lip Tint (5), Lip Gelato (9), Lip Oil (11), Lip Whip, Lip Balm, Blackberry Lip Flush, and Pressed Pigment (20). Seint sells no concealer and no mascara. Highlight is Seint's concealing shade, and Cream Correctors treat colour casts.
Level-set membership: which No. 4, No. 8, and No. 12 collections and which of the 48 quiz faces include each shade.
Each product categorised by the element roles it can fill.
A written use case on every product.
A vector index of those use cases, stored in Postgres with pgvector.
Situation retrieval that can be tested against artist-labelled answers. Retrieval uses filters and shade scoring first, then the pgvector index.
Elements, theory, composer, renderer
A fixed list of elements. Each element has a short theory paragraph passed into the composer, and a set of stencils. Each stencil has a one- or two-sentence usage line, a blend style (gradient, feather, overflow, directional drag, or stipple and buff), and a blend recipe that moves the placed product the way the artist's brush would.
Stencils carry depth ceilings per zone, for example under-eye brightening at most 0.60, and a safe direction when landmarks are uncertain.
A management screen for theory text, stencil usage, and stencil weights. The screen cannot add an element.
Artist Theory v2 as the starting document, editable in the application as markdown, without a code deploy.
The Look Composer agent. It starts from the brand base: the Find My Shade palette and the No. 4, No. 8, and No. 12 sets for the user's level. An LLM agent then fine-tunes that base in four steps, in dependency order: base complexion (highlights and contour), correction, optional colour and glow, and features. Code does the maths and the rule checks. jev (TypeSafe) answers the atomic checks at each gate. A vision model checks the render. The user always confirms the face report (G1) and the final look (G4). The complexion (G2) and the optional colour (G3) are shown as editable summaries, and ask the user only when a check is not confident. The flow is on the composer page.
The Look Editor agent, used in both modes. It either changes one setting, redoes one element, or rebuilds the plan. On-screen toggles and sliders are not this agent.
The look is a JSON object. Our own compositor renders it on photographs; Banuba applies it in live AR only.
Not included, unless the Seint team adds it
Eye, brow, and lip products in live AR when the face reading for that area is not confident enough (below 0.70, a starting value). They are then drawn on the photo only, with a short note on the final-look screen. The features step always decides them. Tools and setting products appear in the guide as text. The guide names the powder and spray the quiz would give: matte to Vanilla Dust, radiant to Feather Blotting Dust; oily or combination to Fixate, dry or balanced to Plush Prep Mist. Plush Prep Mist was sold out on 29 September 2026, so availability is checked when the guide is written.
Drawing Cream Correctors in AR, if the first build cannot draw them honestly. Cream Correctors (the Demi line) are in the catalogue. In photo mode they render as a subtle colour shift, because they are drawn at 0.10 opacity (Seint artists describe them as 10 percent opaque). In AR they may be named in the guide without being drawn. A deeper highlight is not a substitute for a corrector: it treats a darker spot, not a colour cast.
A purchase checkout. The result lists products to keep and products to buy.
Accounts beyond a saved profile on the device or session.
Continuous analysis on every camera frame. The session captures, then analyses.
Build order
Photographs come before AR. A still image can be scored again. A live scan cannot.
Agree the records modules pass to each other, and freeze the face set.
Pass the required minimum checks for each module on its own.
Run the photo session from start to finish with no hand-edited JSON. Record the score, even if it is under the photo bar.
Raise the required scores to their bars. Optional rows are recorded and do not block this step.
Add AR capture, live render, and the live-scan bar.
Pass the edit checks, and confirm the guide and the product list match the look the user saw.
Overview
Find My Shade prior
Seint's Find My Shade quiz is Seint's own codified artist. The composer starts from the palette the quiz gives, and leaves it only when the face or the brief gives a reason, which the plan states.
What the quiz decides
Six answers, 6,912 paths. The level and face answer choose the palette. The other answers choose tools and finishing products.
Answer
What it selects
Level (1–12) and face (A–D)
The palette: three highlights, one contour, one bronzer, two Lip + Cheek, and one illuminator, or Balm at Level XI faces C–D and Level XII faces A–D. Also one or two eyeshadows. 48 level-faces, 38 distinct palettes.
Skin type
The spray: oily or combination to Fixate, dry or balanced to Plush Prep Mist.
Coverage
The brushes: light to medium gets Shape, Blush + Bronzer, and Detail. Medium to full gets IIID, Blush + Bronzer, and Detail.
Powder finish
Matte to Vanilla Dust. Radiant to Feather Blotting Dust.
Age
Nothing in the observed logic. Age is where the artist theory adds most: lift placement, less shimmer, coverage only where needed.
How the composer uses it: the brand base
The quiz palette and the level-based No. 4, No. 8, and No. 12 palettes are the base logic of every look. They keep the result consistent with what Seint itself recommends. Face analysis only fine-tunes the choice, and every change carries a reason.
Step S3 of the composer builds the brand base with no model: the quiz palette for the confirmed level and face, plus the No. 4, No. 8, and No. 12 sets for that level. On 29 September 2026 every level's No. 4 set sat inside its No. 8 set, and No. 8 inside No. 12. The sources only add products; they never disagree.
The agent picks from the brand base first. A product outside it must carry a deviation: what it replaces, why, the rule it follows, and the finding it answers. A plan with an unexplained product fails the schema.
The main highlight is chosen from the quiz highlights first. The search widens to all 24 only when none is close to the face, and the wider pick is recorded as a deviation.
If the user has not taken the quiz, level and face are estimated from the photograph and confirmed by the user at the first gate. Skin type, coverage, finish, and age are asked, in the quiz's wording, because a photograph cannot tell them reliably.
If the capture cannot be trusted for colour, the quiz palette is the look. This reproduces Seint's own recommendation instead of guessing.
Acceptance
ID
PoC
Bar
Requirement
Pass condition
QP-1
Required
Minimum
The quiz map is loaded and reproduces the published palette for every level and face.
All 48 level-faces return the published set.
QP-2
Required
Minimum
A capture that fails the colour check produces the quiz-only look, marked as such.
A failed-light fixture returns the quiz palette and a notice.
QP-3
Optional
Minimum
The system's looks are preferred to quiz-only looks in the blind review.
Artists rate the system at least as high as quiz-only on the frozen set.
Overview
Acceptance standard
Bars follow how much a miss would hurt, and how hard the check is. A required row must pass for the proof of concept. An optional row is scored and shown, and a miss does not fail it. The set is frozen by the Seint team and the development team before scoring starts.
Accept and revise
Accept. The artist would give this look to the user as the Seint starting point. A small opacity change is allowed.
Revise. The artist would change a product, a placement, or a decision.
The Seint team and the development team agree the faces, the reference notes, and the raters before the run. Adding easier faces after a low score, or removing harder ones, voids the result.
The frozen set
At least 40 faces.
At least a quarter of faces at Monk 7 to 10, and at least one face in every Monk band.
Cool, warm, neutral, and olive undertones.
At least five faces with a colour cast under the eye, five with a shadow from structure, and five with textured under-eyes.
At least five faces over 50, and five with pigmentation or melasma.
The issue types listed under face analysis, and some faces with none of those issues.
Photo mode is scored on the full set.
AR is scored on at least 15 live scans taken from that set. Live tracking fails for different reasons, and 40 live scans are not required for this proof of concept.
Checks
Required must pass. Optional is scored, and a miss does not fail the proof of concept. Percentage bars move in steps of 5.
Check
PoC
Bar
Reason
Artist accepts the full look, photo mode
Required
95%
This is the number the proof of concept claims. It is hard, and a miss is the claim failing.
Artist accepts the full look, AR
Required
85%
Live tracking adds failures that are not the look. The set is at least 15 scans.
Skin level within one level of the artist
Required
95%
The main highlight is chosen from this level. A wrong level reads as a mask.
Faces with no issues stay clear
Required
85%
A false finding is hard to avoid and can be waived. It should not be common.
Issues the artist marked are covered, or the plan states why not
Required
90%
A missed distraction is a failed look.
Front-pose placement is acceptable
Required
90%
Placement is the look. AR drift is recorded and does not fail this proof of concept.
Retrieval returns the artist's shade in the top 3
Required
95%
The composer can only choose well from a shortlist that contains the right shade.
A chat edit does what was asked
Required
95%
The scripted set is small. Rebuilding the look when the user asked for less blush is a failure.
Unknown product ids, and products blocked by an allergy
Required
Zero
These are correctness checks, not taste.
Free-text conflicts are shown, not guessed
Optional
80%
The user still confirms the parsed points before a look is built.
Render colour is rarely the reason for a rejection
Optional
80%
A small colour miss is calibration. It does not by itself fail the proof of concept.
No geometric morphing, and no undisclosed skin smoothing
Required
Zero
A try-on that reshapes the face shows something makeup cannot do.
AR frame rate on the reference phone
Optional
20 fps
A lower rate does not change the products or the placement.
Correction ladder stops at the artist's step, within one step
Optional
80%
Over-correction is the common artist complaint.
Contour reads as ashy shadow, not brown
Optional
90%
A brown or orange contour is a known failure, worst on deeper skin.
Before scoring, two artists rate the same 10 looks. Their agreement is the ceiling for any bar. If artists agree with each other less than 95 percent of the time, the photo bar is reviewed, not silently missed.
How a row is read
Required. The row must pass. A module may be connected to the others when its required minimum rows pass.
Optional. The row is scored and shown. A miss does not fail the proof of concept.
Minimum. The module behaves correctly on the stated cases.
A percentage. Measured on the shared set after the modules are connected. Bars move in steps of 5. A straightforward check sits at 95 or 100 percent. A hard check that still decides the look sits at 90 or 95 percent. A hard check that can be a little less precise sits at 80 or 85 percent. The proof of concept is not complete on a minimum pass alone.
Each module page lists its own rows, with the same colours.
Activity
Configure
Work that can be prepared before anyone opens a camera. A session uses only what these four editors have published.
Four editors
Editor
Who uses it
What it must do
Profile
The user, and the Seint team when preparing a demonstration
Save the base profile. A session override does not change the base profile unless the user chooses to update it.
Inventory
The Seint team
Add and edit a product, its use cases, and its render values. Maintain level-set membership (No. 4, No. 8, No. 12, and the 48 quiz faces), the shade ladder, and retired-shade substitutes. Rebuild the pgvector index. Run a situation query and show each retrieval stage.
Elements and stencils
The Seint team, with an artist checking placement
Edit the theory paragraph, the usage line, the weights, and the depth ceiling per zone. Preview the mask on a reference face. There is no control to add an element.
Artist theory
The Seint team. An artist owns the wording.
Edit the markdown and the rule list, replay a fixed set of faces, and publish a version. Each rule carries its source and evidence label: sourced, inferred, or secondary.
What stays fixed
The element list does not change during the proof of concept. Products, level sets, stencil weights, depth ceilings, usage lines, theory text, and the base profile do change, through these editors, without a code deploy.
Activity
Experience: AR
A live session. The user can change today's brief, then the system captures four poses, reports what it saw, composes a look, and paints it on the live face.
Wait targets are requirements. They can be changed by agreement. They cannot be left undefined.
Steps
Brief
User sees. The saved profile, and controls for today's occasion, mood, coverage (overall, and optionally per zone), application order, and a note.
System. Overrides are stored on the session. The base profile is unchanged.
The user sets the pace
Capture
User sees. Direction for four poses: straight, left, right, chin up. Hair off the forehead. Neck in frame. No flash.
System. Each pose is kept or rejected by the quality gate, with a reason.
During capture
Analysis
User sees. Short statements as observations are ready. Not an empty waiting state.
System. Face analysis on the kept frames.
10 seconds or less
Face report
User sees. Skin level, undertone, face shape with its confidence, issues on a map (each dark area marked as a colour cast or a shadow), under-eye texture, and anything uncertain. The user can correct the report, for example by marking freckles to keep.
System. Corrections are written onto the session before composition. Any Find My Shade answer still missing (skin type, coverage, finish, age, and level or face when colour was unreliable) is asked here, in the quiz's wording. This is gate G1.
The user sets the pace
Composition
User sees. Two short, editable summaries while the look is built: the complexion (highlights, contour, and any correction), then the optional colour and glow. Each has "Looks right, continue" as the default. They wait for the user only when a check is not confident; otherwise the look carries on.
System. The composer steps, with gates G2 and G3. The render check uses a snapshot of the current frame.
First card in 3 seconds or less. Full look in 25 seconds or less of system time, not counting time on the cards.
Live look
User sees. The face, live, with the look applied. A before-and-after control.
System. Banuba tracks the face and paints the blended look from its baked textures. Eyes, brows, and lips appear live only where that area is tracked with confidence; otherwise they are shown on a photo, with a note.
The user sets the pace
On-screen edit
User sees. Element on or off, opacity, zone weight, and one step lighter or deeper.
System. The render updates. No model is called.
Immediate
Chat edit
User sees. A text field. The change matches the request: one setting, one element, or a new plan. Undo is available.
System. The request is classified. The classes are defined on the composer page.
Direct: immediate. One element: 12 seconds or less. New plan: 25 seconds or less.
Result to keep
User sees. The application steps in the user's chosen order, the matching official collection (No. 4, No. 8, or No. 12) where one fits, and a list of products already owned and products to buy.
System. Saved with the theory version used to build the look.
The user sets the pace
Activity
Experience: photo
The same decisions, the same report, and the same editors as AR. Capture and display are the only differences.
Steps
Brief
User sees. The saved profile, with the same overrides as AR.
System. Overrides stay on the session.
The user sets the pace
Photographs
User sees. Straight is required. Left and right are optional. A neck photograph is offered and optional. A rejected photograph shows the reason.
System. The quality gate runs on each file. The depth match always uses the face. If the neck is not visible, the later report says the face-to-neck check was not possible.
The user sets the pace
Analysis
User sees. The same progress text as AR.
System. Analysis of the photographs the user kept.
10 seconds or less
Face report
User sees. The same report as AR, including corrections.
System. Corrections are written onto the session before composition. Any Find My Shade answer still missing (skin type, coverage, finish, age, and level or face when colour was unreliable) is asked here, in the quiz's wording. This is gate G1.
The user sets the pace
Composition
User sees. The same two cards as AR.
System. The render check uses the rendered straight photograph.
First card in 3 seconds or less. Full look in 25 seconds or less of system time, not counting time on the cards.
Look on the photographs
User sees. The look on each uploaded photograph, with angle switching and before-and-after.
System. The same JSON, rendered once per photograph.
The user sets the pace
On-screen edit
User sees. The same controls as AR, redrawn on the stills.
System. No model is called.
Immediate
Chat edit
User sees. The same editor as AR.
System. The same three classes.
Same targets as AR
Result to keep
User sees. The same guide and product list.
System. The same saved plan.
The user sets the pace
Activity
Evaluate
The activity that makes each module testable on its own, and makes the acceptance bars meaningful.
What it contains
A test setup for each module, with fixed inputs and a visible result.
The frozen face set, including artist reference notes.
A review in which the artist marks Accept or Revise and gives a reason. The artist does not see which looks were made by the system and which were references, where a blind review is possible.
A blind comparison of three looks per face: the system's look, the artist's reference, and the quiz-only look. The system should beat quiz-only and come close to the artist.
An artist-to-artist agreement check, which sets the ceiling for every bar.
A score report for the run. The report is the acceptance record.
Rule for a change
A change to theory, retrieval, stencils, or render values is kept only if the score stays at or above the bar. If a supporting check falls, the change is reverted. The theory page states the same rule for a published theory edit.
Main difficulty
Without artist reference judgments, the percent cannot be calculated. The set also has to include deeper skin and poor lighting. A set of only clear, evenly lit, light faces will overstate the result. Deeper skin needs its own quota, Monk 7 to 10, because image colour is least reliable there and a brightener can turn ashy.
Module 1. Experience
Face analysis
Turn a guided capture into a structured description of the face, neck, and skin. Each claim carries a confidence. This module does not choose a product.
What it produces
Skin level from I to XII, as a distribution with the most likely level, measured from face skin with shine excluded.
Undertone: cool, warm, neutral, olive, or undetermined, with a confidence. Undertone is read relative to other skin at the same level. Undetermined is a valid result.
Face and neck: whether the neck is darker or lighter than the face, when the neck is visible. This is a check, not the match target.
Face shape as probabilities over round, heart, oval, oblong, rectangle, square, pear, and diamond, read from the landmarks. Shape changes contour sub-zones only when the top shape is at least 0.55 confident. A round or heart face gets more contour at the temples.
Tone for forehead, temples, both cheeks, under-eye, nose, chin, jaw, and neck when visible.
Skin behaviour: oily (the share of shine in the T-zone), dry, combination, mature, textured, or unknown. A separate under-eye texture reading.
Lip colour and a short lip texture note. Eye, hair, and brow colour.
Findings. Each finding has type, region, position, size, severity, confidence, and whether it is worth covering. Types: redness (mild or vivid), brown pigmentation or melasma, raised blemish or acne, dark circles, fine lines and texture. Dark areas are also classified as a colour cast, with its hue (blue, purple, green, muddy), or a shadow from structure, and carry their darkest point.
For each finding, a predicted result after each correction step, so the composer can stop early.
Age markers: jowl, hooded eyes, under-eye hollow. Cheekbone position, with a confidence.
Notes from a fixed list only: where light and shadow already are, natural flush kept separate from redness, freckles or marks to preserve, hair and brow colour lean, fine lines, and asymmetry to leave alone.
Age. If the profile already has it, the profile wins. A guess from the photograph is stored only as a low-confidence hint. Gender is not collected or estimated.
The pose or photograph each value came from.
What is required, and what is optional
The proof of concept needs only what Find My Shade collects. Everything else fine-tunes the look, and its absence never blocks composition. If something essential is missing, the user is asked before anything is composed.
Tier
What
Source
If missing or unsure
Capture gate (required)
One face, large enough, facing straight, neutral expression, sharp, well exposed, white balance, even light, nothing covering the face, bare skin, no beauty filter
Code on ML measurements (MediaPipe Face Landmarker, OpenCV sharpness, a colour-constancy estimate). Vision questions for makeup and filters.
Retake. If only the colour is unreliable, geometry is kept and level and face come from the user.
Technical (required)
Landmarks and head pose, skin, hair and neck masks, colour per zone
MediaPipe Face Landmarker and segmentation, face parsing, CIELAB after white balance
Retake. No stencil can be built without them.
Find My Shade minimum (required)
Level, face A–D, skin type, coverage, powder finish, age
Level and face: estimated, then confirmed by the user. The rest: asked, in the quiz's wording.
Asked at the first gate. Composition waits.
Derived (required)
Undertone, read against other skin at the same level
Computed from zone colour and the face letter
The quiz face set stands.
Recommended (optional)
Under-eye darkness as colour cast or shadow, redness, pigmentation, blemishes, under-eye texture, fine lines, shine, cheekbone, age markers, eye shape, eye colour, stated concerns, look intensity
ML models, with vision questions where structure matters (hollows, hooded eyes)
The base default is kept. Nothing blocks.
Later (optional)
Face shape, brows, lips, asymmetry, scars and marks, face-to-neck difference, feature proportions
ML and vision
A default is used.
Each measured value has a confidence threshold. Below it, the value is treated as unknown: a required value becomes a question, and an optional one falls back to the base default. An optional question is asked only when the answer would change this look, for example eye shape only when the eyes will be made up.
What an artist reads, and the signal for it
An artist reads
The system measures
It decides
Depth (level)
Lightness of cheek and forehead skin after white balance, as a 12-level distribution
The main highlight
Undertone
Hue angle compared with other skin at the same level
Which highlight label, contour warmth, Lip + Cheek family
Face against neck
Colour difference between face and neck
How the jaw contour bridges them
Redness
Local rise in redness against the face
Ladder; green corrector only for vivid red
Dark circles
Lightness drop, hue shift, hollow, darkest point
Colour cast or shadow; corrector choice and where it starts
Pigmentation, melasma
Local darkening with a brown shift
How far up the ladder to go
Texture, fine lines
Fine detail in the under-eye and around the mouth
Under-eye crescent or corner accents; no shimmer on lines
Face shape
Length, width, forehead, cheekbone, and jaw ratios
Contour sub-zones, when confident
Cheekbone
Widest line and the underside of the bone
Cheek contour height; moves up when unsure
Age markers
Jowl, hooded eyes, hollows
Lift placement, thin liner, corner accents
Colour cast or shadow
A dark area is either a colour cast (blue, purple, green, or muddy), which a complementary corrector can filter, or a shadow from the bone structure, which only light can lift. The analysis measures the hue shift and lightness drop against the skin around it, checks whether the area sits in a hollow, and records the darkest point, where an artist starts. A shadow never gets a corrector.
Capture quality
Before analysis, the capture is checked (gate G0) for light, white balance, blur, flash, and makeup already on the face. A failed capture is retaken or stored as unreliable. It is not analysed as a normal result. The gate also records how far the colour can be trusted. When it cannot, the composer uses the quiz answers alone, which reproduces Seint's own recommendation, instead of guessing.
In AR, the four poses are straight, left, right, and chin up. A failed pose is retaken or recorded as missing, with the reason. In photo, analysis does not start without a usable straight photograph.
Difficulties
Phone cameras change colour with the light, white balance, flash, and beauty processing.
Artists ask to see the neck, but the main highlight is matched to the face. The neck only decides how the jaw contour bridges the two. Many photographs crop the neck, so the report must say when the check was not possible.
A shadow on one cheek can look like a dark spot. Hair at the hairline can look like forehead spots. An eye in shadow is not a dark circle. A dark under-eye can be a colour cast or a shadow from the bone structure, and they need different products.
Redness, a pimple, and natural flush look similar and lead to different products. They must be separated.
Unstructured notes cannot be used reliably. The note list is fixed for that reason.
Age estimated from a face is unreliable. The profile is the source of truth.
AR frames are less even than a still photograph the user selected.
Colour from a phone is least reliable on deeper skin, where the set needs its own quota.
Acceptance
ID
PoC
Bar
Requirement
Pass condition
FA-1
Required
Minimum
AR guides four poses. A failed pose is retaken or stored as missing, with the reason.
The session record lists each pose as kept or rejected.
FA-2
Required
Minimum
Photo analysis does not start without a usable straight photograph. Left, right, and neck are accepted when provided.
No straight photograph: blocked, with a retake message. Straight only, and no neck: the result says the depth match is face-only.
FA-3
Required
Minimum
Harsh light, blur, flash, or makeup already worn is flagged.
A fixture for each failure returns a flag, not a normal result.
FA-4
Required
Minimum
The report includes skin level, undertone or undetermined, face shape, regional tones, lip colour, lip texture, skin behaviour, the under-eye texture reading, and the face-to-neck check when the neck is visible.
Every field is present on a usable straight photograph.
FA-5
Required
Minimum
Each issue type can be returned with a location. A finding without a position cannot be saved.
A labelled example of each type returns a finding in the correct zone.
FA-6
Required
Minimum
Notes use the fixed list only. An age estimate never replaces the profile.
A profile age of 42 remains 42 if the photograph suggests a different age.
FA-7
Required
95% / 85%
Skin level is within one level of the artist. Clean faces do not gain a finding worth covering.
Skin level is within one level on at least 95 percent of the set. Clean faces stay clear on at least 85 percent. The theory's provisional level target is 90 percent; check 95 against artist-to-artist agreement.
FA-8
Required
90%
Issues the artist marked as worth covering are covered, or the look states why not.
At least 90 percent of those issues are handled or explicitly waived.
FA-9
Optional
80%
Dark areas are classified as colour cast or shadow in agreement with the artist.
At least 80 percent agreement on the labelled set.
FA-10
Optional
80%
Textured under-eyes are flagged in agreement with the artist.
At least 80 percent agreement on the labelled set.
Test setup and records
Test setup. Load a photograph or a recorded AR session. Show regions, findings, and confidence. Score a folder of labelled faces with one command.
Reads a capture set. Writes a face analysis, used by the report, the composer, and the renderer.
Module 2. Configure and experience
Profile
A saved description of the user, plus what the user says in this session. The session wins. The system still produces a look when the user provides very little.
Fields
Saved before a session: age, season, skin conditions, allergies and ingredient limits, and the Seint palette of products already owned.
Set or overridden in the session: mood, occasion, coverage, and free text.
Stored when provided: undertone quiz answers and how the undertone was judged (veins, jewellery, draping), vibe, finish, comfort with a made-up look, a keep list, time and skill, and the setting the look has to last in.
Find My Shade answers, stored exactly, so any of the 6,912 quiz paths can be kept without loss.
Concerns the user names. They start the correction ladder and are confirmed or rejected by the face analysis.
Under-eye texture (smooth, some lines, crepey), optional.
Coverage overall, and optionally per zone. Under-eye values are capped by the depth ceilings.
Application order preset: highlight first, contour first, main first, Cheetah dots, or one brush. It changes the guide, not the look.
Intensity: Natural, Everyday, Full, or Glam, asked at the first confirmation with Everyday pre-selected. The same face gets different stencils and opacities.
Features to enhance or soften, and colour likes and dislikes, such as a lip family or no shimmer.
Time and skill map to collection No. 4, No. 8, or No. 12.
Free text is converted to a short list of constraints and shown to the user before composition. The user can remove a constraint.
Allergies are hard filters. A blocked product cannot appear in a look.
The palette is a preference. The look stays inside it when it can. If it steps outside, the plan states the reason.
Source order, highest first: this session, the saved profile, a hint from analysis, the system default. This holds for identity and preferences. For values the camera also measures (level, undertone, skin type), the stated and measured values are both kept and reconciled by the theory's conflict rules, and a large disagreement is shown to the user. Every field stores which source filled it.
If the user provides nothing, the default intensity is Everyday, with the coverage the quiz answer implies, light to medium unless stated. The plan states that the system chose them.
A consent flag for storing photographs and the analysis.
Difficulties
Many users will skip fields. The look must still be valid, and it must say that defaults were used.
Free text can contradict a selected option.
The owned palette may not contain a shade that matches the face. Staying inside it without a check produces a poor look.
Allergy filters need ingredient data. Early product records may not have it.
Skin conditions are health information. Storage needs a retention rule, not only a field.
Stated and measured level often disagree. Users tend to choose a lighter level than they are.
Acceptance
ID
PoC
Bar
Requirement
Pass condition
PR-1
Required
Minimum
A base profile can be saved and is present on the next visit.
Age, season, conditions, allergies, and palette reload correctly.
PR-2
Required
Minimum
A session can override occasion, mood, coverage, and free text without deleting the base profile.
After the session, the base profile is unchanged.
PR-3
Required
Minimum
Free text becomes constraints the user can confirm or remove.
The text "No shimmer, keep my freckles, I have a gala" produces those three items before composition.
PR-4
Required
Zero
An allergy match cannot appear. An empty profile still produces a look, marked as system defaults.
A flagged ingredient is absent. An empty profile records the system as the source of intensity.
PR-5
Required
Minimum
Owned products are preferred. Leaving the palette requires a written reason.
A step outside the palette is either absent or justified. No palette still yields a full look.
PR-6
Optional
80%
Conflicts between selected options and free text are shown to the user. They are not guessed.
At least 80 percent of a contradiction fixture set is surfaced for confirmation.
PR-7
Required
Minimum
Find My Shade answers are stored exactly and reproduce the quiz palette.
20 sample quiz paths reload and map to the published face set.
Test setup and records
Test setup. A form with a live view of the merged session and the source of each field. Fixtures: complete, empty, contradictory, and text only.
Writes a client context, used by face analysis for quiz hints, by inventory for filters, and by the composer.
Module 3. Configure
Inventory
The digital record of in-scope Seint products: what each product is, when it is used, and how it should look on skin.
Contents of a product record
Identifier, name, official descriptor (the depth and undertone label, for example "MEDIUM - OLIVE UNDERTONE"), element roles, finish, level-set membership (which No. 4, No. 8, and No. 12 collections and which quiz faces include it), colour from the official photograph and from the site swatch, use-case text, ingredient notes where known, availability or retirement with a family substitute, an eye-safe flag, and render values.
The proof-of-concept catalogue holds every product line that an element in the stencil library can use: 232 records, listed by element in the table below. Cream Correctors resolve for the correction element only. Balm is the illuminator at Level XI faces C–D and Level XII faces A–D.
One Lip + Cheek product can be retrieved for the cheek and for the lip.
Use cases are written as situations: who the shade suits, which depth, which undertone, and which problem. They are stored in Postgres and searched with pgvector. There is no separate vector database.
Retrieval order: hard filters (element, availability, allergy, palette preference), then shade scoring on depth, undertone, and pigment, then the vector match, then a final ranking. The test view shows each stage.
A shade graph links lighter, deeper, warmer, and cooler neighbours, ordered by photographed lightness, not by the depth label. Seint's labels and levels are not strictly in lightness order, so "one shade deeper" is a step on this measured ladder, not a new search. Contour neighbours also carry a chroma check: a contour must be less colourful than the main highlight.
Render values are tuned per skin-depth band, and differ by role. A single hex value is not sufficient.
Role
Drawn as
Highlight
Coverage that evens tone and keeps texture.
Contour
Coverage in its own colour, so it reads as ashy shadow. Never a multiply that turns brown.
Cream Corrector
A colour shift at 0.10 opacity. It barely changes lightness.
Lip + Cheek, bronzer
A tint.
Pressed Pigment (powder blush)
A powder tint, above the setting powder.
Illuminator
Added shine.
Setting powder
Less shine. No colour change.
Eyeshadow, eyeliner, brow products, lip products
Their own layers, which keep lashes, brow hairs, and lip texture.
Products for every element
Every element in the stencil library, the Seint products it can use, and how many stencils it has. Shade counts are the records in the proof-of-concept catalogue, taken from seintofficial.com on 29 September 2026.
Element
Seint products (shades)
Stencils
Notes
Main highlight
Highlight (24)
2
Matched to the face.
Brightening highlight
Highlight, a lighter shade than the main
11
Includes the under-eye crescent and the corner accents.
Correcting highlight
Highlight, one or two shades deeper than the main
7
Seint sells no concealer. Highlight fills that role.
Cream Corrector
Cream Corrector, the Demi line (12: O1, R1, Y1, OY1, YO1, OR1, RO1, V1, G1, O3, O5, O7)
8
Drawn at 0.10 opacity.
Contour
Contour (14)
16
Cheek, hairline, jaw, neck, nose, chin, and lip variants.
Lip + Cheek on the cheek
Lip + Cheek (40)
3
The default cheek colour.
Powder blush (a switch)
Pressed Pigment (20)
Uses the 3 cheek stencils
The user can switch to it. The composer picks it first only with a stated reason.
Bronzer
Bronzer (5: Bella, Heatwaves, High Tide, Tanlines, Xanadu)
5
On by default, as in the official level sets.
Illuminator
Illuminator (7), and Balm (1) at Level XI faces C–D and Level XII faces A–D
Fixate, Setting Spray (Plush Prep Mist is also listed, but was sold out)
None
Whole face. Named in the guide only.
The catalogue also holds Saved Salve (skin care). It is not an element and is not drawn. The stencil library has 87 stencils in total. The elements page lists them.
Not Seint products, or not on sale. Every element maps to a current Seint product line; none needs another brand. These names are flagged so they are never offered as Seint products:
"Blush" is not a Seint product name. The powder blush switch uses Pressed Pigment.
Seint sells no concealer and no mascara. Highlight and Cream Corrector fill the concealer role. Mascara is not modelled.
Plush Prep Mist was sold out on 29 September 2026. The guide falls back to Fixate or Setting Spray, or leaves spray out and says so.
"Lip Lush" is not a product. It was a misreading of Blackberry Lip Flush.
Retired shades (for example Petal, Scarlet, Carousel, and Tiger Lily) are not offered. A shade from the same family is suggested instead.
Brushes, sponges, and the spoolie are tools. They appear in the guide as text only.
Difficulties
The commercial catalogue changes. The boundary on the scope page is what keeps this finite.
Colour in the tin is not colour on skin, and it changes again across skin levels.
Vector search alone will confuse neighbouring shades. Shade choice is primarily a distance on depth and undertone.
Retrieval can be called accurate only against situations an artist has labelled.
Missing ingredient data weakens the allergy filter.
Tuning render values is slow visual work. It needs an ordered queue or it will consume the schedule.
Colour today comes from photographs and swatches, not instrument measurement. Production needs measured colour and opacity for each pan.
Acceptance
ID
PoC
Bar
Requirement
Pass condition
INV-1
Required
Minimum
Every in-scope shade has the fields listed above.
A catalogue report shows no missing field. Identifiers are unique.
INV-2
Required
Minimum
Products can be listed by element. Lip + Cheek resolves for cheek and for lip. Cream Correctors resolve for correction only.
Each element filter returns the expected set.
INV-3
Required
Minimum
Use cases are in Postgres and indexed with pgvector. A situation query shows every stage.
The test view shows removals, shade scores, vector hits, and the final order.
INV-4
Required
Zero
An unknown identifier cannot be returned. An allergy match cannot be returned.
Both counts are zero on the retrieval test set.
INV-5
Required
Minimum
The shade graph returns a neighbour where one exists.
Checks along the highlight and contour ladders return the expected neighbour.
INV-6
Required
95%
The shade an artist would use is in the top 3.
At least 95 percent top-3 recall on at least 40 frozen situations.
INV-7
Optional
80%
Render values are close enough that colour alone is rarely the reason for a rejection.
In the end-to-end review, "colour is wrong" is the reason on fewer than 20 percent of rejected looks.
INV-8
Optional
Minimum
Level-set membership reproduces the official No. 12 set and the quiz face set for every level.
A report per level shows no difference from the published sets.
Test setup and records
Test setup. A query view that shows every retrieval stage, and a preview of the swatch beside the render on two skin depths.
Writes a candidate set per element for the composer. The renderer reads the render values.
Module 4. Configure
Elements and stencils
An element is a Seint role. A stencil is a placement that role is allowed to use. The element list is fixed. Stencil text and weights are editable.
The elements
Each paragraph below is stored on the element and is given to the composer when that element is decided.
Element
Theory paragraph
Main highlight
The foundation shade, matched to the face (not the neck), from the Seint highlight whose undertone label fits the skin. It is the coverage workhorse and evens the face where coverage is needed, not everywhere. If two shades could both be right, use the slightly deeper one.
Brightening highlight
The main highlight plus lift: a lighter highlight on the planes that should come forward, such as the centre forehead, between the brows, down the nose, the centre chin, and the under-eye. It is diffuse light, not shine. Under the eye it is a light, inner-biased crescent, and on textured skin only the inner and outer corners. On deeper skin keep it close to the main, or it turns ashy.
Correcting highlight
A highlight one or two shades deeper than the main, pressed onto a darker spot (pigmentation, melasma) with the main stippled on top. Never a lighter shade on a dark spot: that emphasises it. It is the third step of the correction ladder, not a colour neutralizer.
Contour
Ash shadow, not bronzer. It gives coverage and restores the shadow that an even complexion erases. Cheek: short, directly under the cheekbone, strongest at the ear, stopping at the outer eye corner; if unsure, higher is safer than lower. Hairline: one continuous band blended into the hair. Jaw: mostly under the jaw edge, blended down the neck. It must read less colourful than the main highlight.
Lip + Cheek
One product, and the default cheek colour. On the cheek: on the apples for a fuller look, or higher, just above the contour line and pulled back toward the temple, for a lifted look (default over 40). On the lips: the centre of the lips, gloss or semi-gloss. Lip and cheek stay in one colour family. Sheer or skip the cheek only when flush is already clearly present. Pressed Pigment is the powder blush the user can switch to; the composer picks it first only with a stated reason.
Illuminator
A small point of cream shine on the highest points: top of the cheekbones, the bow of the lip, beneath the brow arch. Depth selects the shade from the level set. Balm replaces it at Level XI faces C–D and Level XII faces A–D. Keep it off fine lines and textured areas.
Bronzer
Warmth where the sun would fall, on and above the cheekbone, applied very sheer over the blush. It is in the official level sets, so it is on by default and off at Natural intensity. It is never used as contour.
Cream Corrector (Demi)
A very small amount of the complementary colour on the exact spot, under the highlight, only when a colour cast remains after the highlight steps. Orange for blue, yellow for purple, green only for true vivid red. The code's number follows depth. It starts at the darkest point, usually the inner under-eye, and may change shade moving outward. Never on a shadow from structure. At most three zones. It is drawn at 0.10 opacity.
Eyeshadow
The one or two quiz eyeshadows for the level and face are the base. Lid, crease, and outer-corner zones. On hooded eyes the crease colour sits above the natural fold, so it shows with the eye open. Monolid and deep-set eyes change the zones too.
Eyeliner
Seint's Eyeliner (one shade, black) is the base line. Pencil or an eyeshadow gives a softer line, as a stated change from the base. Kept thin on hooded or mature eyes.
Brows
Follow the natural brow and fill its gaps: Pencil, an eyeshadow, or the contour shade. Set with Brow Wax or Archangel Brow Gel.
Lips
Lip + Cheek on the lips is the default, in the cheek's colour family. Lipstick, Lip Tint, Lip Gelato, Lip Oil, and Lip Whip are alternatives when the brief asks. Lip Balm goes first, and Pencil lines.
Placement map
These are real renders on one test face (f010, from the Face Research Lab London Set, CC BY 4.0), made with the proof-of-concept stencil library. Each stencil is rebuilt from the face's landmarks, so the same definition works on any face. The stencil tables below list the full library.
The base look, placed and blended. Left: the product where it is first put down (main and brightening highlight, contour, Lip + Cheek, bronzer, illuminator, and lip colour), in the real shade colours. Right: exactly the same amount of product after it is blended the way an artist would. Blending adds nothing and removes nothing. It only spreads the product, so the colour covers more skin and gets softer. Shades for level 2, face A: White Peach, Palace, Astoria, Nude, Tanlines, Angel, and Cindy. Colours come from product photographs and are not colour-calibrated.
The renders below show each element on its own. They use marker colours so that the stencils can be told apart; these are not the product colours. Select a render to open it at full size.
Dashed outline: the placed seed, where the product is first put down.
Coloured fill: where the product ends up after blending. It is strongest where the product is densest.
Thin solid line: the outer edge of the blend, where coverage falls to a tenth of its strongest point.
Main and brightening highlight. The main highlight covers the face and fades at the hairline and jaw. The brightening highlight lifts the centre forehead, the nose, the under-eyes, above the lip and the chin, and is blended only out to the edge of its zone, so it never turns into a mask.Correcting highlight. A deeper highlight pressed onto a darker spot with a detail brush. It hardly moves when blended, so it stays on the spot. The sites shown are examples; in use they come from the face analysis.Cream Corrector (Demi). A colour shift at 0.10 opacity on the exact spot, with almost no movement. The sites shown are examples; in use they come from the face analysis.Contour. Cheek contour is heaviest at the ear and is blended up and back toward the top of the ear and the temple, softened under the cheekbone. Hairline contour is blended into the hair. Jaw contour is blended down the neck. The nose lines stay thin; they are shown at 0.6 here because the everyday look leaves them off.Lip + Cheek on the cheek. Placed just above the contour, then pulled back and up toward the temple. It stays off the nose and the lips.Bronzer. Swept wide and sheer where the sun would reach: the forehead out to the temples, and the cheeks from beside the nose to the temple. It goes on over the blush.Illuminator. Small dabs on the high points, tapped out only a little and kept off the contour.Setting powder. Pressed into the T-zone and under the eyes. It changes shine, not colour.Eyeshadow. The lid colour stays on the lid. The crease colour is blended up through the crease toward the brow bone and fades out before the brow. The lower lash line is shown at 0.5; the everyday look leaves it off.Eyeliner. A thin line along the upper lash line and the outer lower lash line. It barely spreads.Brows. Filled along the natural brow, then brushed up and out with a spoolie.Lips. Lip + Cheek pressed into the centre of the lips and tapped outward, inside the lip line.
The full look, with the eyes, brows, and lips, is on the blending page.
Minimum stencil library
Element
Stencil
Usage
Main highlight
complexion_planes
Where coverage is needed: forehead, around the nose, cheeks back toward the temples, chin, and along the jaw. Strongest on the cheeks and areas of concern, fading at the hairline and jaw edge.
Brightening highlight
undereye_crescent
A light, inner-biased crescent under each eye. Depth ceiling 0.60. The default when the under-eye is smooth.
Brightening highlight
undereye_corners
Inner and outer corner accents only. Used instead of the crescent when the under-eye is textured, and on mature skin.
Brightening highlight
center_line
Centre forehead, between the brows, down the nose, above the cupid's bow, and the centre of the chin.
Correcting highlight
uneven_zone
A deeper highlight on the darker area only, applied first, with the main stippled on top.
Correcting highlight
undereye_inner
A highlight one or two shades deeper than the main, pressed onto the darkest, inner point of the under-eye when it is darker, with the main stippled on top. Never on a shadow from structure. Depth ceiling 0.45.
Contour
cheek_hollow
Directly under the cheekbone, strongest at the ear, fading forward and stopping at the outer eye corner. Moves up when landmarks are uncertain.
Contour
cheek_lift
On or just above the underside of the cheekbone, blended upward. The lift variant, default over 40.
Contour
temple_hairline
One continuous band along the hairline and temples, blended into the hair. Stronger on round and heart shapes.
Contour
jaw_neck
Mostly below the jaw edge, lighter than the cheek, blended down the neck so the face does not stop at the chin.
Contour
nose_sides
Thin lines beside the nose, only when the plan asks for definition.
Lip + Cheek
cheek_apple
Apples of the cheeks, for a fuller look. Default under 40.
Lip + Cheek
cheek_lifted
Just above the contour line, pulled back toward the temple. Default over 40, or when lift is the intent.
Lip + Cheek
lip_center
Centre of the lips, from the same colour family as the cheek.
Illuminator
high_points
Tops of the cheekbones, the cupid's bow, and under the brow arch. A point, not a stripe. Cut out of textured zones.
Bronzer
sun_zones
A broad, very sheer field on and above the cheekbones, forehead, and temples, lightly across the nose. Lip + Cheek may overlap it. Never placed as contour.
Cream Corrector
finding_spot
Generated from one finding's darkest point and size. Small and feathered. At most three zones.
Cream Corrector
undereye_inner
The darkest, inner point of the under-eye, for a colour cast only. Drawn at about 0.10 opacity (allowed range 0.05–0.15).
Stencils are tied to facial landmarks, with separate weights for sub-zones, so one definition is used in AR and on photographs. Contour exposes weights for hollow, temple, jaw, and neck. Stencils carry their gradient (the cheek contour is strongest at the ear) rather than a flat fill.
The full proof-of-concept library has 87 stencils across the complexion, cheek, corrector, eye, brow, lip, and powder roles. Each is defined from landmarks in eye-distance units, so it can be rebuilt on any face. Each has variants for depth, face shape, age, texture, asymmetry, and findings (dark circles, redness, pigmentation, hooded, monolid, or deep-set eyes). Each also has a default opacity range, the stencils it must not overlap, the face-analysis inputs that select it, and a blend recipe. The composer sets an opacity for each stencil it uses. The opacity is the placed deposit: how much of the skin the product covers where it is put down, before blending.
Each stencil names how its product is blended, so the render can mock the brush. The style changes the edge and the spread of the deposit, not where the stencil sits.
Style
What it mocks
Used for
Gradient
Deposit ramps along an axis, strongest where the brush lands first
Eyeshadow lid to crease, lip centre outward
Feather
An even, soft edge in every direction
Illuminator points, liner edges, lip edges, some contour
Overflow or spread
A faint halo past the placement edge, as with a sheer wash or a fluffy brush
Bronzer, hairline contour, setting powder
Directional drag
A smear in one direction
Contour blended up and back, Lip + Cheek pulled toward the temple, crease windshield-wiper, brow spoolie up and out
Stipple and buff
Dots of deposit, then a light buff
Main, brightening, and correcting highlight, Cream Corrector, pressed coverage
Each stencil also carries a full blend recipe: the tool, the direction and distance the product is moved, the number of passes, and the edges it must stop at. The blending page explains it, element by element.
Face shape and depth ceilings
Face shape selects and weights contour sub-zones. A round face adds temple and jaw. A diamond face adds the top of the forehead and the tip of the chin. A pear face uses the jaw only. The library itself is the same for every shape. Shape is applied only when the analysis is at least 0.55 confident, and an artist or user can always override it, because Seint artists warn against a one-size-fits-all diagram.
Zone
Depth ceiling
Why
Under-eye brightening
0.60
A very light hand under the eyes. Heavy product creases.
Inner under-eye correcting highlight
0.45
Severe darkness is answered by a better corrector colour and precise placement, not thicker product.
Centre face brightening
0.80
Light, not a mask.
Main highlight
1.0
Full coverage is allowed where the user asks for it.
A ceiling caps the product placed in that zone. Blending then spreads it, so the finished coverage is lower.
Difficulties
A stencil that is correct on a front photograph will drift in AR when the head turns, unless it is tied to landmarks.
The jaw and neck often fall outside the face mesh Banuba paints. Neck continuity is a separate rendering problem. If the neck is not painted, the report must not say that it was.
Face shape changes which contour sub-zones are used and how heavy they are. It is the weakest signal in the analysis, so it is applied last and only when confident.
A localized stencil has to meet a small finding. A mask the size of the cheek is not localized.
Cream Correctors are about 10 percent opaque. Drawn too strongly they look like paint. Drawn honestly they are barely visible. The guide must still name them.
Under-eye and cheek contour are where placement most often fails: a triangle that is too bright or too low, or a contour that sits too low and drags the face down.
Acceptance
ID
PoC
Bar
Requirement
Pass condition
ES-1
Required
Minimum
The elements exist, including Cream Corrector and the features. The composer receives that element's paragraph when deciding it.
A compose trace shows the paragraph inside that step.
ES-2
Required
Minimum
Every element has at least one stencil. Every stencil has a usage sentence. The library above is present.
The management screen lists them. Empty usage text cannot be saved.
ES-3
Required
Minimum
Photo and AR use the same stencil record.
A weight change updates both previews. The mask is not copied into application code.
ES-4
Required
Minimum
Contour exposes hollow, temple, jaw, and neck. Correction masks are capped at three zones. An under-eye colour cast uses the inner under-eye Cream Corrector stencil at about 0.10 opacity (0.05–0.15), not a round stamp. The inner under-eye correcting highlight stays within its 0.45 ceiling. An under-eye shadow gets no corrector.
Four findings produce at most three masks. An under-eye shadow produces brightening only.
ES-5
Required
Minimum
The screen edits theory, usage, and weights, and previews a reference face. It cannot add or delete an element.
Walkthrough. The add-element control is absent.
ES-6
Required
90%
Artists accept placement on the reference set.
At least 90 percent of front-pose placements are acceptable across the eight face shapes, with the under-eye crescent and corner variants both reviewed. AR drift is recorded on the live subset and does not fail this proof of concept.
Test setup and records
Test setup. The manager, with the mask drawn on reference faces: eight face shapes, a front pose and a turned pose, one lighter skin and one deeper skin, and one textured under-eye.
Writes element and stencil records, used by the composer for what is allowed and by the renderer for what is drawn.
Module 5. Configure
Artist theory
The written Seint method. Artist Theory v2 is the starting text: one cream layer, the IIID roles, the placement map, the order of decisions, and how an artist chooses.
What the module holds
The v2 document, labelled with a version, as the text the composer consults.
An editor in the application. Publishing creates a new version. No code deploy is required.
Two uses of the same document. The prose is given to the generative steps. A rule list taken from the same document is checked by the rules gate.
Every look stores the theory version it was built from.
A draft can be replayed on a fixed set of faces before it is published, so the Seint team can see which looks changed.
A rule list in which every rule carries a principle, a strength (hard, strong, soft), and its source, with an evidence label: sourced (Seint or a named artist), inferred (our design), or secondary (from video notes). The composer may state a sourced rule as Seint teaching, and must present an inferred rule as the system's choice.
A conflict log. Where Seint sources disagree, for example cheek contour on or under the bone, or bronzer before or after blush, the default and the alternative are both recorded.
Foundations
IIID
What it is
Seint's one-layer cream foundation system. Highlight, Contour and Lip + Cheek are the core; Bronzer and Illuminator are optional.
The idea
A face isn't one flat colour. Instead of one shade everywhere and layers on top to put the depth back, each shade goes only where it's needed and everything is blended once. The result looks dimensional, not flat.
The name
Seint doesn't spell it out. Artists read IIID as "three-dimensional" (artist source).
HAC
What it is
Highlight and Contour, the light-and-shadow method built into IIID (artist source).
The idea
Lighter shades go on the areas that should come forward and Contour goes where shadows fall. Every shade is placed first and blended after, so the face keeps its light and shadow.
Cheetah HAC
dot every shade on, lighter ones first, then blend. It's a faster way to apply the same map, not a different theory.
How an artist works
Choosing, in order (base first, accents last)
Level (depth) and face from Find My Shade; then undertone and concerns.
Main Highlight: the match.
Brightening and correction, chosen relative to the main.
Contour.
Cheek: Lip + Cheek or Pressed Pigment. It picks the lip family.
Bronzer and Illuminator, if wanted.
Eyes, brows, lips.
The face map, then the intensity.
Putting it on (first to last)
corrector → deeper correcting Highlight → main Highlight and brightening → Contour → Lip + Cheek → Bronzer → Illuminator → setting powder → Pressed Pigment on the cheeks, if used → eyes → brows (Contour shade, then Brow Wax or Archangel Brow Gel) → lips → setting spray.
The corrector is chosen last (only if the Highlights aren't enough), but it goes on first, under the Highlight. Within the complexion, highlight-first, contour-first or Cheetah dots all end in the same map.
Principles
Match first. Every other shade is chosen relative to the main Highlight, so it has to be right.
One layer, placed then blended. Place every shade in its own area, then blend once. The shades are side by side, not stacked.
Blend until no edges show. Stipple, don't swipe.
Less is more. "Use less product, but put it in the right place."
Enhance, don't mask. Some natural skin should still show, and makeup doesn't change the shape of the face.
Theory at a glance
Seint theory in six rules
1. Base
The main Highlight matches your Level. Brightening is one to two shades lighter, on the under-eyes and the centre of the face.
2. Light and shadow
Highlight goes where light falls. Contour goes where shadow sits (hollows, nose sides, jaw), and bronzer where the sun hits.
3. Correct only as much as needed
First press your main Highlight on the spot, then a deeper Highlight, then Cream Corrector only if colour still shows. Green cancels true red, yellow cancels purple, orange cancels blue.
4. Intensity
Natural, Everyday, Full or Glam changes how much product goes down and adds zones as it goes up (Natural has no contour, illuminator or eyes). The zones themselves don't move.
5. The skin changes the amount
Oily skin gets less cream product and more powder on the T-zone. Movement areas around the eyes get less. Fine lines get less illuminator. From 41, brightening, illuminator, the lower eye lines and brows get less, while contour, bronzer and cheek sit higher instead of getting lighter; the base stays the same.
6. Cheek sets the lip
The cheek colour picks the lip family, and brows are filled with the contour shade.
Elements
Main highlight (base)
What it does
Evens the skin; your foundation and concealing shade.
Where it goes
Where you want even coverage, plus a light jawline touch; not everywhere.
Which products
Highlight, the shade from your Level set.
Adjustments
Match the face, not the neck; between two shades, pick the darker.
Washed out or settling in lines: one shade darker.
Oily ×0.85; no age factor.
Brightening
What it does
Brings areas forward with a lighter Highlight.
Where it goes
Under the eyes (inner-biased), between the brows to the forehead, nose bridge, above the cupid's bow, chin.
Which products
Highlight, one to two shades lighter than the main.
Adjustments
No shade in range: skipped.
Textured or mature under-eye: inner and outer corner accents only.
Age 41+ ×0.8, oily ×0.85.
Contour
What it does
Adds shadow; cool and muted, never orange.
Where it goes
Under the cheekbone (strongest at the ear), temples and hairline (into the hair), under the jaw and down the neck; nose sides at Full and Glam.
Which products
Contour; hair and brow colour guide its warmth.
Adjustments
Stop at the outer eye corner, never toward the mouth.
Over 40: up, out, lift.
Oily ×0.85.
Bronzer
What it does
Adds sun warmth; never a contour substitute.
Where it goes
Where the sun hits: upper forehead and apples of the cheeks, lightly, over the blush.
Which products
Bronzer (Bella, Heatwaves, High Tide, Tanlines, Xanadu), from your Level set.
Adjustments
Fine lines: Bella, not shimmery Xanadu.
Freckles: forehead ×0.8; oily ×0.85.
Over 40: higher on the cheekbone, off the apples.
Cheek (Lip + Cheek / Pressed Pigment)
What it does
Adds a flush and sets the lip colour family.
Where it goes
High, just above the cheek contour, blended toward the temple. Official: apples or chart diagonal.
Which products
Lip + Cheek from your Level set; or Pressed Pigment after powder.
Adjustments
Satin shade on the cheek, gloss on the lips; no satin in the set: keep its pick.
Over 40: slightly higher, longer upward blend.
Pressed Pigment: none at Natural, up to 0.80 at Glam.
Oily ×0.85.
Illuminator / glow
What it does
Glow on high points only; less is more.
Where it goes
Top of the cheekbone, under the brow arch, cupid's bow, inner eye corner, top of the nose bridge. Never on contour zones.
Which products
Illuminator by depth (Pearl, Honey, Angel, Nova, Rose Gold, Glow); deepest Level sets: Balm - Unscented.
Adjustments
None at Natural.
Fine lines: ×0.6, at most 2 zones.
Age 41+ ×0.8, oily ×0.85.
Corrector (colour correcting)
What it does
Neutralises discolouration, stopping at the first step that works.
Where it goes
Only on detected findings: under-eye, beside the nose, mouth corners, upper lip, patches, spots.
Which products
Main Highlight pressed on, then a Highlight 1–2 shades deeper, then Cream Corrector (complement colour, 10 % opacity).
Adjustments
Press: the zone's own stencil, or the spot stencil for a spot.
Red casts skip the deeper Highlight.
Applied, never sheer; one per area.
Brows
What it does
Fills sparse areas so brows look fuller, soft, not solid.
Where it goes
Along your natural brow, only where hair is missing; softer at the front. A start–arch–tail map only if sparse or drooping.
Which products
Your Contour shade (never pencil), then Brow Wax or Archangel Brow Gel.
Adjustments
No darker than needed; keep each brow's own shape.
Over 40: tail no lower than the start; ×0.85.
Eyes (eyeshadow / eyeliner)
What it does
Adds depth and definition.
Where it goes
Lid, crease, outer V, under the brow, lower lash line; liner along the upper lashes and soft on the outer lower. None at Natural.
Complement eye colour; never Lady Bug, Guava or Daze.
Fine lines: matte except lid. Hooded: crease above the fold.
Age 41+: lower lash and liner ×0.8.
Lips
What it does
Lip colour in the cheek's colour family.
Where it goes
Patted on the lip centre, fading out; Pencil on the border or full Lipstick at Full or Glam.
Which products
Lip + Cheek from your Level set; Lip Balm, Pencil, Lipstick, Lip Tint, Lip Gelato.
Adjustments
Gloss or semi-gloss Lip + Cheek; the satin one goes on the cheek.
Order: Balm, Pencil, colour, topper.
Lip Oil or Lip Whip: optional add-on, not rendered.
Lip lines: satin, not heavy gloss.
Setting (powder / spray)
What it does
Sets the cream layers; changes shine, not colour.
Where it goes
Pressed sparingly into the T-zone (forehead centre, nose, chin), small under-eye area if creasing. Official: light dusting all over.
Which products
Vanilla Dust (matte) or Feather Blotting Dust (radiant); Fixate Setting Spray or Setting Spray. Plush Prep Mist is sold out.
Adjustments
Oily: T-zone ×1.3, Fixate before and after.
Dry: spot only ×0.5; textured under-eye ×0.6.
Rules checked on day one
Bronzer is never used as contour.
The main highlight matches the face. It is chosen before contour, and before everything else.
Contour is less colourful than the main highlight, and reads as shadow.
No lighter shade on a dark spot. A darker spot gets a deeper correcting highlight.
A corrector is used only for a colour cast that remains after the highlight steps, never on a shadow from structure. At most three correction zones.
Under-eye depth stays within 0.60 for brightening and 0.45 for the correcting highlight. The Cream Corrector stays at about 0.10.
No shimmer or illuminator on fine lines or textured zones.
Illuminator follows depth from the level set, and Balm replaces it at Level XI faces C–D and Level XII faces A–D.
Lip and cheek stay in one colour family.
Cheek contour stops at the outer eye corner and never moves toward the mouth.
Intensity stays within each stencil's allowed range, never above 1.
Missing evidence is not recorded as a skip.
The plan uses only catalogue identifiers.
No geometric morphing.
Acceptance
ID
PoC
Bar
Requirement
Pass condition
SAT-1
Required
Minimum
Version 2 is loaded, versioned, and is the text the composer uses.
A new install composes against that version. The version is on the plan.
SAT-2
Required
Minimum
The editor can change the markdown and publish it without a deploy.
Edit one sentence, publish, compose, and see the new version on the plan.
SAT-3
Required
Minimum
The rule list is explicit, and the gate uses it, including the fourteen rules above.
One fixture per rule is rejected.
SAT-4
Optional
Minimum
A draft can be replayed on the fixed face set, and the difference in plans is visible.
Replay shows which faces changed and which did not.
SAT-5
Required
95%
A published theory change does not drop artist acceptance below the photo bar.
The photo score after publish is still at or above 95 percent, or the publish is rolled back.
Test setup and records
Test setup. Markdown editor, version list, rule list, and replay with a plan diff.
Writes a theory version: prose sections and a rule list.
Module 6. Experience
Look composer
The Look Composer agent starts from the brand base (the quiz palette and the No. 4, No. 8, and No. 12 sets), fine-tunes it from the face analysis in dependency order, and records a reason for every change. For each element it decides the products, the stencils, and an opacity for each stencil: how much product is placed, before blending. This mirrors how an artist delivers a cart and a face map. The Look Editor agent then changes the look by the smallest action that satisfies the user's request.
Look Composer agent
This graph is the agent's loop. Solid edges are the forward order. Dashed edges are the retries. Code does every lookup, number, and rule check. An LLM agent makes the look decisions in four steps. jev answers the atomic questions at the gates. A vision model reads the photo and checks the render. Select a step to read its job.
A change at a gate re-runs that step. A rules or render failure returns to the step that owns the element. At most two retries. Then a fallback plan built by code is shown, and labelled as such.
The generative model sits behind one interface, so its identifier (the site's gpt 6 luna) is a configuration value and can change without changing the sequence.
Steps in dependency order
Decision order follows what each choice depends on. Layer order is the order in which the product goes on the face and is drawn. They are two separate lists, stored as separate fields, and both are on the theory page. The steps below group the decisions: S4 chooses the main, the brightening highlight, and the contour; S5 then runs the correction ladder against the main. Contour and correction do not depend on each other.
Step
Decides
Waits for
Why it is its own step
S0 Capture gate
Whether the photo can be measured
The photo
Colour measured on a bad capture is wrong, and everything after it would be too.
S1 Face analysis
The face report, each value with a confidence
S0
ML models and vision questions run in parallel.
S2 Profile completion
Which Find My Shade answers are still missing
S1
The essentials must be known before a base can be built.
S3 Brand base
The starting palette, with no model
G1
Level and face select Seint's own palette.
S4 Base complexion
Main and brightening highlight, contour: products, stencils, opacities
S3
The base elements. Everything else is placed against them.
S5 Correction
The ladder step for each finding, and any correcting highlight or Cream Corrector
S4
The ladder starts from the chosen main highlight. Skipped when there are no findings.
S6 Optional colour and glow
Bronzer, Lip + Cheek (or Pressed Pigment as a powder blush), illuminator or Balm: on, sheer, or off
G2
Lip + Cheek sits above the contour line, and illuminator stays off the contour.
S7 Features
Eyeshadow, eyeliner, brows, lips
G3 for lips; S4 for brows
Lips follow the cheek's colour family. Brows may use the contour shade.
S8 Assemble and check
Layer order, rules, blending, and the render check
S4 to S7
Checks the whole look at once.
S9 Deliver
The look, the guide, and the cart
G4
Hands over to the Look Editor agent.
Why an agent, not fixed code: the theory has 77 rules and 37 thresholds, several of which conflict by design, across about 30 face attributes and 87 stencils. A fixed decision tree cannot state its reasons in the user's terms or handle the combined cases. The agent chooses only among options that code has already computed and filtered to the catalogue, and it never does the maths.
Why not fewer steps: correction needs the chosen main highlight, cheek colour needs the contour line, and lips need the cheek. Why not more: one step per element would add prompts and waiting without a new dependency, because eyeshadow and liner share one eye look, and bronzer, blush, and illuminator share the cheek area.
Gates
Each gate runs code checks first, then jev questions, then shows the user one card with "Looks right, continue" as the default. The gates sit after the decisions that later steps depend on. G1 and G4 always ask the user. G2 and G3 carry on by themselves only when all three hold: every code check passes, no required attribute is missing, and jev scores the gate at 0.85 or higher (the lowest confidence among its answers). Otherwise they ask. Either way the user always sees an editable summary, and an edit re-runs the step that owns it.
Gate
After
Checks
The user
G0
Capture
Twelve capture checks, in code
Only sees a retake message
G1
Face report
Essentials present. jev: does each answer agree with what was measured
Always asked. Confirms level and face, and answers the missing quiz questions. Composition waits.
G2
Complexion and correction
Shade distances, under-eye ceilings, ladder stops, deviations. jev: is each reason supported by the rule it cites; is each ladder stop right
Asked only when a check fails, a required attribute is missing, or jev scores below 0.85. Always sees an editable summary, and can change depth or coverage before anything is built on it
G3
Optional colour and glow
Overlap with the contour, shimmer on fine lines, powder blush chosen first only with a stated reason. jev: does the cheek family fit the undertone; is each skip justified
Asked on the same rule as G2. Always sees an editable summary, and can turn bronzer, cheek colour, or glow on or off, and switch Lip + Cheek to Pressed Pigment
G4
Final look
Layer order, overlaps, availability. jev: is each reason grounded; is the colour story in harmony; is the look proportionately close to the brand base
Always asked. Accepts the look, the guide, and the cart
About jev. jev is TypeSafe's judgement model (currently jev-1.13.0). It takes a text or JSON state and a set of typed questions, and returns one typed answer per question: yes or no (noul), choice, or score. Choice and score answers carry a confidence. jev does not read images and does not write text. So the vision model checks the render, the agent writes every reason, and jev checks the reasons. TypeSafe has no separate gate object. A gate here is code checks, one jev request with one question per item, and thresholds in our code: below 0.6 confidence the issue is shown or the step is retried, 0.6 to 0.85 shows "please check", above 0.85 passes. These starting values follow TypeSafe's confidence-routing example and are tuned on the frozen set.
Prompts built per step
There is no single large prompt. Each agent step gets a template, plus fragments included only when they apply: only the elements, products, and stencils that exist in the catalogue and were selected for this user. A step never carries logic about something it cannot choose. Each fragment names the theory rules and book sections it states, so a changed rule points to the fragments that must change.
What the plan contains
The look JSON: element, decision, products, stencils with a placed opacity and a blend recipe for each, zone weights, and the complexion role and coverage maps.
A reason for every element, including skip. Every reason cites the theory rule it follows.
For each finding, the ladder step chosen and why it stopped there.
Where the plan left the brand base, and why, with the rule and the finding.
Two to four alternatives.
Application steps in the theory's order.
A product list split into owned and to buy.
The theory version, and the result of every gate.
Correction ladder
Artists treat a spot with the smallest step that works. The composer does the same for every finding, and records where it stopped. This is the concealer role: Seint sells no separate concealer, and the Highlight product is described as its concealing shade.
Step
What is applied
Go on when
1
Main highlight at the zone's normal coverage
The spot still shows
2
The same main highlight, pressed with more local coverage (up to 0.9), then set
The spot is still darker than the skin around it
3
A correcting highlight one or two shades deeper, stippled on the spot first, with the main stippled on top without mixing
A colour cast remains
4
A Cream Corrector in the complementary colour, under the highlight, one shade per sub-area
Stop when neutral
A shadow from structure leaves the ladder after step 1 and gets brightening instead. Under the eyes, every step stays within the depth ceilings. A lighter shade never goes on a dark spot.
Look Editor agent
One conversational agent handles chat in both AR and photo. It classifies the message, then takes one of three exits. On-screen toggles and sliders stay outside this agent and do not call a model. Looks are versioned. A chat change can be undone.
Direct changes use no model. jev classifies the message. Redoing one element re-runs only the step that owns it, with its gate checks. A new plan re-enters the Look Composer agent at the base complexion step.
User says
Class
What happens
Turn blush off
Direct
No model. The cheek layer is disabled.
Less opacity on the highlight
Direct
No model. Opacity changes. Nothing else does.
Softer along the jaw
Direct
No model. The jaw weight drops. Hollow and temple stay.
One shade deeper
Direct
No model. One step on the shade graph.
Cover the spot on my cheek
One element
The correction step runs again for that finding only.
I look washed out
One element
The base complexion step runs again and moves the main one step deeper. Washed out, or product settling in lines, usually means the main is too light.
My contour looks muddy
One element
The base complexion step runs again and moves the contour to a cooler neighbour on the shade graph.
It looks cakey under my eyes
Direct
No model. Under-eye coverage drops. If texture is high, the plan offers corner accents.
Show me the order Kelly uses
Direct
No model. The application preset changes. The look does not.
Make it a wedding evening
New plan
New plan from the base complexion step. Complexity, illuminator, and lip may all change.
Difficulties
If the user sees nothing until the end, the wait is unclear. The time targets on the experience pages are the limit.
A model will invent shade names unless an unknown identifier cannot be saved.
The vision check will sometimes pass a poor render and sometimes fail a good one. The retry limit and the visible failure are required.
Classifying "less contour" as a new plan is a defect.
Model names and prices will change. They cannot be written through the feature code.
Elements decided in separate steps can conflict. The overlap checks at each gate and the harmony question at G4 exist to catch that.
Too many confirmation cards tire the user. There are four, each with a default. G2 and G3 pass on their own when every check is confident, and still show an editable summary.
jev reads literally and should not do arithmetic. Code turns distances and counts into named buckets before jev sees them.
Over-correction is the common artist complaint. The ladder and the depth ceilings exist so the system does not reach for a corrector or heavy coverage when the main highlight is enough.
Acceptance
ID
PoC
Bar
Requirement
Pass condition
LC-1
Required
Minimum
The Look Composer agent runs the steps in order and stores a trace.
The test view shows every step, with the model and the time.
LC-2
Required
Minimum
Agent steps call the configured LLM. Gate questions call jev. The render check calls the vision model. Maths and rule checks are code.
The trace names the model per step. A configuration change can point a step at a different model id.
LC-3
Required
Minimum
Every element has a decision and a reason. Applied elements name a stencil, a catalogue product, an opacity, and zone weights where the stencil has zones.
The schema check passes. Every finding names its ladder step. An invented product id is rejected at the rules gate.
LC-4
Required
Minimum
The vision gate reviews a real render. Failure retries at most twice, then shows the best attempt and the reason.
A fixture built to fail does not loop. The reason is visible.
LC-5
Required
Minimum
The plan includes alternatives, the guide, and the owned versus to-buy list.
Two to four alternatives, the applied steps in the guide, and a product list.
LC-6
Required
100%
The Look Editor agent classifies the request. Toggles and opacity do not call a model.
Every scripted line lands in the stated class. A slider creates no model trace.
LC-7
Required
95% / 85%
Artists accept the look as a Seint starting point.
At least 95 percent Accept on the frozen photo set. At least 85 percent Accept on at least 15 live scans. The photo number is the headline.
LC-8
Required
95%
Edits do what was asked and leave the rest unchanged, except when the class is a new plan.
At least 95 percent of the scripted edit set passes.
LC-11
Required
Minimum
Every product outside the brand base carries a deviation with its reason and rule.
A fixture plan with an unexplained product fails the schema.
LC-12
Required
Minimum
Missing Find My Shade answers are asked at G1 before composition.
A report without skin type produces the question, and no complexion plan is written until it is answered.
LC-9
Optional
80%
The correction ladder stops at the artist's step.
Within one step on at least 80 percent of labelled findings.
LC-10
Optional
70%
The main highlight is one an artist would choose.
At least 70 percent agreement with any rating artist.
Test setup and records
Test setup. Run the graph on a frozen face analysis and profile. Inspect each step, the cost, and the time. Replay the edit set.
Reads face analysis, client context, the brand base (quiz prior and level sets), candidate sets, element and stencil records, prompt fragments, and the theory version. Writes a look plan and the gate results.
Module 7. Experience
Look renderer
Apply the look JSON to a face. On photographs our own compositor draws and blends the stencils; in live AR Banuba tracks the face and paints the baked textures. This module does not choose a product or a placement.
Behaviour
The same JSON produces the same products and the same regions in AR and on photographs.
The cream complexion (main, brightening, and correcting highlight, contour, Lip + Cheek, bronzer, and illuminator) is one cream layer. Each product is placed, blended in layer order, and the colours are mixed once. The application order in the guide therefore cannot change the result, and blending keeps each role's gradient.
Layers are drawn in the layer order on the theory page, lowest first: Cream Corrector (a colour shift under the highlight), correcting highlight, main and brightening highlight, contour, Lip + Cheek, bronzer over the blush, illuminator, setting powder, powder blush (Pressed Pigment, if chosen), eyes (eyeshadow and liner), brows, lips, and setting spray.
Each stencil is blended with its own recipe (tool, direction, distance, passes, and stops), so it looks blended by the right brush. The opacity in the plan is the product placed, not the strength after blending. See the blending page.
Eyes, brows, and lips are drawn in AR and on the photo when the face analysis tracks that area with a confidence of at least 0.70 (a starting value, not yet tested). Otherwise they are drawn on the photo only, and the user is told why.
No geometric morphing. Any skin smoothing is minimal and disclosed.
Without a new compose, the user can toggle an element, change opacity, change a zone weight, and move one step on the shade graph.
Before and after is available in both modes. On photographs, each uploaded angle can show the look.
The renderer can produce a still snapshot for the vision gate.
A localized layer is drawn at the finding's position, not as a wash across the cheek.
How each role is drawn
Role
Drawn as
Check
Main and brightening highlight
Coverage that evens tone and keeps skin texture. Brightening is the main plus lift, not shine.
No hard edges between territories
Contour
Coverage in the contour's own colour, with skin detail kept
Less colourful than the main; visible on deeper skin; never brown or orange
Cream Corrector
A colour shift at 0.10 opacity, under the highlight
Changes hue, barely changes lightness
Lip + Cheek, bronzer
A tint over the complexion
Bronzer above the blush
Pressed Pigment (powder blush)
A powder tint above the setting powder
Only when the user switches to it, or with a stated reason
Illuminator
Added shine on the high points
Kept off textured zones
Eyes, brows, lips
Their own layers, keeping lashes, brow hairs, and lip texture
In AR only where that area is tracked with a confidence of at least 0.70
Rendering path
Photographs use our own compositor, which draws the stencils exactly. It is also the reference for evaluation.
Live AR uses Banuba stencil textures once that path is validated. Until then it uses Banuba's built-in regions, and the screen says placement is approximated.
The two are never mixed for the same element.
Banuba accepts one texture per element, so all contour stencils are merged into one texture.
For AR, the blended look is baked into textures on the face mesh, one per element and one per layer group. They are the same blend as the photo, and they are baked again only when the look changes.
Difficulties
A correct product id still looks wrong if the render values are a flat tint. Matching Seint cream is calibration work.
AR and photo will diverge if each mode keeps its own masks. Both must read the stencil record.
Neck contour may have no surface to paint if the mesh ends at the jaw. The system must not claim the neck was painted when it was not.
A spot mask will slide between frames unless it stays attached to landmarks.
Rebuilding the whole effect on every slider move will drop frames on a mid-range phone.
A brown contour multiplied onto skin drifts orange and over-darkens deep skin. Contour must be checked for hue as well as depth.
Banuba's texture path is deprecated and its face layout is undocumented.
Acceptance
ID
PoC
Bar
Requirement
Pass condition
LR-1
Required
Minimum
A look JSON renders on an uploaded photograph with our own compositor, and in live AR through Banuba.
The same fixture plan appears in both modes in the demonstration.
LR-2
Required
Minimum
Products, regions, and opacities match the JSON. The renderer adds no product.
A checklist plan is compared, layer by layer, with both outputs.
LR-3
Required
Minimum
Toggle, opacity, and zone weight update the image without a composer call. Before and after works in both modes.
Those controls create no compose request.
LR-4
Required
Minimum
A localized layer is visible at the finding. A snapshot can be passed to the vision gate.
A fixture finding shows product at that position. The gate receives an image.
LR-5
Required
Minimum
Layer order matches this page, and the complexion is drawn in one pass.
A debug view lists the layers in the order above.
LR-6
Optional
20 fps
AR stays interactive on the reference phone named in the first week.
At least 20 frames per second after warm-up, with a full look applied.
LR-7
Required
90%
Artists are not rejecting looks because product landed in the wrong place.
"Placement is wrong" is the reason on fewer than 10 percent of rejected photo looks.
LR-8
Required
Zero
No morphing. Smoothing stays within the disclosed limit.
A render-plan check finds no morph and no smoothing above the limit.
LR-9
Optional
90%
On deeper skin the contour is visible and not brown.
At least 90 percent of Monk 7 to 10 looks pass the contour check.
Test setup and records
Test setup. A JSON view with the photograph and a recorded AR clip side by side. Saved plans can be rendered again and compared when render values or stencils change.
Reads a look plan, stencil geometry, and render values. Writes the live render and a snapshot.
Module 7. Experience
Blending
How the renderer turns placed product into a blended look. The stencil says where the product is put down. The blend says how an artist then moves it. This is model BL-2, approved on 29 September 2026 and proven on one test face (f010).
The model in plain language
Seed deposit. Each stencil is put down first, as an artist places a stick or a dense brush. Its opacity is the placed deposit: how much of the skin the product covers where it lands. At the default Everyday intensity, cheek contour is placed at 0.90.
Direction-aware spread. Each stencil then moves the way its brush would: along the swipe, and toward a point on the face. Cheek contour is pulled up and back toward the top of the ear. Lip + Cheek is pulled toward the temple. Jaw contour is pulled down the neck, and hairline contour into the hair. Each stencil names its tool, how far it spreads, how much further along the swipe than across it, how far it drifts, and how many passes it gets. More passes soften the edges without spreading further.
Nothing is added or lost. Blending only moves product, so a wider blend is also a softer one. The strength after blending follows from that. Cheek contour placed at 0.90 ends at about 0.40 at its strongest point, spread over four to five times the placed area.
Hard stops. Some edges are walls that product never crosses: the eyes and lash lines, the lip line, the nostrils, the ears, and the background. Other edges fade the product out, so no line is drawn: the nose and the area around the mouth for cheek colour, the brow hairs, the outer edge of the brightening zone, the contour for illuminator, and the hair.
Passes in layer order. The layers are blended in the order they are applied: Cream Corrector, then the correcting highlight, then the cream complexion (main and brightening highlight, contour, and Lip + Cheek, all placed first and then blended), bronzer over the blush, illuminator, setting powder, powder blush (if chosen), eyes, brows, and lips. Setting spray goes on last and is not blended. A later cream layer slightly softens the wet cream under its brush, as a real brush does.
Pigment mixing. Where cream products overlap, their colours mix as pigments do, rather than being laid one on top of another. Skin texture shows through: about half of the skin detail under the complexion and lips, 90 percent under the eyes, and all of it under the brows. The main highlight is matched to the measured skin, so the complexion reads as the person's skin, evened.
Baking for AR. The blended result is baked into textures on a standard face mesh: one per element, and one per layer group (cream, eyes, brows, lips). Banuba then draws them on the tracked face in every frame. Nothing is recomputed per frame. The textures are baked again only when the look changes.
The full look on f010, at the default Everyday intensity. The base look plus eyeshadow, liner, brows, and lips, all blended. The contour and flush are visible and have soft edges. The same look placed and blended side by side is on the elements page.The same look, baked for AR. Each square is one element's blended product laid out flat on the MediaPipe face mesh. The last square is the mixed cream layer. The chequer shows where a texture is transparent. Banuba's own layout is not documented, so a remap is still needed.
How each element is blended
Sourced means the direction or end point comes from Seint or a named Seint artist. Secondary means it comes from notes on a tutorial video. Inferred means it is our own construction. Every distance and number is inferred: each was tuned by eye on f010 and checked against the face's landmarks and the zones in the theory.
Element
How it is moved
Where it ends up
Basis
Main highlight
Buffed outward with a dense brush, in three passes.
The whole face, fading at the hairline and the jaw edge.
Sourced: where it ends (Heather Gilligan, JoEllen Woods). Inferred: the outward buff.
Brightening highlight
Pressed outward with a damp sponge under the eyes and a dense brush elsewhere, in three passes.
Out to the edge of its zone and no further, inside Seint's under-eye wedge, so it never becomes a whole-face mask.
Sourced: the zones (Seint "How to use IIID" chart). Secondary: the sponge under the eye (notes on a Kelly Snider video). Inferred: stopping at the zone edge.
Correcting highlight
Pressed with a detail brush, one pass.
Stays on the spot.
Sourced: the tool and the order (Kelly Snider). Secondary: that it hardly moves (video notes).
Cream Corrector (Demi)
A detail brush point, then a light buff, one pass.
Stays on the spot, at 0.10 opacity.
Sourced (Heather Gilligan, Kelly Snider). Secondary: that it hardly moves (video notes).
Cheek contour
A dense brush along the swipe, pulled up and back toward the top of the ear, in three passes.
Heaviest at the ear, forward to about the outer eye corner, up above the cheekbone toward the temple, softened under the cheekbone, and fading well above the jaw.
Sourced: the direction and the end points (JoEllen Woods: "blending upward, from the hairline to about the corner of the eye", heaviest near the ear; "Up. Out. Lift."; the Seint chart). Inferred: the lower limit.
Hairline contour
Blended outward from the face centre, into the hair.
Into the hair above the hairline, down to the temple, not below the top of the ear.
Sourced (JoEllen Woods: forehead contour blends into the hair).
Jaw and neck contour
Pulled down.
Below the jaw line and down the neck, not up onto the cheek.
Sourced (JoEllen Woods, AtypicalErin).
Nose contour
Thin lines with a detail brush.
Stays a thin line beside the nose.
Sourced: the tool (Seint brush pages). Inferred: the direction.
Lip + Cheek on the cheek
A dense brush along the cheek diagonal, pulled back and up toward the temple, in three passes.
Just above the contour, from beside the nose and mouth corner (never on them) back to the temple, up to about the level of the eye corner.
Sourced (Kelly Snider: "pull it back slightly toward your temples"; JoEllen Woods: higher toward the temple; the Seint chart; the Seint Lip + Cheek page).
Powder blush (Pressed Pigment)
A fluffy brush, the same direction as Lip + Cheek, three passes, after the setting powder.
The same area as Lip + Cheek.
Sourced: the direction (as Lip + Cheek) and the product (Seint Pressed Pigment page). Inferred: going on after the powder.
Bronzer
A fluffy brush, wide and sheer, drifting toward the temples, two passes, over the blush.
The forehead out to the temples, and the cheeks from beside the nose to the temple. It stays above the brows and above the mouth corners.
Sourced (Seint Bronzer page: "where the sun would naturally kiss your face", "over your blush"). Secondary: around the temple (notes on a Kelly Snider video). Inferred: the lower limits.
Illuminator
Fingertip dabs, two passes, no drag.
A small point. It grows by at most a tenth of the distance between the pupils, and never lands on the contour.
Sourced (Heather Gilligan: dab, never sweep; less is more). Inferred: how far it grows.
Setting powder
Pressed with a damp sponge.
Stays where it is pressed.
Sourced: the tool and the zones (Seint Setting Powder page, JoEllen Woods).
Eyeshadow
Lid colour pressed on with a fingertip. Crease colour blended with a fluffy brush, up and out, in three passes.
Lid colour stays on the lid. Crease colour goes up through the crease to the brow bone and fades out before the brow.
Sourced: "from your eyelids to your brow bone" (Seint Eyeshadow page). Secondary: up and out through the crease (notes on Kelly Snider's eyeshadow videos).
Eyeliner
A liner brush, one pass.
Stays a thin line on the lash line.
Sourced: the tool (Seint brush pages). Inferred: the direction.
Brows
A spoolie, brushed up and out.
Stays in the brow.
Sourced (Seint Brow Wax page: "Brush your brows upward and outward").
Lips
Tapped with a fingertip from the centre outward, two passes.
Inside the lip line.
Sourced: Lip + Cheek in the centre of the lips (Seint Lip + Cheek page). Inferred: the tapping.
What changed from BL-1
In BL-1 an opacity was the strength after blending. Contour at 0.30 therefore put very little product down, and the blended look on f010 was almost invisible. BL-2 makes the opacity the amount placed, which is how an artist thinks about it, and blends further, to where artists say each product ends up. All 23 reach checks now pass on f010 (BL-1 passed 22).
Element
Spread (pupil distances)
Area after blending
Strongest point after blending
Effect
Cheek contour
0.07 → 0.12
3.1× → 4.2×
0.30 → 0.42 (placed 0.90)
Now reaches up above the cheekbone toward the temple.
Lip + Cheek on the cheek
0.11 → 0.13
4.3× → 4.0×
0.35 → 0.59 (placed 0.90)
Reaches higher toward the temple; spreads along the diagonal.
Bronzer on the cheeks
0.11 → 0.14
6.3× → 9.0×
0.15 → 0.13 (placed 0.45)
Wider, from beside the nose to the temple.
Bronzer on the forehead
0.11 → 0.16
2.7× → 3.1×
0.15 → 0.26 (placed 0.45)
Out to the temples.
Under-eye brightening
0.06 → 0.12
1.6× → 2.3×
0.40 → 0.41 (placed 0.60)
Reaches the edge of its zone, not beyond.
Cheekbone illuminator
0.035 → 0.075
1.6× → 2.8×
0.20 → 0.32 (placed 0.50)
Still a small point.
Eyeshadow crease
0.05 → 0.07
3.6× → 4.6×
0.25 → 0.30 (placed 0.80)
Up to the brow bone.
Jaw contour
0.10 → 0.14
3.4× → 4.8×
0.20 → 0.38 (placed 0.75)
Further down the neck.
Area after blending is the blended area divided by the placed area. The figures come from the element renders on f010.
Limits
Tuned by eye on one fair face with muted shades (Nude and Astoria). The sculpt is soft, not editorial. Artists have not reviewed it yet, and it has not been run on the other test faces.
Contour and Lip + Cheek are placed close to full coverage (0.90 to 0.97), so the stronger intensities differ mainly in how much product there is. That shows after blending as a wider, deeper shadow or flush.
The reach checks measure where product arrives, not how it looks. The visual review is the other half of the check.
Product blended into the hair or down the neck falls outside the face mesh, so AR shows only part of it (30 percent of the contour and 44 percent of the bronzer on f010).
Photo colour is not calibrated, and the pigment mixing uses a single constant per product.
Brows and lips have no tracking confidence of their own in the face report yet.
Integration
How the modules connect
Modules meet only through the records below. A module test is complete when it can run on fixtures of its input and produce its output. Integration is complete when the demonstration runs with nobody pasting JSON between steps.
The snapshot returns to the composer for the render check. A failed gate returns to the composer, not to a manual edit of the JSON.
Records
Record
Written by
Read by
Capture set
AR capture or photo upload, after the quality gate
Face analysis
Face analysis
Face analysis
The report, the composer, and the renderer for positions
Client context
Profile and the session
The composer, and inventory filters
Candidate set
Inventory retrieval
Composer element steps
Element and stencil
Elements manager
Composer and renderer
Theory version
Theory editor
Composer steps and the rules gate
Quiz prior and level sets
Inventory (the 48 level-face sets, and No. 4, No. 8, No. 12 per level)
Composer step S3
Brand base
Composer step S3
Every agent step, and the deviation checks at the gates
Gate results
Code checks and jev at G0 to G4
The user cards, retries, and the trace
Look plan
Look Composer agent
Renderer (complexion role and coverage maps, layers), Look Editor agent, and the result the user keeps
Snapshot
Renderer
Render check, and before-and-after
Integration
Demonstration
The script that must run without hand-edited JSON. Passing this script is integration. It is not, by itself, the acceptance bars.
Prepare once
Publish Artist Theory v2.
Load the in-scope catalogue, use cases, and render values, and the Find My Shade map.
Confirm the elements and the stencil library.
Save a base profile with a palette and one allergy.
Then, with one person
AR: override the occasion, complete four poses, read the report, correct one item, wait for the look, and see it live.
Turn contour off and on. Change highlight opacity.
Ask for a softer jaw. Ask for an evening version. Undo once.
Photo: straight, plus one side, and no neck. The report must state that the face-to-neck check was not possible. The look renders on both photographs.
Leave with a guide and a product list that respects the allergy and prefers the palette.
Repeat the photo run on a face with a brown spot. The plan stops at the main highlight or the correcting highlight, not at a corrector.
Repeat on a face with a textured under-eye. The plan uses corner accents, not a crescent.
Integration
Responsibilities
Who supplies the material, who builds the system, and who signs the result.
Division of work
Work
Seint team
Development team
Golden faces and reference notes
Artists create or approve the reference judgment for each face
Host the set, freeze it, and prevent edits during a score run
The acceptance rating
Artists mark Accept or Revise, with a reason
Run the looks and publish the score report
Theory text
Own the wording and sign a publish
Editor, versions, replay, and the rule gate
Catalogue and use cases
Confirm shades, use cases, and the situation answer key
Records, pgvector index, retrieval stages, and render values
Findings labels
Mark colour cast versus shadow, the darkest point, and textured under-eyes on the frozen set
Store the labels and score the analysis against them
Placement
Accept or reject stencils on the reference faces, including the under-eye variants
Landmark masks, the manager, and both renderers
Allergies and palette
Real examples of limits and owned compacts
Filters and the preference rule
Sign-off
Sign the rubric and the frozen set before the run
Sign that every required row passes and that the report matches the run
Integration
Open decisions
What has been decided, and what still needs an answer before the face set is frozen. Until an open item is decided, the scope page states the working assumption.
Decided on 29 September 2026
Achin Kumar approved these decisions.
Gates G2 and G3. They pass on their own only when every code check passes, no required attribute is missing, and jev scores the gate at 0.85 or higher. Otherwise the user is asked. An editable summary is always shown. G1 and G4 always ask.
Two orders. Decision order (which choice depends on which) and layer order (how the product goes on and is drawn, 13 layers) are two separate lists, stored as separate fields. Both are on the theory page.
Powder blush. The cheek product is a switch between Lip + Cheek (the default) and Pressed Pigment, the powder blush. The composer suggests Pressed Pigment first only with a stated reason, and shows that reason to the user. Seint sells no product named "blush".
Eyes, brows, and lips in AR. They are drawn in live AR only when the face reading for that area is confident enough (at least 0.70). Otherwise they are drawn on the photo only, with a short note on the final-look screen. The 0.70 is our starting value (inferred), not a Seint figure.
Neck. Face only, the Seint default. The main highlight is matched to the face, not the neck. When the neck is visible, the report says whether it is darker or lighter than the face, as a check, not the match target.
Application presets. The guide offers five: highlight first, contour first, main first, Cheetah dots, and one brush. A preset changes the guide text only, never the layer order or the render.
Cream Corrector (Demi) at 0.10 opacity, from 0.08 to 0.15 by intensity. Kelly Snider: "these Cream Correctors are unique with only 10% opacity". Heather Gilligan: "Seint Demi under eye have just 10% opacity". Seint: "apply a light touch of color directly to the places on your skin that need filtering". More coverage on a spot comes from the correcting highlight, not from more Demi.
Opacity is the placed deposit. The opacity in a look plan is how much product goes down where it is placed. Blending then spreads it without adding or removing any, so the finished strength is lower. The blending page explains the model (BL-2).
To decide
Which artists will rate, and whether they can review 40 looks plus 15 live scans.
Whether Cream Correctors are drawn in AR in this proof of concept, or named in the guide only. They are drawn in photo mode.
The reference phone for the frame-rate check.
How long photographs and analysis may be stored, and who can delete them.
Whether a look may recommend a product the user does not own, or must stay inside the palette.
Whether the product list links to purchase in this proof of concept, or only names the products.
Who is allowed to publish a theory version.
Whether the wait targets of 10 seconds for analysis and 25 seconds for a look are acceptable.
Whether bronzer is on by default, as in the official level sets, or opt-in.
Working assumptions
The catalogue covers every element in the stencil library: Highlight, Contour, Lip + Cheek, Pressed Pigment, Bronzer, Illuminator and Balm, Cream Corrector, Setting Powder, and setting spray for the complexion, and Eyeshadow, Eyeliner, Pencil, brow products, and lip products for the features. All are products Seint sold on 29 September 2026. The list is on the inventory page.
The brand base (quiz palette and level sets) is the starting point of every look. Departures carry a reason.
Tools and setting products appear in the guide as text only.
Cream Correctors (Demi) are catalogue data. The correction ladder decides when they are used.
The palette prefers owned shades and may step outside with a written reason.
Photographs and analysis are stored only with consent, for a period the Seint team sets.
The neck remains part of the contour stencil even if the first AR build can paint only to the jaw. The report must say so when the neck was not painted.