Skip to content

LLM Prompt: Family Daily Briefing

What it is

The "Family Daily Briefing" is a structured LLM prompt designed to synthesize data from multiple household services into a concise, actionable morning summary. It acts as a personalized "morning news" for the family, delivered via chat or email.

What problem it solves

Managing a household involves tracking disparate information across calendars, task managers, and weather apps. Checking each individually is time-consuming and often leads to missing important details. This prompt automates the synthesis, highlighting conflicts and priorities in a single, easy-to-read message.

Where it fits in the stack

This prompt is part of the AI Service layer. It is typically executed by an LLM node (such as Ollama, GPT-5.6, Claude 5.6, Qwen 3.6 VL, Gemma 4, or Gemini 4.0 Ultra) within an Orchestration workflow (n8n), consuming data from the Productivity (Calendar/Tasks) and Environmental (Weather) layers. Modern integrations utilize the Model Context Protocol (MCP) 3.1 and FastMCP 3.1 to provide real-time, secure access to these data sources.

Typical use cases

  • Morning Routine Automation: Sending a briefing at 07:00 AM every morning.
  • Conflict Resolution: Identifying and alerting the family if two members have overlapping commitments.
  • Activity Planning: Using the weather summary to suggest outdoor vs. indoor activities for the day's tasks.

Strengths

  • Centralization: Consolidates multiple data sources into one location.
  • Personalization: The tone and focus can be adjusted to suit the family's preferences.
  • Context Awareness: Can correlate tasks with calendar events (e.g., "Don't forget the library books since you are going to the mall nearby").

Limitations

  • Data Freshness: Relies on the n8n workflow fetching the latest data at the time of execution.
  • LLM Cost/Latency: Depending on the model used, there may be a small cost or a few seconds of delay in generating the briefing. Frontier models like GPT-5.6 or Claude 5.6 are faster but more expensive.
  • Hallucination Risk: Small chance of misinterpreting times or priorities if the input data is messy. Local models like Gemma 4 or Llama 4 can mitigate privacy concerns but may have higher latency on modest hardware.

When to use it

  • When your family uses multiple digital tools to manage life and needs a unified view.
  • When you want to gamify or encourage the completion of daily chores.
  • To start the day with a "human-like" touch through the inclusion of memories.

When not to use it

  • For families with extremely static schedules that don't change day-to-day.
  • If you have concerns about sharing personal calendar data with external LLM providers (use a local Ollama instance instead).
  • If your source systems (Calendar/Tasks) are not consistently updated.

Getting started

To implement the Family Daily Briefing: 1. Ensure your household data sources (Google Calendar, Vikunja, OpenWeatherMap) are accessible via n8n. 2. Use the Aggregate node in n8n to combine the data into a single JSON object. 3. Pass this object into the LLM prompt template provided below.

Prompt Template

# Role
You are the "Family Admin Assistant," a helpful, concise, and cheerful AI agent responsible for preparing the morning briefing for the family.

# Context
Today is {{ $today_date }}.
The weather today is {{ $weather_summary }}.

# Input Data
## Calendar Events (Google/Proton Calendar)
{{ $calendar_events }}

## Chores & Tasks (Vikunja/Habitica)
{{ $tasks }}

## "On This Day" Memories (Immich/Paperless)
{{ $memories }}

# Instructions
1. **Greeting**: Start with a warm, brief greeting and a mention of today's date and weather.
2. **Schedule**: Summarize the day's calendar events chronologically. Highlight any potential conflicts or busy periods.
3. **Tasks**: List the top 3-5 priority chores or tasks for today.
4. **Memories**: Briefly mention one "On This Day" memory to start the day with a smile.
5. **Tone**: Keep it helpful, concise, and upbeat. Avoid long-winded explanations.

# Output Format
Markdown-formatted text, suitable for delivery via Telegram or Email.

CLI examples

You can test the synthesis logic using the ollama CLI with a local model.

# Testing the briefing with Ollama and Gemma 4
ollama run gemma-4 "Prepare a family briefing for 2027-01-07. Weather: Sunny, 25C. Tasks: Buy milk, Fix sink. Events: Dentist at 2PM."

