Skip to main content

Proactive Engine

V3

The idea​

Most AI tools wait for you to ask. The Proactive Engine flips this: you tell AI Partner what to monitor and when, and it acts on its own schedule — checking your markets, reading your news, reviewing your goals, and pushing results to your preferred channel before you even sit down at your desk.

With V3, the Proactive view is also the home of your Digital Twin — the partner layer that remembers you permanently, challenges your drift, and earns the right to act in your name.


V3 — the twin lives here​

The Your Twin panel sits inside the Proactive view. It is the in-app counterpart to everything the twin does over your messaging channel:

  • Needs you — pending twin asks (weekly confrontations, delegation drafts) answered in-app with the same engage / adjust / back_off buttons as Telegram
  • Open threads — questions the twin is holding open until you resolve them deliberately; overruling it never silently closes one
  • Positions — the evidence-backed claims it currently holds about you, each dated, with its revision history
  • Action feed — everything done under earned delegation, each action with a receipt
  • Trust streaks — live clean-approval progress per action class; one tap revokes a delegation instantly and restarts its streak from zero
  • Charter — the current CHARTER.md, the source of all twin standing

Heartbeat vs. twin schedule​

The twin runs on its own charter-driven schedule — it never reads HEARTBEAT.md:

HeartbeatTwin
Driven byHEARTBEAT.md standing tasks + LLM judgmentCHARTER.md granted domains + GOALS.md arcs
CadenceYour tick interval (default: every 30 min in active hours)At most one confrontation per week; daily digest at 09:00
OutputBriefings, market watches, summariesEvidence-gated challenges; "while you were away" digest with receipts
When there's nothingSkips the tick, checks next tickSends no message — silence is never noise

Both deliver over the same messaging channels configured below. For charter configuration, earned delegation, and per-user isolation on a multi-user VPS, see the Digital Twin guide.


How the heartbeat works​

A background process runs a cron tick at your configured interval (default: every 30 minutes during active hours):

Tick fires
↓
HeartbeatService: within active hours? → yes
HeartbeatService: last action < 25 min ago? → no (25-min cooldown)
↓
ProactiveAgenda.evaluate():
1. HEARTBEAT.md standing tasks — any due this tick?
2. Memory interests — any ongoing goal nearing a deadline?
3. LLM judgment: "Is there ONE genuinely useful action right now?"
↓
Yes → the goal engine runs the chosen action
→ result delivered to Telegram/Discord/Slack/chat
→ logged to heartbeat_logs
No → skip, check again next tick

The 25-minute cooldown prevents the engine from spamming you even if multiple things are due at the same time.


Configuration files​

The proactive engine reads four files in workspace/. Edit them in Settings → Workspace or directly:

HEARTBEAT.md — your standing tasks​

## Standing Tasks

### Morning Briefing
- Time: every weekday at 7:00 AM
- Tasks:
1. Top 5 tech and startup news stories from the last 24 hours
2. Check stock prices: NIFTY 50, RELIANCE.NS, INFY.NS
3. Flag any urgent emails that arrived overnight
4. Assess progress on active goals

### Market Watch
- Time: weekdays at 9:15 AM and 3:30 PM IST
- Tasks:
1. NIFTY 50 open/close and day change
2. Any holdings with >2% intraday move
3. Significant news from top 5 holdings

### Weekly Summary
- Time: every Friday at 5:00 PM
- Tasks:
1. Summarize all meetings from this week
2. List action items and completion status
3. Top 3 priorities for next week based on GOALS.md

SOUL.md — behavior rules and active hours​

## Identity
Name: Alex
Role: Founder & CEO

## Active Hours
active_hours: 6:00 AM - 10:00 PM IST
quiet_hours:
- 10:00 PM - 6:00 AM
- Sunday

## Heartbeat Settings
heartbeat_interval: 30m
cooldown: 25m

## Behavior
- Be concise — I read these on my phone
- Lead with the most important signal first
- Use bullet points for lists, not paragraphs
- For market data: bold anything that moved >1%

GOALS.md — drives relevance filtering​

The ProactiveAgenda reads your active goals and uses them to decide what's relevant:

## Active Goals

### Close Series A
- Success: Term sheet signed by June 30, 2026
- Context: In conversations with Sequoia, Accel, and Tiger Global

### Launch v2.0
- Success: 1,000 active users by July 15, 2026

If the ProactiveAgenda sees a news story about Sequoia, it's relevant. A story about cooking recipes is not. The goals serve as a relevance filter.


What gets delivered​

All proactive output goes to the Telegram/Discord/Slack channel you configured in Settings → Messaging. The format is compact (optimized for phone reading):

🌅 Morning Briefing — Wed, May 13

📰 News
1. OpenAI launches GPT-5 — real-time web access built in [TechCrunch]
2. Sequoia India closes $2.5B fund [ET]
3. Apple expands Intelligence to 40 countries [The Verge]

📈 Markets (as of 6:58 AM)
NIFTY: 22,845 (+0.4%)
RELIANCE: ₹2,847 (+0.8%) ← above 1% threshold
INFY: ₹1,634 (-0.2%)

📧 Overnight Email
⚠️ sarah@acme.com: "Q2 concern — need to talk today" [Reply]

🎯 Goals
Series A: 🟡 Sequoia call Thu — key milestone
v2.0: 🟢 Phase 2 on track

Enabling / disabling​

Enable: Go to Intelligence → Proactive and turn Heartbeat on. The same panel sets how often it checks in.

Pause temporarily:

Pause the heartbeat for the next 4 hours.

Disable a specific task: Comment it out in HEARTBEAT.md:

# - Time: weekdays at 9:15 AM ← disabled

Triggering manually​

Don't want to wait for the next tick? Run a heartbeat manually:

Via chat:

Run my morning briefing now.

Via the UI: Go to sidebar → Proactive Intelligence → Run Now


Standing tasks vs. LLM-driven tasks​

Proactive work runs in two modes, side by side:

ModeWhat drives itBest for
Standing tasksHEARTBEAT.md — your explicit schedule and task listPredictable, recurring work: market data, a news digest
Its own judgementYour goals, and what it has noticedOpportunistic work: "is there anything useful to do right now?"

Standing tasks always run at their scheduled time. Its own judgement fills the gaps — on any check-in where nothing is due, it considers whether there's something worth doing.

Prefer only what you've written down? Turn judgement-driven work off in the Proactive panel and standing tasks alone will run.


Time zone and IST-aware context​

The heartbeat service is IST-aware by default. Some built-in logic:

ContextTime window
Morning briefing window7:00 AM – 11:00 AM IST
NSE/BSE market hours9:15 AM – 3:30 PM IST, weekdays
Evening recap window6:00 PM – 9:00 PM IST
Quiet hoursConfigurable in SOUL.md

Financial and market tasks are automatically filtered outside market hours (unless you override this in HEARTBEAT.md).

Your timezone is set in Settings, and everything above follows it.


Delivery channels​

ChannelSetupBest for
TelegramSettings → Messaging → TelegramDefault — inline buttons for approvals, file delivery
DiscordSettings → Messaging → DiscordTeam briefings via a channel
SlackSettings → Messaging → SlackWork context — post to a channel
Chat (in-UI)Always availableResults appear in the active chat conversation

You can configure multiple delivery channels — results are sent to all active ones.


Viewing heartbeat history​

Go to sidebar → Proactive Intelligence → History to see:

  • When each tick fired
  • What task was chosen (or why it was skipped)
  • What the result was
  • Whether it was delivered successfully

Every check-in is listed, including the ones that decided to do nothing — so a quiet morning is visibly a decision rather than a failure.