Ghostwriter
What it is
Ghostwriter is the per-job AI chat assistant in JobOps.
Ghostwriter uses:
- current job description and metadata
- reduced profile snapshot
- global writing style settings
- the configurable Ghostwriter system prompt template from Settings
The UI behavior is one persistent conversation per job, shown in the right-side drawer from job details, with an optional desktop pop-up mode for focused writing.
Why it exists
Ghostwriter helps you produce job-specific writing quickly while preserving consistency with your profile and style settings.
Typical use cases:
- role-specific answer drafting
- cover letter and outreach drafts
- interview prep tied to the job description
- rephrasing with tone constraints
- multilingual drafting when you want replies in a specific language
How to use it
- Open a job in
discoveredorready. - Open the Ghostwriter drawer.
- On desktop, use the header expand button to open pop-up mode and the restore button to return to drawer mode.
- Enter your prompt and stream a response.
- Use the
Copybutton on any completed Ghostwriter reply to copy the full output. - Stop or regenerate responses when needed.
Writing style settings impact
Global settings affecting generations:
ToneFormalityConstraintsDo-not-use termsUse Stop Slop for Ghostwriter
Ghostwriter follows the output language you request in your prompt. For example, Ecris en français should produce a French reply.
If you want a persistent default language, set it in Settings → Writing Style & Language.
If you need to change Ghostwriter's base behavior more deeply, edit the Ghostwriter prompt template in Settings → Prompt Templates. That editor is advanced on purpose: removing instructions or placeholders can make responses less reliable, but reset restores the default template quickly.
Do-not-use terms are passed as guidance in the prompt. They are not enforced by a hard post-generation filter, so the model should avoid them but may still use them occasionally.
Use Stop Slop for Ghostwriter adds extra Ghostwriter-only instructions based on the Stop Slop skill. When enabled, Ghostwriter revises toward direct active voice, cuts filler and formulaic AI phrasing, avoids vague claims, and removes em dashes. It does not change resume tailoring.
Defaults:
- Tone:
professional - Formality:
medium - Constraints: empty
- Do-not-use terms: empty
- Use Stop Slop for Ghostwriter: disabled
Context and safety model
- Job snapshot is truncated to fit prompt budget.
- Profile snapshot includes relevant slices only.
- System prompt enforces read-only assistant behavior.
- Logging stores metadata, not full prompt/response dumps.
API surface
GET /api/jobs/:id/chat/messagesPOST /api/jobs/:id/chat/messages(streaming)POST /api/jobs/:id/chat/runs/:runId/cancelPOST /api/jobs/:id/chat/messages/:assistantMessageId/regenerate(streaming)
Compatibility thread endpoints remain, but UI behavior is one thread per job.
Common problems
Responses feel too generic
- Verify the job description is complete and current.
- Confirm style constraints in Settings are specific enough.
- If you customized the Ghostwriter prompt template, compare it with the default or reset it to confirm the regression comes from the template.
Generation quality is lower than expected
- Check model/provider configuration in Settings.
- Tighten prompts with explicit output intent (for example, "3 bullet points for recruiter outreach").
- If you need a non-English response every time, set it in Settings → Writing Style & Language.
Missing context in answers
- Update profile data and relevant project details used by Ghostwriter context.
- Regenerate after updating job notes/description.
I need more reading space for long drafts
- On desktop, switch Ghostwriter to pop-up mode with the header expand button.
- Use restore when you want to return to the right-side drawer layout.
I need to reuse a reply outside JobOps
- Use the
Copybutton shown on each completed Ghostwriter response. - If the button changes to
Copied, the full reply is already on your clipboard.