4-Factor Response Engine
4-Factor Response Engine
Every daily-check-in produces one short note back. That note comes from the 4-factor response engine — a constrained generation system whose job is to be useful in 60 to 100 words and never overreach.
The four factors
| # | Factor | Source | Why it matters |
|---|---|---|---|
| 1 | Chip | The 14-chip palette in the daily ritual | Names what is true today |
| 2 | Phase | Bayesian cycle estimate | Sets the cycle baseline |
| 3 | Transit context | Today's natal transit if any | Adds the day's flavour |
| 4 | Archetype | Your menstrual archetype | The pattern across cycles |
The four are combined deterministically into a structured prompt — not free-form. The generation model writes inside a tight template that varies per chip × phase combination.
Why exactly four
We tested two, three, four, and six. Two factors (chip + phase) produced notes that felt too generic. Three (chip + phase + transit) had a habit of leaning too astrology-heavy. Six (adding mood, weather, social load) introduced inconsistency and increased generation latency past the 200ms p50 budget for the daily ritual.
Four is the sweet spot where the note feels specific to you without becoming noisy.
Constraints on the generation
The model output is filtered by three rules at write time:
- Length — 40 to 120 words. Anything outside the band is regenerated.
- Anti-claim — runs the output through the same anti-claim lint that gates blog posts. See non-medical-cycle-tracking.
- Tone calibration — a small classifier rejects outputs that feel prescriptive, judgmental, or peppy-corporate. Outputs that land in "warm and grounded" pass.
A note that fails any of the three is regenerated up to three times. If all three fail, the user sees a curated fallback that ships with the app.
What the model does NOT see
- The body of your daily note (only the chip).
- Any of your past notes.
- Other users' data.
- Your name, account, or any identifier.
Generation runs on a stripped, anonymised input. The personalisation comes from the structured factors, not from re-reading your text.
Where this lives
The engine is in lib/responseEngine/ in the Soulwise codebase. The structured prompt template is one TypeScript file per chip × phase pair (14 × 4 = 56 templates), each hand-tuned. The model is the smallest one that passed the tone calibration test — a 7B parameter open-weights model running in a Vercel Function with a 200ms p50 budget.
Apply This Knowledge
Put astrology into practice with AI-powered natal chart analysis.
Get My Free Natal Chart