Examples
career-fit
A coaching-facing report, never a hiring input. One person's chart in, a vocational-fit read, a quit-or-stay console, promotion-readiness prep and a study-track recommendation out, chosen by which mode the person picked.
Tool chain
run_pre_verdict_audit and get_boundary_warnings open the run as a chart-integrity gate, then analyze_natal_promise decides whether the chart promises a career at all. Nothing downstream may state a verdict before that returns. The domain layer is get_career_cusp_panel, get_career_signature, get_profession_description and get_occupation_matches; the mode question is get_job_vs_business_verdict; timing is get_promotion_verdict, get_job_change_timing and get_earned_income_panel; and get_career_blockage_diagnosis turns the houses the career cusp fails to reach into named consultation answers. get_d10_chart is Vedic Parashari, so it renders beside the KP verdict with its own chip and never inside it.
Two tools are deliberately absent
get_termination_risk is legitimate in a coached setting, but it is the one output in this family that can be used against someone, so a public example does not model it. run_career_complete_reading is the one-call composite alternative: it costs far fewer metered calls, and it cannot produce the separated five-rule panel that is the whole point of this app. The app README states both paths and their call counts.
Inputs
name,birth_date,birth_time,birth_time_known,location_namemode:fit,quit-or-stay,promotion, orstudy-track, chosen by the user rather than inferred, so the tool chain is predictable- An optional free-text
contextfield (current role, the decision in front of them), folded into the prompt but never sent as a hiring signal to any other system
Call it
const ALLOWED_TOOLS = [
"run_pre_verdict_audit", "get_boundary_warnings",
"analyze_natal_promise",
"get_career_cusp_panel", "get_career_signature",
"get_profession_description", "get_occupation_matches",
"get_job_vs_business_verdict",
"get_promotion_verdict", "get_job_change_timing", "get_earned_income_panel",
"get_career_blockage_diagnosis",
"get_d10_chart", // Vedic Parashari, cross-system reference only
] as const;
const result = await runLumin({
allowedTools: ALLOWED_TOOLS,
system: buildSystemPrompt(),
user: buildUserPrompt(input),
maxTokens: 16000,
effort: "xhigh",
signal: req.signal,
});
const parsed = ensureShape(
parseJsonBlock<CareerFitResponse>(result.text),
validateShape,
);The expanded path shown here runs roughly 14 to 18 calls, because analyze_natal_promise and get_occupation_matches are paged and the run walks their pages. run_career_complete_reading covers similar ground in far fewer calls, and the tradeoff is that the composite cannot report the five job-versus-business rules separately. That is a choice to make deliberately rather than by accident.
Response shape
{
"resolved_profile": { "name": "Ishara", "latitude": 6.9271, "longitude": 79.8612, "utc_offset_minutes": 330 },
"mode": "quit-or-stay",
"vocational_fit": {
"signature": "10th CSL star lord connected to 6th, service-oriented rather than independent business.",
"top_matches": [
{ "occupation": "Software engineering", "note": "Mercury-Saturn signature, strong D10 backing." },
{ "occupation": "Technical writing", "note": "Mercury karaka, secondary fit." }
],
"description": "..."
},
"should_i_quit": {
"verdict": "hold, with a review window",
"reasoning": [
"get_job_vs_business_verdict: three of five sourced rules favour continued service, two are neutral.",
"get_career_blockage_diagnosis: a temporary Saturn sub is the primary blocker, not a structural mismatch.",
"get_earned_income_panel: pay movement is indicated before a change of employer."
],
"timing_window": { "start": "2027-09-01", "end": "2028-02-15", "reason": "get_job_change_timing: next favourable sub-period." }
},
"promotion_readiness": null,
"interview_window": null,
"education_track": null,
"disclaimer": "A coaching aid. Never a hiring or screening input, and never a substitute for the person's own judgment."
}Screens
- A birth-details form plus a mode selector: fit, quit-or-stay, promotion, study-track
- A vocational-fit card listing qualitative matches, never a numeric fit score with no source
- A quit-or-stay console showing each sourced rule's verdict as its own line, not blended into one recommendation
- A promotion-readiness card with an interview-window suggestion, shown only in that mode
- A study-track card, shown only in that mode
Why there is no numeric fit score
The interesting engineering detail
get_job_vs_business_verdict reports five sourced rules independently rather than blending them into one recommendation, so a coach can see which rule is actually carrying the call. The response above is a direct rendering of that shape: three lines, each naming its own tool and its own verdict, rather than a single "you should stay" sentence with the reasoning hidden inside a paragraph. A UI that flattens this into one verdict string is throwing away the part of the tool that makes it defensible as a coaching product rather than a fortune-telling one.
Where to next
- Career and education use cases for the founder-readiness and relocation rows this app does not cover.
- Responsible use for the never-a-hiring-input rule this app is built around.