<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Configuration on Raven</title><link>https://raven.nopejs.me/docs/configuration/</link><description>Recent content in Configuration on Raven</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://raven.nopejs.me/docs/configuration/index.xml" rel="self" type="application/rss+xml"/><item><title>portals.yml</title><link>https://raven.nopejs.me/docs/configuration/portals/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://raven.nopejs.me/docs/configuration/portals/</guid><description>&lt;h1 id="portalsyml">
 portals.yml
 &lt;a class="anchor" href="#portalsyml">#&lt;/a>
&lt;/h1>
&lt;p>&lt;code>config/portals.yml&lt;/code> controls &lt;strong>what jobs Raven considers relevant&lt;/strong> when you run &lt;code>raven discover&lt;/code> without explicit &lt;code>--q&lt;/code> / &lt;code>--loc&lt;/code> flags.&lt;/p>
&lt;h2 id="how-discover-uses-it">
 How discover uses it
 &lt;a class="anchor" href="#how-discover-uses-it">#&lt;/a>
&lt;/h2>
&lt;p>When you run bare &lt;code>raven discover&lt;/code>:&lt;/p>
&lt;ol>
&lt;li>Raven loads &lt;code>config/portals.yml&lt;/code> (or path from &lt;code>RAVEN_PORTALS&lt;/code> in &lt;code>.env&lt;/code>)&lt;/li>
&lt;li>Title keywords from &lt;code>title_filter.positive&lt;/code> become &lt;code>--q&lt;/code> filters&lt;/li>
&lt;li>Negative keywords become &lt;code>--not&lt;/code> filters&lt;/li>
&lt;li>Location rules from &lt;code>location_filter&lt;/code> become &lt;code>--loc&lt;/code> / &lt;code>--noloc&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>CLI flags &lt;strong>override&lt;/strong> portals config when provided:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Uses portals.yml filters&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>raven discover
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Ignores portals title filter — uses CLI only&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>raven discover --q &lt;span style="color:#e6db74">&amp;#34;backend engineer&amp;#34;&lt;/span> --loc Remote
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="minimal-example">
 Minimal example
 &lt;a class="anchor" href="#minimal-example">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">title_filter&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">positive&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;software engineer&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;backend&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;developer&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;intern&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">negative&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;nurse&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;sales&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;Junior&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">location_filter&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">allow&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;Remote&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;India&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">block&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#e6db74">&amp;#34;On-site only&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="title-filter-semantics">
 Title filter semantics
 &lt;a class="anchor" href="#title-filter-semantics">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>At least &lt;strong>one&lt;/strong> positive keyword must match the job title (case-insensitive substring)&lt;/li>
&lt;li>&lt;strong>Zero&lt;/strong> negative keywords may match&lt;/li>
&lt;li>Empty &lt;code>positive&lt;/code> list = match all titles (use negatives to exclude)&lt;/li>
&lt;/ul>
&lt;h3 id="location-filter-semantics">
 Location filter semantics
 &lt;a class="anchor" href="#location-filter-semantics">#&lt;/a>
&lt;/h3>
&lt;p>Applied in order:&lt;/p></description></item><item><title>profile.yml</title><link>https://raven.nopejs.me/docs/configuration/profile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://raven.nopejs.me/docs/configuration/profile/</guid><description>&lt;h1 id="profileyml">
 profile.yml
 &lt;a class="anchor" href="#profileyml">#&lt;/a>
&lt;/h1>
&lt;p>&lt;code>config/profile.yml&lt;/code> is the &lt;strong>source of truth&lt;/strong> for who you are when Raven drafts applications.&lt;/p>
&lt;h2 id="structure">
 Structure
 &lt;a class="anchor" href="#structure">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">identity&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">name&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Your Name&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">email&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;you@example.com&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">phone&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">location&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;City, Country&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">links&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">resume&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;files/resume.md&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">portfolio&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://yoursite.dev&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">github&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://github.com/yourhandle&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">linkedin&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://linkedin.com/in/yourhandle&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">x&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;https://x.com/yourhandle&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">highlights&lt;/span>: [] &lt;span style="color:#75715e"># optional manual overrides&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">skills&lt;/span>: [] &lt;span style="color:#75715e"># optional manual overrides&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">resume&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">path&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;files/resume.md&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">max_bullets&lt;/span>: &lt;span style="color:#ae81ff">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">draft&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">gemini&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">enabled&lt;/span>: &lt;span style="color:#66d9ef">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">model&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;gemini-2.0-flash&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">disclaimer&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Review and edit this draft yourself before sending or submitting.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">outreach&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">greeting_generic&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Hey team&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">subject&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;Application: {{title}} at {{company}}&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">body&lt;/span>: |&lt;span style="color:#e6db74">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> {{greeting}},
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> I&amp;#39;m writing about the {{title}} role at {{company}}.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> {{highlights}}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> Best,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> {{senderName}}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="template-variables">
 Template variables
 &lt;a class="anchor" href="#template-variables">#&lt;/a>
&lt;/h2>
&lt;p>Used in &lt;code>outreach.subject&lt;/code> and &lt;code>outreach.body&lt;/code>:&lt;/p></description></item><item><title>Environment variables</title><link>https://raven.nopejs.me/docs/configuration/env/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://raven.nopejs.me/docs/configuration/env/</guid><description>&lt;h1 id="env-reference">
 .env reference
 &lt;a class="anchor" href="#env-reference">#&lt;/a>
&lt;/h1>
&lt;p>Copy from &lt;code>.env.example&lt;/code> on &lt;code>raven setup&lt;/code>. Secrets stay local — never commit &lt;code>.env&lt;/code>.&lt;/p>
&lt;h2 id="sender-identity">
 Sender identity
 &lt;a class="anchor" href="#sender-identity">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>SENDER_NAME&lt;span style="color:#f92672">=&lt;/span>Your Name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SENDER_EMAIL&lt;span style="color:#f92672">=&lt;/span>you@example.com
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Used by &lt;code>raven send&lt;/code> and draft disclaimers.&lt;/p>
&lt;h2 id="gmail-oauth">
 Gmail OAuth
 &lt;a class="anchor" href="#gmail-oauth">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>GOOGLE_CLIENT_ID&lt;span style="color:#f92672">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GOOGLE_CLIENT_SECRET&lt;span style="color:#f92672">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GMAIL_REFRESH_TOKEN&lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#75715e"># populated by raven auth-gmail&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create OAuth credentials in &lt;a href="https://console.cloud.google.com/">Google Cloud Console&lt;/a> with Gmail send scope.&lt;/p>
&lt;h2 id="outlook-oauth">
 Outlook OAuth
 &lt;a class="anchor" href="#outlook-oauth">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>MS_CLIENT_ID&lt;span style="color:#f92672">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>MS_CLIENT_SECRET&lt;span style="color:#f92672">=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>MS_REFRESH_TOKEN&lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#75715e"># populated by raven auth-outlook&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Register an app in &lt;a href="https://portal.azure.com/">Azure Portal&lt;/a> with Mail.Send permission.&lt;/p></description></item></channel></rss>