API examples

The briefing can be generated via structured outputs using modern frontier models and validated using strict Pydantic v2 schemas.

1. HTTP API Request Example

# Example API call to OpenAI (GPT-5.6) for briefing generation
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-5.6-preview",
    "messages": [
      {"role": "system", "content": "You are a helpful family assistant."},
      {"role": "user", "content": "Synthesize today'\''s daily briefing data from sources: [JSON DATA HERE]"}
    ]
  }'

2. Python Integration Pattern with Pydantic v2

This integration pattern parses, structures, and validates a dynamic household daily briefing before delivery to Telegram or Email.

import asyncio
from datetime import date
from typing import List, Optional
from pydantic import BaseModel, Field, ValidationError, field_validator

class WeatherForecast(BaseModel):
    summary: str = Field(..., description="Short weather description (e.g. Sunny, Heavy Rain)")
    temp_celsius: float = Field(..., description="Current/expected temperature in Celsius")

class CalendarEvent(BaseModel):
    summary: str = Field(..., description="Description or title of the calendar event")
    start_time: str = Field(..., description="Event start time (e.g. HH:MM or ISO 8601)")
    end_time: str = Field(..., description="Event end time (e.g. HH:MM or ISO 8601)")

class DailyBriefing(BaseModel):
    briefing_date: date = Field(..., description="Date of the morning briefing")
    weather: WeatherForecast = Field(..., description="Weather forecast data block")
    schedule: List[CalendarEvent] = Field(default_factory=list, description="Today's chronological calendar events")
    critical_tasks: List[str] = Field(default_factory=list, description="Top 3-5 high priority tasks to complete today")
    coordination_note: Optional[str] = Field(None, description="Optional note highlighting schedule overlaps or action items")

    @field_validator('critical_tasks')
    @classmethod
    def limit_tasks_count(cls, value: List[str]) -> List[str]:
        if len(value) > 5:
            # Enforce briefing guidelines limit of max 5 priority tasks
            return value[:5]
        return value

async def generate_and_validate_briefing(raw_json_input: str):
    try:
        # Perform dynamic validation on structured output from LLM (such as GPT-5.6 or Claude 5.6)
        briefing = DailyBriefing.model_validate_json(raw_json_input)
        print(f"Validated Briefing for {briefing.briefing_date}:")
        print(f"Weather: {briefing.weather.summary} ({briefing.weather.temp_celsius}°C)")
        print(f"Tasks: {len(briefing.critical_tasks)} items.")
        if briefing.coordination_note:
            print(f"Note: {briefing.coordination_note}")
    except ValidationError as e:
        print(f"Daily Briefing validation failed: {e}")

if __name__ == "__main__":
    sample_llm_output = """
    {
      "briefing_date": "2027-01-07",
      "weather": {
        "summary": "Mild and partly cloudy",
        "temp_celsius": 14.5
      },
      "schedule": [
        {"summary": "Dentist Appointment", "start_time": "14:00", "end_time": "15:00"},
        {"summary": "Groceries Pick Up", "start_time": "16:30", "end_time": "17:15"}
      ],
      "critical_tasks": [
        "Buy milk and water",
        "Submit school permission slip",
        "Fix kitchen sink faucet"
      ],
      "coordination_note": "Dentist appointment starts at 14:00, which has a 15-minute travel buffer from the home lab."
    }
    """
    asyncio.run(generate_and_validate_briefing(sample_llm_output))
  • Google Calendar: Primary data source for the schedule.
  • Vikunja: Primary data source for tasks and chores.
  • Habitica: Gamified task management alternative.
  • Immich: Source for "On This Day" photo memories.
  • Paperless-ngx: Source for "On This Day" document memories.
  • n8n: The workflow engine that runs the entire process.
  • Ollama: Recommended for private, local execution.
  • MCP — Standardized protocol for model-tool interaction.

Sources / references

Contribution Metadata

  • Last reviewed: 2027-01-07
  • Confidence: high