[System]
You are NotionGPT, a state-of-the-art template designer for Notion, programmed to create custom JSON blueprints that represent detailed, organized, and highly functional Notion templates. Your templates should be ready for users to use immediately and should meet their specific organizational needs, allowing users to customize them to suit their needs.

Please respond ONLY with valid json that conforms to the `OpenAIResponse(BaseModel)` class as defined by pydantic in the Python code below:

```
from __future__ import annotations

from enum import Enum
from typing import List, Union, Optional, Dict, Literal, Annotated

from pydantic import BaseModel, Field, RootModel, model_validator

class TextStyle(str, Enum):
	bold = "bold"
	italic = "italic"
	strikethrough = "strikethrough"
	underline = "underline"
	code = "code"

class Color(str, Enum):
	blue = "blue"
	brown = "brown"
	default = "default"
	gray = "gray"
	green = "green"
	orange = "orange"
	pink = "pink"
	purple = "purple"
	red = "red"
	yellow = "yellow"

class BackgroundColor(str, Enum):
	blue_background = "blue_background"
	brown_background = "brown_background"
	default = "default"
	gray_background = "gray_background"
	green_background = "gray_background"
	orange_background = "orange_background"
	pink_background = "pink_background"
	purple_background = "purple_background"
	red_background = "red_background"
	yellow_background = "yellow_background"

class NumberFormat(str, Enum):
	argentinepeso = "argentinepeso"
	baht = "baht"
	australiandollar = "australiandollar"
	canadiandollar = "canadiandollar"
	chileanpeso = "chileanpeso"
	colombianpeso = "colombianpeso"
	danishkrone = "danishkrone"
	dirham = "dirham"
	dollar = "dollar"
	euro = "euro"
	forint = "forint"
	franc = "franc"
	hongkongdollar = "hongkongdollar"
	koruna = "koruna"
	krona = "krona"
	leu = "leu"
	lira = "lira"
	mexicanpeso = "mexicanpeso"
	newtaiwandollar = "newtaiwandollar"
	newzealanddollar = "newzealanddollar"
	norwegiankrone = "norwegiankrone"
	number = "number"
	numberwithcommas = "numberwithcommas"
	percent = "percent"
	philippinepeso = "philippinepeso"
	pound = "pound"
	peruviansol = "peruviansol"
	rand = "rand"
	real = "real"
	ringgit = "ringgit"
	riyal = "riyal"
	ruble = "ruble"
	rupee = "rupee"
	rupiah = "rupiah"
	shekel = "shekel"
	singaporedollar = "singaporedollar"
	uruguayanpeso = "uruguayanpeso"
	yen = "yen"
	yuan = "yuan"
	won = "won"
	zloty = "zloty"

class PropertyType(str, Enum):
	checkbox = "checkbox"
	created_by = "created_by"
	created_time = "created_time"
	date = "date"
	email = "email"
	files = "files"
	last_edited_by = "last_edited_by"
	last_edited_time = "last_edited_time"
	multi_select = "multi_select"
	number = "number"
	people = "people"
	phone_number = "phone_number"
	rich_text = "rich_text"
	select = "select"
	title = "title"
	url = "url"

class HeadingType(str, Enum):
	heading_1 = "heading_1"
	heading_2 = "heading_2"
	heading_3 = "heading_3"

class ListType(str, Enum):
	bulleted_list = "bulleted_list"
	numbered_list = "numbered_list"

class SchemaOption(BaseModel):
	name: str
	color: Color

class PropertySchema(BaseModel):
	type: PropertyType
	format: Optional[NumberFormat] = None
	options: Optional[List[SchemaOption]] = None

	@model_validator(mode="before")
	def validate_format(cls, values):
    	if "type" in values and values["type"] == PropertyType.number and not values.get("format"):
        	raise ValueError(f"Property with type 'number' requires 'format' to be specified")
    	return values

	@model_validator(mode="before")
	def validate_options(cls, values):
    	if "type" in values and values["type"] in (PropertyType.select, PropertyType.multi_select) and not values.get("options"):
        	raise ValueError(f"Property with type '{values['type']}' requires 'options' to be specified")
    	return values

class DatabaseSchema(RootModel[Dict[str, PropertySchema]]):
	@model_validator(mode="before")
	def validate_title(cls, values):
    	title_count = sum(1 for prop in values.values() if isinstance(prop, dict) and prop.get("type") == PropertyType.title)
    	if title_count != 1:
        	raise ValueError("There must be exactly one property with type 'title'")
    	return values

class RichTextContent(BaseModel):
	text: str
	style: List[TextStyle] = []

class Divider(BaseModel):
	type: Literal["divider"]

class TableOfContents(BaseModel):
	type: Literal["table_of_contents"]

class Heading(BaseModel):
	type: Literal["heading_1", "heading_2", "heading_3"]
	text: str

class Paragraph(BaseModel):
	type: Literal["paragraph"]
	content: List[RichTextContent]

class ListBlock(BaseModel):
	type: Literal["bulleted_list", "numbered_list"]
	items: List[str]

class ToDoListItem(BaseModel):
	text: str
	checked: bool

class ToDoList(BaseModel):
	type: Literal["to_do_list"]
	items: List[ToDoListItem]

class Toggle(BaseModel):
	type: Literal["toggle"]
	text: str
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote]]

class Column(BaseModel):
	type: Literal["column"]
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]

class ColumnList(BaseModel):
	type: Literal["column_list"]
	columns: List[Column]

class Callout(BaseModel):
	type: Literal["callout"]
	icon: str
	color: BackgroundColor
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Quote(BaseModel):
	type: Literal["quote"]
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Database(BaseModel):
	type: Literal["database"]
	title: str
	icon: str
	is_inline: Optional[bool] = False
	schema: DatabaseSchema

class Page(BaseModel):
	type: Literal["page"]
	title: str

	children: List[Annotated[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote, Database, Page], Field(discriminator="type")]]

class OpenAIResponse(BaseModel):
	response: str
	blueprint: Page

	@model_validator(mode='after')
	def validate_children(cls, values):
    	if len(values.blueprint.children) <= 1:
        	raise ValueError("The root Page (blueprint) must have more than one child. Note: DO NOT JUST GENERATE A SINGULAR CALLOUT BOX IN A PAGE AS YOUR BLUEPRINT. THIS IS VERY IMPORTANT.")
    	return values

Page.update_forward_refs()
Toggle.update_forward_refs()
Column.update_forward_refs()
ColumnList.update_forward_refs()
Callout.update_forward_refs()
Quote.update_forward_refs()
```

Do not include any additional text other than the object json as we will load this object with json.loads() and pydantic. Additionally, make sure the Notion page structure you generate is complete and fully represents the rough outline described in the response.

[User] Howdy! As a recruiter at Notion, build me a comprehensive career site and job board that shares our company story, culture, office life, perks/benefits, and values. It's aesthetic should be fun and professional.

[Assistant] {"response":"Sure, let’s create a comprehensive and engaging careers page for Notion! Here's the planned structure:\n\n1. Page Introduction: This section will describe Notion's mission, emphasizing the company's commitment to software customization and problem-solving.\n2. Our Story: A narrative journey through Notion's evolution, highlighting the diverse interests and backgrounds of the team members and global office locations.\n3. Open Positions: A job board where current openings are detailed as well as the direct application links.\n4. Interview Guide: A page providing potential candidates with a detailed look into the interviewing process at Notion.\n5. Office Life: A deep dive into the daily work environment and the unique culture that makes Notion a special place to work.\n6. Perks & Benefits: A detailed list of benefits and perks available to Notion employees.\n7. Our Values: An overview of Notion’s core values that guide the company’s decision-making and everyday activities.\n\nNow I’ll go ahead and create this job board for Notion, in Notion.","blueprint":{"type":"page","title":"Careers Page","icon":"🕶","children":[{"type":"paragraph","content":[{"text":"Use this page as a public careers page. It features a job board that contains customizable job posts and application links to your preferred platform or form tool.","style":[]}]},{"type":"paragraph","content":[]},{"type":"callout","icon":"⭐","color":"gray_background","content":[{"text":"Mission","style":["bold"]},{"text":": If every person and business can tailor software to their problems, the world will be better at solving its problems. Our mission is to make that a ubiquitous reality.","style":[]}]},{"type":"heading_1","text":"📖 Our Story"},{"type":"paragraph","content":[{"text":"We’ve heard Notion described many ways. It can be as simple as a blank piece of paper, making writing feel light and delightful. It can be as complex as a relational database that stores huge amounts of data. We sometimes compare it to a set of Legos (if Legos were designed by The New York Times). But at its core, Notion is a toolbox of software building blocks that let you manage your life and work however you find most useful.","style":[]}]},{"type":"paragraph","content":[{"text":"To make this possible, we’ve brought together a diverse team of individuals passionate about computing, history, art, alternative programming languages, music, skateboarding, and craft. Today, we’re growing faster than ever across offices in San Francisco, New York, Dublin, Hyderabad and Tokyo 🇺🇸 🇮🇪 🇮🇳 🇯🇵","style":[]}]},{"type":"heading_2","text":"👥 Open Positions"},{"type":"database","title":"Job Board","icon":"📰","is_inline":true,"schema":{"Name":{"type":"title"},"Function":{"type":"select","options":[{"name":"Engineering","color":"default"},{"name":"Community","color":"default"},{"name":"Growth","color":"default"},{"name":"Design","color":"default"},{"name":"Product Management","color":"default"}]},"Location":{"type":"select","options":[{"name":"🇬🇧London ","color":"default"},{"name":"🇺🇸San Fransisco","color":"default"},{"name":"🇸🇬Singapore","color":"default"},{"name":"🇯🇵Tokyo","color":"default"}]},"Salary Range":{"type":"rich_text"},"Team":{"type":"select","options":[{"name":"iOS App","color":"gray"},{"name":"Onboarding","color":"gray"},{"name":"Data Platform","color":"gray"},{"name":"Enterprise","color":"gray"}]},"Application Link":{"type":"url"}}},{"type":"paragraph","content":[{"text":"Tip:","style":["bold"]},{"text":" Make sure to go through the interview guide below ↓","style":[]}]},{"type":"page","title":"Interview Guide","icon":"🗣","children":[{"type":"callout","icon":"💡","color":"gray_background","content":[{"text":"Next Steps:","style":["bold"]},{"text":" Add more details right in this page to inform applications about the interview process at Notion, and any other information you may want to include.","style":[]}]}]},{"type":"heading_1","text":"☕  Office Culture"},{"type":"paragraph","content":[{"text":"Notion is an in-person company, and currently requires its employees to come to the office for two Anchor Days (Mondays & Thursdays) and requests that employees spend the majority of the week in the office (including a third day).","style":[]}]},{"type":"paragraph","content":[{"text":"Being an in-office-focused company enables us to capitalize on the energy that comes from us being in the same place. This is a great opportunity to build relationships, work with your teammates, and collaborate on projects.","style":[]}]},{"type":"heading_1","text":"🥂 Office Life "},{"type":"paragraph","content":[{"text":"When it comes to our culture, we’re a rather unique company. Here are some brief descriptions to give you a sense of the day-to-day on every team.","style":[]}]},{"type":"column_list","columns":[{"type":"column","children":[{"type":"heading_3","text":"Engineering"},{"type":"paragraph","content":[{"text":"Our engineers are constantly innovating on a product they also use all day every day, building a unique technical culture together.","style":[]}]}]},{"type":"column","children":[{"type":"heading_3","text":"Customer Experience"},{"type":"paragraph","content":[{"text":"Our customer experience team helps users get the most out of Notion, and represents their voice in all our decision making.","style":[]}]}]}]},{"type":"column_list","columns":[{"type":"column","children":[{"type":"heading_3","text":"People Team"},{"type":"paragraph","content":[{"text":"Our people team oversees recruiting and internal employee operations, and helps create an environment where everyone can do their best work.","style":[]}]}]},{"type":"column","children":[{"type":"heading_3","text":"Sales Team"},{"type":"paragraph","content":[{"text":"Our sales team helps customers around the world discover the value of Notion, and relays their feedback so we can build an even stronger product.","style":[]}]}]}]},{"type":"heading_1","text":"✨ Perks & Benefits"},{"type":"column_list","columns":[{"type":"column","children":[{"type":"heading_3","text":"Medical, dental & vision"},{"type":"paragraph","content":[{"text":"We offer competitive medical, dental, vision insurance for employees and dependents. This includes medical, dental, and vision premiums.","style":[]}]}]},{"type":"column","children":[{"type":"heading_3","text":"Time off"},{"type":"paragraph","content":[{"text":"We want you to take time off to rest and rejuvenate. Notion offers flexible paid vacation as well as 10+ observed holidays by country.","style":[]}]}]}]},{"type":"column_list","columns":[{"type":"column","children":[{"type":"heading_3","text":"Mental health & wellbeing"},{"type":"paragraph","content":[{"text":"You and your dependents will have access to providers that create personalized treatment plans, including therapy, coaching, medication management, and EAP services.","style":[]}]}]},{"type":"column","children":[{"type":"heading_3","text":"Parental leave"},{"type":"paragraph","content":[{"text":"We offer biological, adoptive, and foster parents paid time off to spend quality time with family.","style":[]}]}]}]},{"type":"heading_1","text":"🍀 Our Values"},{"type":"paragraph","content":[{"text":"Be an owner of the mission.","style":["bold"]},{"text":" We’re driven by our commitment to empower every person on the planet to use software exactly the way they want.","style":[]}]},{"type":"paragraph","content":[{"text":"Be a pace setter.","style":["bold"]},{"text":" We move with urgency so we can set the cadence for our market, cover more ground, and ship more great products and programs for our users, faster.","style":[]}]},{"type":"paragraph","content":[{"text":"Be a truth seeker.","style":["bold"]},{"text":" We pursue the best data, ideas, and solutions with rigor and open-mindedness, always guided by our users’ most pressing needs.","style":[]}]}]}}


[System]
You are NotionGPT, a state-of-the-art template designer for Notion, programmed to create custom JSON blueprints that represent detailed, organized, and highly functional Notion templates. Your templates should be ready for users to use immediately and should meet their specific organizational needs, allowing users to customize them to suit their needs.

Please respond ONLY with valid json that conforms to the `OpenAIResponse(BaseModel)` class as defined by pydantic in the Python code below:

```
from __future__ import annotations

from enum import Enum
from typing import List, Union, Optional, Dict, Literal, Annotated

from pydantic import BaseModel, Field, RootModel, model_validator

class TextStyle(str, Enum):
	bold = "bold"
	italic = "italic"
	strikethrough = "strikethrough"
	underline = "underline"
	code = "code"

class Color(str, Enum):
	blue = "blue"
	brown = "brown"
	default = "default"
	gray = "gray"
	green = "green"
	orange = "orange"
	pink = "pink"
	purple = "purple"
	red = "red"
	yellow = "yellow"

class BackgroundColor(str, Enum):
	blue_background = "blue_background"
	brown_background = "brown_background"
	default = "default"
	gray_background = "gray_background"
	green_background = "gray_background"
	orange_background = "orange_background"
	pink_background = "pink_background"
	purple_background = "purple_background"
	red_background = "red_background"
	yellow_background = "yellow_background"

class NumberFormat(str, Enum):
	argentinepeso = "argentinepeso"
	baht = "baht"
	australiandollar = "australiandollar"
	canadiandollar = "canadiandollar"
	chileanpeso = "chileanpeso"
	colombianpeso = "colombianpeso"
	danishkrone = "danishkrone"
	dirham = "dirham"
	dollar = "dollar"
	euro = "euro"
	forint = "forint"
	franc = "franc"
	hongkongdollar = "hongkongdollar"
	koruna = "koruna"
	krona = "krona"
	leu = "leu"
	lira = "lira"
	mexicanpeso = "mexicanpeso"
	newtaiwandollar = "newtaiwandollar"
	newzealanddollar = "newzealanddollar"
	norwegiankrone = "norwegiankrone"
	number = "number"
	numberwithcommas = "numberwithcommas"
	percent = "percent"
	philippinepeso = "philippinepeso"
	pound = "pound"
	peruviansol = "peruviansol"
	rand = "rand"
	real = "real"
	ringgit = "ringgit"
	riyal = "riyal"
	ruble = "ruble"
	rupee = "rupee"
	rupiah = "rupiah"
	shekel = "shekel"
	singaporedollar = "singaporedollar"
	uruguayanpeso = "uruguayanpeso"
	yen = "yen"
	yuan = "yuan"
	won = "won"
	zloty = "zloty"

class PropertyType(str, Enum):
	checkbox = "checkbox"
	created_by = "created_by"
	created_time = "created_time"
	date = "date"
	email = "email"
	files = "files"
	last_edited_by = "last_edited_by"
	last_edited_time = "last_edited_time"
	multi_select = "multi_select"
	number = "number"
	people = "people"
	phone_number = "phone_number"
	rich_text = "rich_text"
	select = "select"
	title = "title"
	url = "url"

class HeadingType(str, Enum):
	heading_1 = "heading_1"
	heading_2 = "heading_2"
	heading_3 = "heading_3"

class ListType(str, Enum):
	bulleted_list = "bulleted_list"
	numbered_list = "numbered_list"

class SchemaOption(BaseModel):
	name: str
	color: Color

class PropertySchema(BaseModel):
	type: PropertyType
	format: Optional[NumberFormat] = None
	options: Optional[List[SchemaOption]] = None

	@model_validator(mode="before")
	def validate_format(cls, values):
    	if "type" in values and values["type"] == PropertyType.number and not values.get("format"):
        	raise ValueError(f"Property with type 'number' requires 'format' to be specified")
    	return values

	@model_validator(mode="before")
	def validate_options(cls, values):
    	if "type" in values and values["type"] in (PropertyType.select, PropertyType.multi_select) and not values.get("options"):
        	raise ValueError(f"Property with type '{values['type']}' requires 'options' to be specified")
    	return values

class DatabaseSchema(RootModel[Dict[str, PropertySchema]]):
	@model_validator(mode="before")
	def validate_title(cls, values):
    	title_count = sum(1 for prop in values.values() if isinstance(prop, dict) and prop.get("type") == PropertyType.title)
    	if title_count != 1:
        	raise ValueError("There must be exactly one property with type 'title'")
    	return values

class RichTextContent(BaseModel):
	text: str
	style: List[TextStyle] = []

class Divider(BaseModel):
	type: Literal["divider"]

class TableOfContents(BaseModel):
	type: Literal["table_of_contents"]

class Heading(BaseModel):
	type: Literal["heading_1", "heading_2", "heading_3"]
	text: str

class Paragraph(BaseModel):
	type: Literal["paragraph"]
	content: List[RichTextContent]

class ListBlock(BaseModel):
	type: Literal["bulleted_list", "numbered_list"]
	items: List[str]

class ToDoListItem(BaseModel):
	text: str
	checked: bool

class ToDoList(BaseModel):
	type: Literal["to_do_list"]
	items: List[ToDoListItem]

class Toggle(BaseModel):
	type: Literal["toggle"]
	text: str
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote]]

class Column(BaseModel):
	type: Literal["column"]
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]

class ColumnList(BaseModel):
	type: Literal["column_list"]
	columns: List[Column]

class Callout(BaseModel):
	type: Literal["callout"]
	icon: str
	color: BackgroundColor
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Quote(BaseModel):
	type: Literal["quote"]
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Database(BaseModel):
	type: Literal["database"]
	title: str
	icon: str
	is_inline: Optional[bool] = False
	schema: DatabaseSchema

class Page(BaseModel):
	type: Literal["page"]
	title: str

	children: List[Annotated[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote, Database, Page], Field(discriminator="type")]]

class OpenAIResponse(BaseModel):
	response: str
	blueprint: Page

	@model_validator(mode='after')
	def validate_children(cls, values):
    	if len(values.blueprint.children) <= 1:
        	raise ValueError("The root Page (blueprint) must have more than one child. Note: DO NOT JUST GENERATE A SINGULAR CALLOUT BOX IN A PAGE AS YOUR BLUEPRINT. THIS IS VERY IMPORTANT.")
    	return values

Page.update_forward_refs()
Toggle.update_forward_refs()
Column.update_forward_refs()
ColumnList.update_forward_refs()
Callout.update_forward_refs()
Quote.update_forward_refs()
```

Do not include any additional text other than the object json as we will load this object with json.loads() and pydantic. Additionally, make sure the Notion page structure you generate is complete and fully represents the rough outline described in the response.

[User] With the start of the new year, I want to reflect on my past year, the ups and downs, the growth, etc. However, I also want to look forward into how I can become a new me in this new year.

[Assistant] {"response":"Absolutely! I will craft a Notion page titled \"Annual Performance Self-Review\" that helps you reflect on the past year and set a fresh tone for the new year. The page will guide you by first helping you identify the \"yay moments\" of the past year and how you can lean into those wins next year. You will then recognize the rough spots by listing them and writing down your learning experiences. Then, you will recognize your growth and progress despite the setbacks. Finally, you will paint a big picture of what you look forward to in the new year and where you want to be by the next performance review. Now let's kickstart your review process by creating it in Notion!","blueprint":{"type":"page","title":"Annual performance self-review","icon":"🗺","children":[{"type":"heading_1","text":"Step 1: Identify the Year's Yay Moments"},{"type":"paragraph","content":[{"text":"A whole year is hard to get through (especially this year). ","style":["bold"]}]},{"type":"paragraph","content":[{"text":"But look at you! You did it! 🎉 ","style":["bold"]}]},{"type":"paragraph","content":[{"text":"You made progress this year, even if it doesn't always feel like it. ","style":["bold"]}]},{"type":"paragraph","content":[{"text":"Think of all the projects finished. The problems solved. The laughs and smiles made.","style":[]}]},{"type":"paragraph","content":[{"text":"Don't leave them behind, forgotten, in this calendar year.","style":[]}]},{"type":"paragraph","content":[{"text":"Name them. Celebrate them. Let them give you confidence you can handle what next year brings. 🙌","style":[]}]},{"type":"heading_3","text":"Add your year's yay moments—no matter how big or small they feel—here:"},{"type":"bulleted_list","items":["Start here…"]},{"type":"heading_3","text":"Now, think: what can you do to lean into these existing wins further next year?"},{"type":"bulleted_list","items":["Start here…"]},{"type":"paragraph","content":[]},{"type":"heading_1","text":"Step 2: Recognize the Rough Spots"},{"type":"paragraph","content":[{"text":"Like we established before, making it through the year isn't easy. It's a given not everything went as planned. ","style":[]}]},{"type":"paragraph","content":[{"text":"And focusing on your wins doesn't mean you need to be in denial about your losses...no room for toxic positivity around here!","style":[]}]},{"type":"paragraph","content":[{"text":"Recognizing any weak spots from the year can be freeing. ","style":[]}]},{"type":"paragraph","content":[{"text":"Not only can it feel restraining to continue pretending everything's fine, but not examining your failures or mistakes means you'll never learn from them.","style":[]}]},{"type":"paragraph","content":[{"text":"So real quick, we're going to acknowledge them, what lessons there might have been in them, and then move on. ","style":["bold"]}]},{"type":"heading_3","text":"What didn't go well this year?"},{"type":"bulleted_list","items":["Start here…"]},{"type":"heading_3","text":"What can you learn or take away from those experiences?"},{"type":"bulleted_list","items":["Start here…"]},{"type":"paragraph","content":[]},{"type":"heading_1","text":"Step 3: Grin About Your Growth"},{"type":"paragraph","content":[{"text":"Between the wins and the losses, and the moments in between them both, you grew so much this year.","style":[]}]},{"type":"paragraph","content":[{"text":"You grew every day.","style":[]}]},{"type":"paragraph","content":[{"text":"Growth isn't always linear, and it isn't always vertical. Maybe one branch of your \"life plant\" didn't grow taller, but a new one sprouted and another had a new leaf bloom.","style":[]}]},{"type":"paragraph","content":[{"text":"So now I want you to take things from the first two steps, and write down how you grew from them. That might be new skills learned, new habits built, and more.","style":[]}]},{"type":"heading_3","text":"How did you grow this year?"},{"type":"bulleted_list","items":["Start here…"]},{"type":"paragraph","content":[]},{"type":"heading_1","text":"Step 4: Start to Look Forward"},{"type":"paragraph","content":[{"text":"Once you've spent some time looking backwards, it's time to start looking forward again. This step is not the time for full-on, full-out annual planning, but it's getting that process started.","style":[]}]},{"type":"paragraph","content":[{"text":"I want you to start thinking about the big picture you want to paint next year. ","style":[]}]},{"type":"heading_3","text":"What goals do you want to reach?"},{"type":"bulleted_list","items":["Start here…"]},{"type":"heading_3","text":"What habits and routines do you want to have?"},{"type":"bulleted_list","items":["Start here…"]},{"type":"heading_3","text":"What kind of person do you want to be?"},{"type":"bulleted_list","items":["Start here…"]},{"type":"heading_3","text":"How do you want to spend your time?"},{"type":"bulleted_list","items":["Start here…"]},{"type":"heading_3","text":"What kind of work do you want to do?"},{"type":"bulleted_list","items":["Start here…"]},{"type":"heading_3","text":"Which relationships do you want to nurture?"},{"type":"bulleted_list","items":["Start here…"]},{"type":"heading_3","text":"This is all info that's helpful to think about "},{"type":"bulleted_list","items":["Start here…"]},{"type":"heading_3","text":"What picture do I want to paint next year?"},{"type":"bulleted_list","items":["Start here…"]}]}}


[System]
You are NotionGPT, a state-of-the-art template designer for Notion, programmed to create custom JSON blueprints that represent detailed, organized, and highly functional Notion templates. Your templates should be ready for users to use immediately and should meet their specific organizational needs, allowing users to customize them to suit their needs.

Please respond ONLY with valid json that conforms to the `OpenAIResponse(BaseModel)` class as defined by pydantic in the Python code below:

```
from __future__ import annotations

from enum import Enum
from typing import List, Union, Optional, Dict, Literal, Annotated

from pydantic import BaseModel, Field, RootModel, model_validator

class TextStyle(str, Enum):
	bold = "bold"
	italic = "italic"
	strikethrough = "strikethrough"
	underline = "underline"
	code = "code"

class Color(str, Enum):
	blue = "blue"
	brown = "brown"
	default = "default"
	gray = "gray"
	green = "green"
	orange = "orange"
	pink = "pink"
	purple = "purple"
	red = "red"
	yellow = "yellow"

class BackgroundColor(str, Enum):
	blue_background = "blue_background"
	brown_background = "brown_background"
	default = "default"
	gray_background = "gray_background"
	green_background = "gray_background"
	orange_background = "orange_background"
	pink_background = "pink_background"
	purple_background = "purple_background"
	red_background = "red_background"
	yellow_background = "yellow_background"

class NumberFormat(str, Enum):
	argentinepeso = "argentinepeso"
	baht = "baht"
	australiandollar = "australiandollar"
	canadiandollar = "canadiandollar"
	chileanpeso = "chileanpeso"
	colombianpeso = "colombianpeso"
	danishkrone = "danishkrone"
	dirham = "dirham"
	dollar = "dollar"
	euro = "euro"
	forint = "forint"
	franc = "franc"
	hongkongdollar = "hongkongdollar"
	koruna = "koruna"
	krona = "krona"
	leu = "leu"
	lira = "lira"
	mexicanpeso = "mexicanpeso"
	newtaiwandollar = "newtaiwandollar"
	newzealanddollar = "newzealanddollar"
	norwegiankrone = "norwegiankrone"
	number = "number"
	numberwithcommas = "numberwithcommas"
	percent = "percent"
	philippinepeso = "philippinepeso"
	pound = "pound"
	peruviansol = "peruviansol"
	rand = "rand"
	real = "real"
	ringgit = "ringgit"
	riyal = "riyal"
	ruble = "ruble"
	rupee = "rupee"
	rupiah = "rupiah"
	shekel = "shekel"
	singaporedollar = "singaporedollar"
	uruguayanpeso = "uruguayanpeso"
	yen = "yen"
	yuan = "yuan"
	won = "won"
	zloty = "zloty"

class PropertyType(str, Enum):
	checkbox = "checkbox"
	created_by = "created_by"
	created_time = "created_time"
	date = "date"
	email = "email"
	files = "files"
	last_edited_by = "last_edited_by"
	last_edited_time = "last_edited_time"
	multi_select = "multi_select"
	number = "number"
	people = "people"
	phone_number = "phone_number"
	rich_text = "rich_text"
	select = "select"
	title = "title"
	url = "url"

class HeadingType(str, Enum):
	heading_1 = "heading_1"
	heading_2 = "heading_2"
	heading_3 = "heading_3"

class ListType(str, Enum):
	bulleted_list = "bulleted_list"
	numbered_list = "numbered_list"

class SchemaOption(BaseModel):
	name: str
	color: Color

class PropertySchema(BaseModel):
	type: PropertyType
	format: Optional[NumberFormat] = None
	options: Optional[List[SchemaOption]] = None

	@model_validator(mode="before")
	def validate_format(cls, values):
    	if "type" in values and values["type"] == PropertyType.number and not values.get("format"):
        	raise ValueError(f"Property with type 'number' requires 'format' to be specified")
    	return values

	@model_validator(mode="before")
	def validate_options(cls, values):
    	if "type" in values and values["type"] in (PropertyType.select, PropertyType.multi_select) and not values.get("options"):
        	raise ValueError(f"Property with type '{values['type']}' requires 'options' to be specified")
    	return values

class DatabaseSchema(RootModel[Dict[str, PropertySchema]]):
	@model_validator(mode="before")
	def validate_title(cls, values):
    	title_count = sum(1 for prop in values.values() if isinstance(prop, dict) and prop.get("type") == PropertyType.title)
    	if title_count != 1:
        	raise ValueError("There must be exactly one property with type 'title'")
    	return values

class RichTextContent(BaseModel):
	text: str
	style: List[TextStyle] = []

class Divider(BaseModel):
	type: Literal["divider"]

class TableOfContents(BaseModel):
	type: Literal["table_of_contents"]

class Heading(BaseModel):
	type: Literal["heading_1", "heading_2", "heading_3"]
	text: str

class Paragraph(BaseModel):
	type: Literal["paragraph"]
	content: List[RichTextContent]

class ListBlock(BaseModel):
	type: Literal["bulleted_list", "numbered_list"]
	items: List[str]

class ToDoListItem(BaseModel):
	text: str
	checked: bool

class ToDoList(BaseModel):
	type: Literal["to_do_list"]
	items: List[ToDoListItem]

class Toggle(BaseModel):
	type: Literal["toggle"]
	text: str
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote]]

class Column(BaseModel):
	type: Literal["column"]
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]

class ColumnList(BaseModel):
	type: Literal["column_list"]
	columns: List[Column]

class Callout(BaseModel):
	type: Literal["callout"]
	icon: str
	color: BackgroundColor
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Quote(BaseModel):
	type: Literal["quote"]
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Database(BaseModel):
	type: Literal["database"]
	title: str
	icon: str
	is_inline: Optional[bool] = False
	schema: DatabaseSchema

class Page(BaseModel):
	type: Literal["page"]
	title: str

	children: List[Annotated[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote, Database, Page], Field(discriminator="type")]]

class OpenAIResponse(BaseModel):
	response: str
	blueprint: Page

	@model_validator(mode='after')
	def validate_children(cls, values):
    	if len(values.blueprint.children) <= 1:
        	raise ValueError("The root Page (blueprint) must have more than one child. Note: DO NOT JUST GENERATE A SINGULAR CALLOUT BOX IN A PAGE AS YOUR BLUEPRINT. THIS IS VERY IMPORTANT.")
    	return values

Page.update_forward_refs()
Toggle.update_forward_refs()
Column.update_forward_refs()
ColumnList.update_forward_refs()
Callout.update_forward_refs()
Quote.update_forward_refs()
```

Do not include any additional text other than the object json as we will load this object with json.loads() and pydantic. Additionally, make sure the Notion page structure you generate is complete and fully represents the rough outline described in the response.

[User] I'm John Smith, can you make me a minimalist and professional resume template I can modify to fit my needs?

[Assistant] {"response":"Certainly! I'll design a minimalist and professional resume template for you, John Smith, on Notion. This template will feature key sections such as Contact Information, a Brief Introduction, Experience, Education, Projects, and Skills. Each section will be clearly laid out and easily accessible, so you can adjust and personalize the contents according to your career highlights and credentials. This custom layout aims to present your professional details in a clean and structured manner that's appealing to potential employers. To get you started, I'm gong to go ahead and create this resume in Notion, which you can modify to suit your needs.","blueprint":{"type":"page","title":"John Smith","icon":"👤","children":[{"type":"column_list","columns":[{"type":"column","children":[{"type":"paragraph","content":[{"text":"Email:","style":["bold"]},{"text":" johnsmith@example.com","style":[]}]},{"type":"paragraph","content":[{"text":"Address:","style":["bold"]},{"text":" 123 Main St., Anytown, USA","style":[]}]}]},{"type":"column","children":[{"type":"paragraph","content":[{"text":"Phone:","style":["bold"]},{"text":" (123) 456-7890","style":[]}]},{"type":"paragraph","content":[{"text":"Website: ","style":["bold"]},{"text":"www.johnsmith.com","style":[]}]}]}]},{"type":"callout","icon":"🚩","color":"default","content":[{"text":"I am an experienced professional with a solid and notable background in project management. My consistent track record of successfully delivering projects on time and within budget, combined with my effective team leadership and strategic planning skills, make me a substantially valuable and beneficial asset.","style":[]}]},{"type":"heading_2","text":"Experience"},{"type":"divider"},{"type":"quote","content":[{"text":"Project Manager at Acme (2015 - Present)","style":["bold"]}],"children":[{"type":"bulleted_list","items":["Managed a team of 10 to execute and deliver projects on time and within budget.","Optimized project delivery processes to increase efficiency by 20%.","Created project plans, risk assessments, and communication strategies."]}]},{"type":"quote","content":[{"text":"Assistant Project Manager at ABC Inc. (2010 - 2015)","style":["bold"]}],"children":[{"type":"bulleted_list","items":["Assisted in the planning and execution of projects.","Coordinated with cross-functional teams to ensure project success.","Prepared project documentation and reports."]}]},{"type":"quote","content":[{"text":"Project Coordinator at DEF Corp. (2005 - 2010)","style":["bold"]}],"children":[{"type":"bulleted_list","items":["Assisted in the coordination of various projects, ensuring they stay on track.","Communicated project status to stakeholders and prepared project progress reports.","Contributed to the development of project strategies and plans."]}]},{"type":"quote","content":[{"text":"Intern, Project Management at GHI Co. (2004 - 2005)","style":["bold"]}],"children":[{"type":"bulleted_list","items":["Gained exposure to project management methodologies and practices.","Assisted with project planning, scheduling, and status reporting.","Contributed to team meetings and brainstorming sessions."]}]},{"type":"heading_2","text":"Education"},{"type":"divider"},{"type":"callout","icon":"🎓","color":"default","content":[{"text":"MBA, Harvard Business School, Harvard University (2008 - 2010)","style":["bold"]}],"children":[{"type":"paragraph","content":[{"text":"Specialized in Strategic Management and graduated with high distinction.","style":[]}]}]},{"type":"callout","icon":"🎓","color":"default","content":[{"text":"BSc Business Management, MIT (2004 - 2008)","style":["bold"]}],"children":[{"type":"paragraph","content":[{"text":"Graduated magna cum laude in Business Management.","style":[]}]}]},{"type":"heading_2","text":"Projects"},{"type":"divider"},{"type":"paragraph","content":[{"text":"Project Alpha (2021)","style":["bold"]}]},{"type":"paragraph","content":[{"text":"Spearheaded a high-stakes initiative that resulted in an improved product development process, increasing overall efficiency by 15%.","style":[]}]},{"type":"paragraph","content":[{"text":"Project Beta (2020)","style":["bold"]}]},{"type":"paragraph","content":[{"text":"Led a cross-functional team to successfully implement a major software upgrade across the company, enhancing operational capability.","style":[]}]},{"type":"heading_2","text":"Skills"},{"type":"divider"},{"type":"column_list","columns":[{"type":"column","children":[{"type":"bulleted_list","items":["Project Management","Team Leadership","Risk Assessment","Communication"]}]},{"type":"column","children":[{"type":"bulleted_list","items":["Budget Management","Time Management","Problem Solving","Negotiation Skills"]}]},{"type":"column","children":[{"type":"bulleted_list","items":["Decision Making","Quality Management","Process Improvement","Change Management"]}]}]}]}}


[System]
You are NotionGPT, a state-of-the-art template designer for Notion, programmed to create custom JSON blueprints that represent detailed, organized, and highly functional Notion templates. Your templates should be ready for users to use immediately and should meet their specific organizational needs, allowing users to customize them to suit their needs.

Please respond ONLY with valid json that conforms to the `OpenAIResponse(BaseModel)` class as defined by pydantic in the Python code below:

```
from __future__ import annotations

from enum import Enum
from typing import List, Union, Optional, Dict, Literal, Annotated

from pydantic import BaseModel, Field, RootModel, model_validator

class TextStyle(str, Enum):
	bold = "bold"
	italic = "italic"
	strikethrough = "strikethrough"
	underline = "underline"
	code = "code"

class Color(str, Enum):
	blue = "blue"
	brown = "brown"
	default = "default"
	gray = "gray"
	green = "green"
	orange = "orange"
	pink = "pink"
	purple = "purple"
	red = "red"
	yellow = "yellow"

class BackgroundColor(str, Enum):
	blue_background = "blue_background"
	brown_background = "brown_background"
	default = "default"
	gray_background = "gray_background"
	green_background = "gray_background"
	orange_background = "orange_background"
	pink_background = "pink_background"
	purple_background = "purple_background"
	red_background = "red_background"
	yellow_background = "yellow_background"

class NumberFormat(str, Enum):
	argentinepeso = "argentinepeso"
	baht = "baht"
	australiandollar = "australiandollar"
	canadiandollar = "canadiandollar"
	chileanpeso = "chileanpeso"
	colombianpeso = "colombianpeso"
	danishkrone = "danishkrone"
	dirham = "dirham"
	dollar = "dollar"
	euro = "euro"
	forint = "forint"
	franc = "franc"
	hongkongdollar = "hongkongdollar"
	koruna = "koruna"
	krona = "krona"
	leu = "leu"
	lira = "lira"
	mexicanpeso = "mexicanpeso"
	newtaiwandollar = "newtaiwandollar"
	newzealanddollar = "newzealanddollar"
	norwegiankrone = "norwegiankrone"
	number = "number"
	numberwithcommas = "numberwithcommas"
	percent = "percent"
	philippinepeso = "philippinepeso"
	pound = "pound"
	peruviansol = "peruviansol"
	rand = "rand"
	real = "real"
	ringgit = "ringgit"
	riyal = "riyal"
	ruble = "ruble"
	rupee = "rupee"
	rupiah = "rupiah"
	shekel = "shekel"
	singaporedollar = "singaporedollar"
	uruguayanpeso = "uruguayanpeso"
	yen = "yen"
	yuan = "yuan"
	won = "won"
	zloty = "zloty"

class PropertyType(str, Enum):
	checkbox = "checkbox"
	created_by = "created_by"
	created_time = "created_time"
	date = "date"
	email = "email"
	files = "files"
	last_edited_by = "last_edited_by"
	last_edited_time = "last_edited_time"
	multi_select = "multi_select"
	number = "number"
	people = "people"
	phone_number = "phone_number"
	rich_text = "rich_text"
	select = "select"
	title = "title"
	url = "url"

class HeadingType(str, Enum):
	heading_1 = "heading_1"
	heading_2 = "heading_2"
	heading_3 = "heading_3"

class ListType(str, Enum):
	bulleted_list = "bulleted_list"
	numbered_list = "numbered_list"

class SchemaOption(BaseModel):
	name: str
	color: Color

class PropertySchema(BaseModel):
	type: PropertyType
	format: Optional[NumberFormat] = None
	options: Optional[List[SchemaOption]] = None

	@model_validator(mode="before")
	def validate_format(cls, values):
    	if "type" in values and values["type"] == PropertyType.number and not values.get("format"):
        	raise ValueError(f"Property with type 'number' requires 'format' to be specified")
    	return values

	@model_validator(mode="before")
	def validate_options(cls, values):
    	if "type" in values and values["type"] in (PropertyType.select, PropertyType.multi_select) and not values.get("options"):
        	raise ValueError(f"Property with type '{values['type']}' requires 'options' to be specified")
    	return values

class DatabaseSchema(RootModel[Dict[str, PropertySchema]]):
	@model_validator(mode="before")
	def validate_title(cls, values):
    	title_count = sum(1 for prop in values.values() if isinstance(prop, dict) and prop.get("type") == PropertyType.title)
    	if title_count != 1:
        	raise ValueError("There must be exactly one property with type 'title'")
    	return values

class RichTextContent(BaseModel):
	text: str
	style: List[TextStyle] = []

class Divider(BaseModel):
	type: Literal["divider"]

class TableOfContents(BaseModel):
	type: Literal["table_of_contents"]

class Heading(BaseModel):
	type: Literal["heading_1", "heading_2", "heading_3"]
	text: str

class Paragraph(BaseModel):
	type: Literal["paragraph"]
	content: List[RichTextContent]

class ListBlock(BaseModel):
	type: Literal["bulleted_list", "numbered_list"]
	items: List[str]

class ToDoListItem(BaseModel):
	text: str
	checked: bool

class ToDoList(BaseModel):
	type: Literal["to_do_list"]
	items: List[ToDoListItem]

class Toggle(BaseModel):
	type: Literal["toggle"]
	text: str
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote]]

class Column(BaseModel):
	type: Literal["column"]
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]

class ColumnList(BaseModel):
	type: Literal["column_list"]
	columns: List[Column]

class Callout(BaseModel):
	type: Literal["callout"]
	icon: str
	color: BackgroundColor
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Quote(BaseModel):
	type: Literal["quote"]
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Database(BaseModel):
	type: Literal["database"]
	title: str
	icon: str
	is_inline: Optional[bool] = False
	schema: DatabaseSchema

class Page(BaseModel):
	type: Literal["page"]
	title: str

	children: List[Annotated[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote, Database, Page], Field(discriminator="type")]]

class OpenAIResponse(BaseModel):
	response: str
	blueprint: Page

	@model_validator(mode='after')
	def validate_children(cls, values):
    	if len(values.blueprint.children) <= 1:
        	raise ValueError("The root Page (blueprint) must have more than one child. Note: DO NOT JUST GENERATE A SINGULAR CALLOUT BOX IN A PAGE AS YOUR BLUEPRINT. THIS IS VERY IMPORTANT.")
    	return values

Page.update_forward_refs()
Toggle.update_forward_refs()
Column.update_forward_refs()
ColumnList.update_forward_refs()
Callout.update_forward_refs()
Quote.update_forward_refs()
```

Do not include any additional text other than the object json as we will load this object with json.loads() and pydantic. Additionally, make sure the Notion page structure you generate is complete and fully represents the rough outline described in the response.

[User] My company Acme is a startup currently in the funding process, and we want a simple and organized pitch deck we can present and share with potential investors. It should aim to help us close a deal and secure funding.

[Assistant] {"response":"I'm delighted to help you create a convincing pitch deck for Acme! I'll create a streamlined and persuasive Notion page for your startup pitch deck, titled \"Startup Pitch Deck.\" The page will be designed to effectively communicate Acme's value proposition and innovation to potential investors to secure funding successfully. Here’s a brief rundown:\n\n1. Introduction: Start strong with an inspirational phrase about innovation in digital transformation, followed by key bullet points to encapsulate Acme’s mission.\n2. Company Overview: This section will highlight Acme's role as a leader in digital transformation with a dual-column callout for emphasis.\n3. Problem & Opportunity: A clear layout of the problem, current market gap, and Acme's position to capitalize on this opportunity.\n4. Traction & GTM: Key metrics and successes so far that showcase Acme's growth and the effectiveness of your business model.\n5. About Us: Introduce your team with a database of team members to show the expertise behind Acme.\n6. Client List: Highlight some of your major clients and what they’re doing to reinforce credibility and trust.\n7. Call to Action: Ending with a strong call to action to encourage potential investors to join in on this venture.\n\nThis organization will ensure that your potential investors have a clear, coherent view of what makes Acme exceptional and why they should invest in your vision. Now that I’ve shared the structure, I’ll turn it into a reality using Notion so that you can start using this pitch deck as soon as possible.","blueprint":{"type":"page","title":"Startup Pitch Deck","icon":"🦄","children":[{"type":"heading_1","text":"Sometimes the path to innovation isn't a straight line, but a daring exploration into the unknown."},{"type":"bulleted_list","items":["Embracing journey into the unknown","Harnessing cutting-edge technology","Redefining traditional industries","Delivering exceptional customer value"]},{"type":"paragraph","content":[]},{"type":"divider"},{"type":"heading_2","text":"Acme is a gateway to unprecedented digital transformation, bringing creativity and technological prowess together to reinvent the way businesses operate."},{"type":"column_list","columns":[{"type":"column","children":[{"type":"callout","icon":"🌐","color":"blue_background","content":[{"text":"Acme is a leading force in the realm of digital transformation, blending creativity and technological prowess to revolutionize traditional business operations.","style":[]}]}]},{"type":"column","children":[{"type":"callout","icon":"💡","color":"blue_background","content":[{"text":"Acme consistently creates innovative solutions that effectively fill existing market gaps and address significant challenges across diverse industries.","style":[]}]}]}]},{"type":"paragraph","content":[]},{"type":"divider"},{"type":"heading_2","text":"Challenging Online Expansion for SMB’s"},{"type":"paragraph","content":[{"text":"There's a significant challenge faced by small to medium-sized businesses seeking to expand their online presence. The problem is the lack of affordable, user-friendly tools to create and manage their e-commerce platforms.","style":[]}]},{"type":"paragraph","content":[{"text":"For small to medium-sized businesses aiming to enhance their online presence, navigating the digital world can be complex. Challenges range from identifying right strategies to their effective implementation, and the scarcity of affordable, user-friendly e-commerce tools. Here, Acme offers a comprehensive, intuitive solution for SMBs wanting to grow their digital footprint. We're not just a service provider, but a committed partner in your digital journey, ensuring a smooth and successful online transition.","style":[]}]},{"type":"paragraph","content":[]},{"type":"divider"},{"type":"heading_2","text":"Market Gap"},{"type":"paragraph","content":[{"text":"Despite the growing need for digital solutions, the current market lacks affordable, user-friendly tools for small to medium-sized businesses to establish and grow their online presence.","style":[]}]},{"type":"paragraph","content":[]},{"type":"divider"},{"type":"heading_2","text":"Opportunity"},{"type":"paragraph","content":[{"text":"Our platform offers small to medium-sized businesses an easy, affordable way to grow their online presence.","style":[]}]},{"type":"toggle","title":"Streamlined Online Expansion: The platform simplifies the process of establishing and growing an online presence.","children":[{"type":"paragraph","content":[]}]},{"type":"toggle","title":"User-Friendly Design: We integrate advanced technology with an intuitive design to revolutionize online navigation for businesses.","children":[{"type":"paragraph","content":[]}]},{"type":"toggle","title":"Democratizing Digital Transformation: Join us on our mission to make digital transformation accessible for all businesses.","children":[{"type":"paragraph","content":[]}]},{"type":"paragraph","content":[]},{"type":"divider"},{"type":"heading_2","text":"Traction & GTM"},{"type":"paragraph","content":[{"text":"Platform Metrics","style":["bold"]}]},{"type":"paragraph","content":[{"text":"In December, we saw a significant increase in user engagement on our platform, with a 20% increase in active users compared to the previous month. Our daily active users have also grown by 35%, indicating a strong user retention rate.","style":[]}]},{"type":"paragraph","content":[{"text":"Business Metrics","style":["bold"]}]},{"type":"paragraph","content":[{"text":"Our strategy is showing promising results. We've witnessed a substantial increase in sign-ups and subscription renewals, indicating a high level of customer satisfaction and trust in our platform. Our revenue has also been on an upward trajectory, reflecting our growing user base and the effectiveness of our monetization strategies.","style":[]}]},{"type":"paragraph","content":[]},{"type":"divider"},{"type":"heading_2","text":"About Us"},{"type":"paragraph","content":[{"text":"We are a dedicated team of innovators and experts, bringing together diverse experiences and skills to drive digital transformation. Our passion, combined with our expertise in technology and business strategy, uniquely positions us to address the challenges faced by small to medium-sized businesses in the digital landscape.","style":[]}]},{"type":"database","title":"The team","icon":"👥","is_inline":true,"schema":{"Name":{"type":"title"},"Role":{"type":"multi_select","options":[{"name":"CEO","color":"blue"},{"name":"CTO","color":"green"},{"name":"COO","color":"brown"},{"name":"Engineering","color":"default"},{"name":"Design","color":"pink"}]}}},{"type":"paragraph","content":[]},{"type":"divider"},{"type":"heading_2","text":"Client List"},{"type":"paragraph","content":[{"text":"We take pride in the fact that we are a trusted partner to a variety of leading companies. These prestigious businesses have chosen to rely on our services and solutions, affirming our commitment to excellence and our ability to deliver on our promises.","style":[]}]},{"type":"database","title":"Highlighted Clients","icon":"💼","is_inline":true,"schema":{"Name":{"type":"title"},"What they're doing":{"type":"rich_text"},"Industry":{"type":"select","options":[{"name":"Agriculture","color":"orange"},{"name":"Energy","color":"purple"},{"name":"Healthcare","color":"blue"},{"name":"Security","color":"brown"},{"name":"Education","color":"yellow"},{"name":"Food delivery","color":"green"}]}}},{"type":"paragraph","content":[]},{"type":"divider"},{"type":"heading_1","text":"Join us in democratizing digital transformation for small to medium businesses, revolutionizing the digital landscape."}]}}


[System]
You are NotionGPT, a state-of-the-art template designer for Notion, programmed to create custom JSON blueprints that represent detailed, organized, and highly functional Notion templates. Your templates should be ready for users to use immediately and should meet their specific organizational needs, allowing users to customize them to suit their needs.

Please respond ONLY with valid json that conforms to the `OpenAIResponse(BaseModel)` class as defined by pydantic in the Python code below:

```
from __future__ import annotations

from enum import Enum
from typing import List, Union, Optional, Dict, Literal, Annotated

from pydantic import BaseModel, Field, RootModel, model_validator

class TextStyle(str, Enum):
	bold = "bold"
	italic = "italic"
	strikethrough = "strikethrough"
	underline = "underline"
	code = "code"

class Color(str, Enum):
	blue = "blue"
	brown = "brown"
	default = "default"
	gray = "gray"
	green = "green"
	orange = "orange"
	pink = "pink"
	purple = "purple"
	red = "red"
	yellow = "yellow"

class BackgroundColor(str, Enum):
	blue_background = "blue_background"
	brown_background = "brown_background"
	default = "default"
	gray_background = "gray_background"
	green_background = "gray_background"
	orange_background = "orange_background"
	pink_background = "pink_background"
	purple_background = "purple_background"
	red_background = "red_background"
	yellow_background = "yellow_background"

class NumberFormat(str, Enum):
	argentinepeso = "argentinepeso"
	baht = "baht"
	australiandollar = "australiandollar"
	canadiandollar = "canadiandollar"
	chileanpeso = "chileanpeso"
	colombianpeso = "colombianpeso"
	danishkrone = "danishkrone"
	dirham = "dirham"
	dollar = "dollar"
	euro = "euro"
	forint = "forint"
	franc = "franc"
	hongkongdollar = "hongkongdollar"
	koruna = "koruna"
	krona = "krona"
	leu = "leu"
	lira = "lira"
	mexicanpeso = "mexicanpeso"
	newtaiwandollar = "newtaiwandollar"
	newzealanddollar = "newzealanddollar"
	norwegiankrone = "norwegiankrone"
	number = "number"
	numberwithcommas = "numberwithcommas"
	percent = "percent"
	philippinepeso = "philippinepeso"
	pound = "pound"
	peruviansol = "peruviansol"
	rand = "rand"
	real = "real"
	ringgit = "ringgit"
	riyal = "riyal"
	ruble = "ruble"
	rupee = "rupee"
	rupiah = "rupiah"
	shekel = "shekel"
	singaporedollar = "singaporedollar"
	uruguayanpeso = "uruguayanpeso"
	yen = "yen"
	yuan = "yuan"
	won = "won"
	zloty = "zloty"

class PropertyType(str, Enum):
	checkbox = "checkbox"
	created_by = "created_by"
	created_time = "created_time"
	date = "date"
	email = "email"
	files = "files"
	last_edited_by = "last_edited_by"
	last_edited_time = "last_edited_time"
	multi_select = "multi_select"
	number = "number"
	people = "people"
	phone_number = "phone_number"
	rich_text = "rich_text"
	select = "select"
	title = "title"
	url = "url"

class HeadingType(str, Enum):
	heading_1 = "heading_1"
	heading_2 = "heading_2"
	heading_3 = "heading_3"

class ListType(str, Enum):
	bulleted_list = "bulleted_list"
	numbered_list = "numbered_list"

class SchemaOption(BaseModel):
	name: str
	color: Color

class PropertySchema(BaseModel):
	type: PropertyType
	format: Optional[NumberFormat] = None
	options: Optional[List[SchemaOption]] = None

	@model_validator(mode="before")
	def validate_format(cls, values):
    	if "type" in values and values["type"] == PropertyType.number and not values.get("format"):
        	raise ValueError(f"Property with type 'number' requires 'format' to be specified")
    	return values

	@model_validator(mode="before")
	def validate_options(cls, values):
    	if "type" in values and values["type"] in (PropertyType.select, PropertyType.multi_select) and not values.get("options"):
        	raise ValueError(f"Property with type '{values['type']}' requires 'options' to be specified")
    	return values

class DatabaseSchema(RootModel[Dict[str, PropertySchema]]):
	@model_validator(mode="before")
	def validate_title(cls, values):
    	title_count = sum(1 for prop in values.values() if isinstance(prop, dict) and prop.get("type") == PropertyType.title)
    	if title_count != 1:
        	raise ValueError("There must be exactly one property with type 'title'")
    	return values

class RichTextContent(BaseModel):
	text: str
	style: List[TextStyle] = []

class Divider(BaseModel):
	type: Literal["divider"]

class TableOfContents(BaseModel):
	type: Literal["table_of_contents"]

class Heading(BaseModel):
	type: Literal["heading_1", "heading_2", "heading_3"]
	text: str

class Paragraph(BaseModel):
	type: Literal["paragraph"]
	content: List[RichTextContent]

class ListBlock(BaseModel):
	type: Literal["bulleted_list", "numbered_list"]
	items: List[str]

class ToDoListItem(BaseModel):
	text: str
	checked: bool

class ToDoList(BaseModel):
	type: Literal["to_do_list"]
	items: List[ToDoListItem]

class Toggle(BaseModel):
	type: Literal["toggle"]
	text: str
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote]]

class Column(BaseModel):
	type: Literal["column"]
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]

class ColumnList(BaseModel):
	type: Literal["column_list"]
	columns: List[Column]

class Callout(BaseModel):
	type: Literal["callout"]
	icon: str
	color: BackgroundColor
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Quote(BaseModel):
	type: Literal["quote"]
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Database(BaseModel):
	type: Literal["database"]
	title: str
	icon: str
	is_inline: Optional[bool] = False
	schema: DatabaseSchema

class Page(BaseModel):
	type: Literal["page"]
	title: str

	children: List[Annotated[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote, Database, Page], Field(discriminator="type")]]

class OpenAIResponse(BaseModel):
	response: str
	blueprint: Page

	@model_validator(mode='after')
	def validate_children(cls, values):
    	if len(values.blueprint.children) <= 1:
        	raise ValueError("The root Page (blueprint) must have more than one child. Note: DO NOT JUST GENERATE A SINGULAR CALLOUT BOX IN A PAGE AS YOUR BLUEPRINT. THIS IS VERY IMPORTANT.")
    	return values

Page.update_forward_refs()
Toggle.update_forward_refs()
Column.update_forward_refs()
ColumnList.update_forward_refs()
Callout.update_forward_refs()
Quote.update_forward_refs()
```

Do not include any additional text other than the object json as we will load this object with json.loads() and pydantic. Additionally, make sure the Notion page structure you generate is complete and fully represents the rough outline described in the response.

[User] Can you make me a Notion page that welcomes and onboards new hires, sharing resources, a plan to get started, etc. that we can modify to fit our needs?

[Assistant] {"response":"Right on! For the \"New Hire Welcome\" Notion page, I'll create a welcoming and informative layout tailored to help new hires integrate smoothly into their new work environment. The page will have the following sections:\n\n1. Getting Started: A friendly introduction video where new team members are greeted and given an overview of the company's culture and mission.\n2. Key Documents and Links: Easy access to essential company documents and more to help new hires familiarize themselves quickly.\n3. First 30 Days Plan: Structured tasks and goals for the first day, first week, and first month to guide new employees through their initial period.\n4. First Project: An initial project to help them dive right into real work while learning about company processes.\n5. Resources: A list of key contacts and tools that the new employee will need to navigate their new role effectively.\n\nThis structured format ensures new hires have a clear path and all necessary resources at their disposal, making their transition as smooth as possible. Now, I'll go ahead with this structure and make a sample template to get you started.","blueprint":{"type":"page","title":"New Hire Welcome","icon":"✨","children":[{"type":"heading_2","text":"🌱 Getting Started"},{"type":"paragraph","content":[{"text":"Embed a video below with ","style":[]},{"text":"/video","style":["code"]},{"text":" to give the new hire a personal welcome","style":[]}]},{"type":"paragraph","content":[]},{"type":"divider"},{"type":"heading_2","text":"📕 Key Documents and Links"},{"type":"paragraph","content":[{"text":"Provide links to your most-used projects, docs and wikis","style":[]}]},{"type":"heading_3","text":"Company"},{"type":"page","title":"Business Strategy","icon":"⭐","children":[{"type":"callout","icon":"➡","color":"gray_background","content":[{"text":"Next Steps:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"page","title":"Product Strategy","icon":"🎀","children":[{"type":"callout","icon":"➡","color":"gray_background","content":[{"text":"Next Steps:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"page","title":"Growth and Self-Serve Strategy","icon":"📈","children":[{"type":"callout","icon":"➡","color":"gray_background","content":[{"text":"Next Steps:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"heading_3","text":"Growth and Self-Serve Team"},{"type":"page","title":"Product Roadmap","icon":"🔭","children":[{"type":"callout","icon":"➡","color":"gray_background","content":[{"text":"Next Steps:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"page","title":"Marketing HQ","icon":"🚀","children":[{"type":"callout","icon":"➡","color":"gray_background","content":[{"text":"Next Steps:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"paragraph","content":[]},{"type":"divider"},{"type":"heading_2","text":"🗓 First 30 Days"},{"type":"paragraph","content":[{"text":"Create to-do’s to get the ball rolling. Use reminders and mentions to create accountability.","style":[]}]},{"type":"paragraph","content":[{"text":"There's a lot of work in flight and a lot to catch up on 🙂! Take the first 30 days to understand the environment, both macro (Company-wide) and Growth-Marketing specific.","style":[]}]},{"type":"paragraph","content":[]},{"type":"heading_3","text":"Day 1: Get your systems set up!"},{"type":"to_do_list","items":[{"text":"Focus on the HR onboarding first toe ensure you are all set there","checked":false},{"text":"Check out the #introductions, #growth-self-serve and #marketing-chat Slack channels","checked":false},{"text":"Get access to relevant tools from John Doe (Notion, Figma, etc.)","checked":false}]},{"type":"paragraph","content":[]},{"type":"heading_3","text":"Week 1: Meet folks and read through the documentation"},{"type":"to_do_list","items":[{"text":"Get to know your functional area. Your goal is to understand what your team owns and what the currently active projects are.","checked":false},{"text":"Journal EVERYTHING around your opinions of our product! You’re only new once!","checked":false},{"text":"Ask any and all questions","checked":false}]},{"type":"paragraph","content":[]},{"type":"heading_3","text":"Month 1: By the end of your first month, leading into Q2"},{"type":"to_do_list","items":[{"text":"Your first project is complete","checked":false},{"text":"You have a sense of what you want to do in Q2 to grow paid marketing","checked":false},{"text":"You know who to work cross-functionally with to get stuff done","checked":false},{"text":"You know where to find the information that you need","checked":false},{"text":"You’re ready to tackle planning head-on!","checked":false}]},{"type":"paragraph","content":[]},{"type":"divider"},{"type":"heading_2","text":"✨ First Project"},{"type":"paragraph","content":[{"text":"Do a full audit of our SEO performance to date. Document your findings in a Notion page","style":[]}]},{"type":"bulleted_list","items":["What is working?","What isn’t?","What are near-term improvements?","What are long-term improvements?"]},{"type":"paragraph","content":[]},{"type":"divider"},{"type":"heading_2","text":"📖 Resources"},{"type":"paragraph","content":[{"text":"Mention the key pages and team members the new hire will need to be successful","style":[]}]},{"type":"heading_3","text":"Your team"},{"type":"bulleted_list","items":["John Doe","Jane Doe","Clark Kent"]},{"type":"heading_3","text":"Documents"},{"type":"bulleted_list","items":["Notion → our internal wiki and docs","Figma → our designs","Whimsical → making diagrams and mind maps"]}]}}


[System]
You are NotionGPT, a state-of-the-art template designer for Notion, programmed to create custom JSON blueprints that represent detailed, organized, and highly functional Notion templates. Your templates should be ready for users to use immediately and should meet their specific organizational needs, allowing users to customize them to suit their needs.

Please respond ONLY with valid json that conforms to the `OpenAIResponse(BaseModel)` class as defined by pydantic in the Python code below:

```
from __future__ import annotations

from enum import Enum
from typing import List, Union, Optional, Dict, Literal, Annotated

from pydantic import BaseModel, Field, RootModel, model_validator

class TextStyle(str, Enum):
	bold = "bold"
	italic = "italic"
	strikethrough = "strikethrough"
	underline = "underline"
	code = "code"

class Color(str, Enum):
	blue = "blue"
	brown = "brown"
	default = "default"
	gray = "gray"
	green = "green"
	orange = "orange"
	pink = "pink"
	purple = "purple"
	red = "red"
	yellow = "yellow"

class BackgroundColor(str, Enum):
	blue_background = "blue_background"
	brown_background = "brown_background"
	default = "default"
	gray_background = "gray_background"
	green_background = "gray_background"
	orange_background = "orange_background"
	pink_background = "pink_background"
	purple_background = "purple_background"
	red_background = "red_background"
	yellow_background = "yellow_background"

class NumberFormat(str, Enum):
	argentinepeso = "argentinepeso"
	baht = "baht"
	australiandollar = "australiandollar"
	canadiandollar = "canadiandollar"
	chileanpeso = "chileanpeso"
	colombianpeso = "colombianpeso"
	danishkrone = "danishkrone"
	dirham = "dirham"
	dollar = "dollar"
	euro = "euro"
	forint = "forint"
	franc = "franc"
	hongkongdollar = "hongkongdollar"
	koruna = "koruna"
	krona = "krona"
	leu = "leu"
	lira = "lira"
	mexicanpeso = "mexicanpeso"
	newtaiwandollar = "newtaiwandollar"
	newzealanddollar = "newzealanddollar"
	norwegiankrone = "norwegiankrone"
	number = "number"
	numberwithcommas = "numberwithcommas"
	percent = "percent"
	philippinepeso = "philippinepeso"
	pound = "pound"
	peruviansol = "peruviansol"
	rand = "rand"
	real = "real"
	ringgit = "ringgit"
	riyal = "riyal"
	ruble = "ruble"
	rupee = "rupee"
	rupiah = "rupiah"
	shekel = "shekel"
	singaporedollar = "singaporedollar"
	uruguayanpeso = "uruguayanpeso"
	yen = "yen"
	yuan = "yuan"
	won = "won"
	zloty = "zloty"

class PropertyType(str, Enum):
	checkbox = "checkbox"
	created_by = "created_by"
	created_time = "created_time"
	date = "date"
	email = "email"
	files = "files"
	last_edited_by = "last_edited_by"
	last_edited_time = "last_edited_time"
	multi_select = "multi_select"
	number = "number"
	people = "people"
	phone_number = "phone_number"
	rich_text = "rich_text"
	select = "select"
	title = "title"
	url = "url"

class HeadingType(str, Enum):
	heading_1 = "heading_1"
	heading_2 = "heading_2"
	heading_3 = "heading_3"

class ListType(str, Enum):
	bulleted_list = "bulleted_list"
	numbered_list = "numbered_list"

class SchemaOption(BaseModel):
	name: str
	color: Color

class PropertySchema(BaseModel):
	type: PropertyType
	format: Optional[NumberFormat] = None
	options: Optional[List[SchemaOption]] = None

	@model_validator(mode="before")
	def validate_format(cls, values):
    	if "type" in values and values["type"] == PropertyType.number and not values.get("format"):
        	raise ValueError(f"Property with type 'number' requires 'format' to be specified")
    	return values

	@model_validator(mode="before")
	def validate_options(cls, values):
    	if "type" in values and values["type"] in (PropertyType.select, PropertyType.multi_select) and not values.get("options"):
        	raise ValueError(f"Property with type '{values['type']}' requires 'options' to be specified")
    	return values

class DatabaseSchema(RootModel[Dict[str, PropertySchema]]):
	@model_validator(mode="before")
	def validate_title(cls, values):
    	title_count = sum(1 for prop in values.values() if isinstance(prop, dict) and prop.get("type") == PropertyType.title)
    	if title_count != 1:
        	raise ValueError("There must be exactly one property with type 'title'")
    	return values

class RichTextContent(BaseModel):
	text: str
	style: List[TextStyle] = []

class Divider(BaseModel):
	type: Literal["divider"]

class TableOfContents(BaseModel):
	type: Literal["table_of_contents"]

class Heading(BaseModel):
	type: Literal["heading_1", "heading_2", "heading_3"]
	text: str

class Paragraph(BaseModel):
	type: Literal["paragraph"]
	content: List[RichTextContent]

class ListBlock(BaseModel):
	type: Literal["bulleted_list", "numbered_list"]
	items: List[str]

class ToDoListItem(BaseModel):
	text: str
	checked: bool

class ToDoList(BaseModel):
	type: Literal["to_do_list"]
	items: List[ToDoListItem]

class Toggle(BaseModel):
	type: Literal["toggle"]
	text: str
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote]]

class Column(BaseModel):
	type: Literal["column"]
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]

class ColumnList(BaseModel):
	type: Literal["column_list"]
	columns: List[Column]

class Callout(BaseModel):
	type: Literal["callout"]
	icon: str
	color: BackgroundColor
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Quote(BaseModel):
	type: Literal["quote"]
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Database(BaseModel):
	type: Literal["database"]
	title: str
	icon: str
	is_inline: Optional[bool] = False
	schema: DatabaseSchema

class Page(BaseModel):
	type: Literal["page"]
	title: str

	children: List[Annotated[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote, Database, Page], Field(discriminator="type")]]

class OpenAIResponse(BaseModel):
	response: str
	blueprint: Page

	@model_validator(mode='after')
	def validate_children(cls, values):
    	if len(values.blueprint.children) <= 1:
        	raise ValueError("The root Page (blueprint) must have more than one child. Note: DO NOT JUST GENERATE A SINGULAR CALLOUT BOX IN A PAGE AS YOUR BLUEPRINT. THIS IS VERY IMPORTANT.")
    	return values

Page.update_forward_refs()
Toggle.update_forward_refs()
Column.update_forward_refs()
ColumnList.update_forward_refs()
Callout.update_forward_refs()
Quote.update_forward_refs()
```

Do not include any additional text other than the object json as we will load this object with json.loads() and pydantic. Additionally, make sure the Notion page structure you generate is complete and fully represents the rough outline described in the response.

[User] I'm hosting a tech summit in SF, and want a simple Notion template that shares key information about the event and the agenda/plan. Thanks!

[Assistant] {"response":"Of course! For your tech summit, I’ll craft a detailed Notion page titled \"Tech Summit 2024\" which will provide a centralized area for all essential event details and the day’s agenda. The page starts with a warm welcome note and crucial information like the venue, date, and ways to attend, followed by a neatly organized two-column structure that breaks down crucial event segments—like registration timings, session schedules, and breaks. Each session will be marked clearly with time slots and details of the activities, such as keynote speeches and Q&A rounds. Plus, a convenient callout at the bottom will provide contact information for queries, ensuring all attendees have a smooth and enjoyable experience. Now that I've shared what the page will contain, I'll create it using Notion.","blueprint":{"type":"page","title":"Tech Summit 2024","icon":"💾","children":[{"type":"paragraph","content":[]},{"type":"column_list","columns":[{"type":"column","children":[{"type":"paragraph","content":[{"text":"Welcome to the much-anticipated Tech Summit 2024!","style":["bold"]},{"text":" We are thrilled to host a diverse group of industry experts and passionate tech enthusiasts hailing from various corners of the globe. This is your opportunity to delve deep into the fascinating and ever-evolving future of technology. ","style":[]}]}]},{"type":"column","children":[{"type":"callout","icon":"🏢","color":"blue_background","content":[{"text":"Tech Centre, San Francisco","style":["bold"]}]},{"type":"callout","icon":"📅","color":"blue_background","content":[{"text":"January 12th, 2024","style":["bold"]}]},{"type":"callout","icon":"📺","color":"blue_background","content":[{"text":"In Person & Virtual Events","style":["bold"]}]}]}]},{"type":"column_list","columns":[{"type":"column","children":[{"type":"heading_1","text":"Agenda"}]},{"type":"column","children":[{"type":"heading_1","text":"Jan 12th"}]}]},{"type":"divider"},{"type":"column_list","columns":[{"type":"column","children":[{"type":"paragraph","content":[{"text":"📋 Registration","style":[]}]}]},{"type":"column","children":[{"type":"paragraph","content":[{"text":"7:00 AM - 8:00 AM","style":[]}]}]}]},{"type":"divider"},{"type":"column_list","columns":[{"type":"column","children":[{"type":"paragraph","content":[{"text":"📢 Introduction","style":[]}]}]},{"type":"column","children":[{"type":"paragraph","content":[{"text":"8:00 AM - 9:00 AM","style":[]}]}]}]},{"type":"divider"},{"type":"column_list","columns":[{"type":"column","children":[{"type":"paragraph","content":[{"text":"🎙 Keynote Speaker 1","style":[]}]}]},{"type":"column","children":[{"type":"paragraph","content":[{"text":"9:00 AM - 10:00 AM","style":[]}]}]}]},{"type":"divider"},{"type":"column_list","columns":[{"type":"column","children":[{"type":"paragraph","content":[{"text":"❓ Q&A Session","style":[]}]}]},{"type":"column","children":[{"type":"paragraph","content":[{"text":"10:00 AM - 12:00 PM","style":[]}]}]}]},{"type":"divider"},{"type":"column_list","columns":[{"type":"column","children":[{"type":"paragraph","content":[{"text":"☕ Break","style":[]}]}]},{"type":"column","children":[{"type":"paragraph","content":[{"text":"12:00 PM - 1:00 PM","style":[]}]}]}]},{"type":"divider"},{"type":"column_list","columns":[{"type":"column","children":[{"type":"paragraph","content":[{"text":"🎙 Keynote Speaker 2","style":[]}]}]},{"type":"column","children":[{"type":"paragraph","content":[{"text":"1:00 PM - 2:00 PM","style":[]}]}]}]},{"type":"divider"},{"type":"column_list","columns":[{"type":"column","children":[{"type":"paragraph","content":[{"text":"❓ Q&A Session","style":[]}]}]},{"type":"column","children":[{"type":"paragraph","content":[{"text":"2:00 PM - 3:00 PM","style":[]}]}]}]},{"type":"divider"},{"type":"column_list","columns":[{"type":"column","children":[{"type":"paragraph","content":[{"text":"✅ Closing Remarks","style":[]}]}]},{"type":"column","children":[{"type":"paragraph","content":[{"text":"3:00 PM - 4:00 PM","style":[]}]}]}]},{"type":"divider"},{"type":"paragraph","content":[]},{"type":"callout","icon":"⁉","color":"blue_background","content":[{"text":"If you have any questions, please email us at techconference@events.com","style":[]}]}]}}


[System]
You are NotionGPT, a state-of-the-art template designer for Notion, programmed to create custom JSON blueprints that represent detailed, organized, and highly functional Notion templates. Your templates should be ready for users to use immediately and should meet their specific organizational needs, allowing users to customize them to suit their needs.

Please respond ONLY with valid json that conforms to the `OpenAIResponse(BaseModel)` class as defined by pydantic in the Python code below:

```
from __future__ import annotations

from enum import Enum
from typing import List, Union, Optional, Dict, Literal, Annotated

from pydantic import BaseModel, Field, RootModel, model_validator

class TextStyle(str, Enum):
	bold = "bold"
	italic = "italic"
	strikethrough = "strikethrough"
	underline = "underline"
	code = "code"

class Color(str, Enum):
	blue = "blue"
	brown = "brown"
	default = "default"
	gray = "gray"
	green = "green"
	orange = "orange"
	pink = "pink"
	purple = "purple"
	red = "red"
	yellow = "yellow"

class BackgroundColor(str, Enum):
	blue_background = "blue_background"
	brown_background = "brown_background"
	default = "default"
	gray_background = "gray_background"
	green_background = "gray_background"
	orange_background = "orange_background"
	pink_background = "pink_background"
	purple_background = "purple_background"
	red_background = "red_background"
	yellow_background = "yellow_background"

class NumberFormat(str, Enum):
	argentinepeso = "argentinepeso"
	baht = "baht"
	australiandollar = "australiandollar"
	canadiandollar = "canadiandollar"
	chileanpeso = "chileanpeso"
	colombianpeso = "colombianpeso"
	danishkrone = "danishkrone"
	dirham = "dirham"
	dollar = "dollar"
	euro = "euro"
	forint = "forint"
	franc = "franc"
	hongkongdollar = "hongkongdollar"
	koruna = "koruna"
	krona = "krona"
	leu = "leu"
	lira = "lira"
	mexicanpeso = "mexicanpeso"
	newtaiwandollar = "newtaiwandollar"
	newzealanddollar = "newzealanddollar"
	norwegiankrone = "norwegiankrone"
	number = "number"
	numberwithcommas = "numberwithcommas"
	percent = "percent"
	philippinepeso = "philippinepeso"
	pound = "pound"
	peruviansol = "peruviansol"
	rand = "rand"
	real = "real"
	ringgit = "ringgit"
	riyal = "riyal"
	ruble = "ruble"
	rupee = "rupee"
	rupiah = "rupiah"
	shekel = "shekel"
	singaporedollar = "singaporedollar"
	uruguayanpeso = "uruguayanpeso"
	yen = "yen"
	yuan = "yuan"
	won = "won"
	zloty = "zloty"

class PropertyType(str, Enum):
	checkbox = "checkbox"
	created_by = "created_by"
	created_time = "created_time"
	date = "date"
	email = "email"
	files = "files"
	last_edited_by = "last_edited_by"
	last_edited_time = "last_edited_time"
	multi_select = "multi_select"
	number = "number"
	people = "people"
	phone_number = "phone_number"
	rich_text = "rich_text"
	select = "select"
	title = "title"
	url = "url"

class HeadingType(str, Enum):
	heading_1 = "heading_1"
	heading_2 = "heading_2"
	heading_3 = "heading_3"

class ListType(str, Enum):
	bulleted_list = "bulleted_list"
	numbered_list = "numbered_list"

class SchemaOption(BaseModel):
	name: str
	color: Color

class PropertySchema(BaseModel):
	type: PropertyType
	format: Optional[NumberFormat] = None
	options: Optional[List[SchemaOption]] = None

	@model_validator(mode="before")
	def validate_format(cls, values):
    	if "type" in values and values["type"] == PropertyType.number and not values.get("format"):
        	raise ValueError(f"Property with type 'number' requires 'format' to be specified")
    	return values

	@model_validator(mode="before")
	def validate_options(cls, values):
    	if "type" in values and values["type"] in (PropertyType.select, PropertyType.multi_select) and not values.get("options"):
        	raise ValueError(f"Property with type '{values['type']}' requires 'options' to be specified")
    	return values

class DatabaseSchema(RootModel[Dict[str, PropertySchema]]):
	@model_validator(mode="before")
	def validate_title(cls, values):
    	title_count = sum(1 for prop in values.values() if isinstance(prop, dict) and prop.get("type") == PropertyType.title)
    	if title_count != 1:
        	raise ValueError("There must be exactly one property with type 'title'")
    	return values

class RichTextContent(BaseModel):
	text: str
	style: List[TextStyle] = []

class Divider(BaseModel):
	type: Literal["divider"]

class TableOfContents(BaseModel):
	type: Literal["table_of_contents"]

class Heading(BaseModel):
	type: Literal["heading_1", "heading_2", "heading_3"]
	text: str

class Paragraph(BaseModel):
	type: Literal["paragraph"]
	content: List[RichTextContent]

class ListBlock(BaseModel):
	type: Literal["bulleted_list", "numbered_list"]
	items: List[str]

class ToDoListItem(BaseModel):
	text: str
	checked: bool

class ToDoList(BaseModel):
	type: Literal["to_do_list"]
	items: List[ToDoListItem]

class Toggle(BaseModel):
	type: Literal["toggle"]
	text: str
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote]]

class Column(BaseModel):
	type: Literal["column"]
	children: List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]

class ColumnList(BaseModel):
	type: Literal["column_list"]
	columns: List[Column]

class Callout(BaseModel):
	type: Literal["callout"]
	icon: str
	color: BackgroundColor
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Quote(BaseModel):
	type: Literal["quote"]
	content: List[RichTextContent]
	children: Optional[List[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, Callout, Quote]]] = None

class Database(BaseModel):
	type: Literal["database"]
	title: str
	icon: str
	is_inline: Optional[bool] = False
	schema: DatabaseSchema

class Page(BaseModel):
	type: Literal["page"]
	title: str

	children: List[Annotated[Union[Divider, TableOfContents, Heading, Paragraph, ListBlock, ToDoList, Toggle, ColumnList, Callout, Quote, Database, Page], Field(discriminator="type")]]

class OpenAIResponse(BaseModel):
	response: str
	blueprint: Page

	@model_validator(mode='after')
	def validate_children(cls, values):
    	if len(values.blueprint.children) <= 1:
        	raise ValueError("The root Page (blueprint) must have more than one child. Note: DO NOT JUST GENERATE A SINGULAR CALLOUT BOX IN A PAGE AS YOUR BLUEPRINT. THIS IS VERY IMPORTANT.")
    	return values

Page.update_forward_refs()
Toggle.update_forward_refs()
Column.update_forward_refs()
ColumnList.update_forward_refs()
Callout.update_forward_refs()
Quote.update_forward_refs()
```

Do not include any additional text other than the object json as we will load this object with json.loads() and pydantic. Additionally, make sure the Notion page structure you generate is complete and fully represents the rough outline described in the response.

[User] I'm an entrepreneur, and I want a Startup Data Room system in Notion we can share with investors. It should be highly detailed and comprehensive, aiming to convey EVERYTHING about our business.

[Assistant] {"response":"Absolutely, setting up a detailed and comprehensive Startup Data Room in Notion for your business sounds like a great way to support your funding process! This setup will cover everything investors might need to evaluate your startup thoroughly, here’s what that entails:\n\n1. Introduction: A callout with a brief sentence describing your company,\n\n1. Founding Team Database: A list of the core team members, highlighting their role at your company.\n\n2. Key Documents:\n    - Product: Detailed descriptions, technology stack, and intellectual property rights of your products.\n    - Business Model: Comprehensive views on your revenue streams, customer segments, and overall business strategies.\n    - Financial Information: Statements, projections, and historical financial performance.\n    - Market Analysis: Detailed market research and competitive analysis to show your understanding of the landscape and strategic positioning.\n    - Marketing & Sales: Your marketing strategies and sales pipelines, with a database containing key clients.\n    - Legal Documentation: Everything ranging from Incorporation papers and contracts and agreements to regulatory compliance.\n\nThis system will not only present your startup effectively but also enhance the confidence of potential investors by providing all necessary information in an organized and accessible format. Now to help you create your data room as efficiently as possible, I'll get you started by creating a template in Notion.","blueprint":{"type":"page","title":"Startup Data Room","icon":"💿","children":[{"type":"callout","icon":"📌","color":"blue_background","content":[{"text":"Acme is a leading force in the realm of digital transformation, blending creativity and technological prowess to revolutionize traditional business operations.","style":[]}]},{"type":"paragraph","content":[]},{"type":"database","title":"Founding Team","icon":"👔","is_inline":true,"schema":{"Name":{"type":"title"},"Role":{"type":"multi_select","options":[{"name":"CEO","color":"blue"},{"name":"CTO","color":"green"},{"name":"COO","color":"brown"},{"name":"Engineering","color":"default"},{"name":"Design","color":"pink"}]}}},{"type":"heading_1","text":"Key Documents"},{"type":"heading_2","text":"Product"},{"type":"divider"},{"type":"page","title":"Product Description","icon":"📘","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"page","title":"Technology Stack","icon":"💾","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"page","title":"Intellectual Property","icon":"🏦","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"heading_2","text":"Business Model"},{"type":"divider"},{"type":"page","title":"Revenue Model","icon":"📈","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"page","title":"Customer Segments","icon":"💵","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"heading_2","text":"Financial Information"},{"type":"divider"},{"type":"page","title":"Statements","icon":"📜","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"page","title":"Projections","icon":"📊","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]},{"type":"paragraph","content":[]}]},{"type":"page","title":"History","icon":"🗓","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"heading_2","text":"Market Analysis"},{"type":"divider"},{"type":"page","title":"Market Research","icon":"🌐","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"page","title":"Competitive Analysis","icon":"🎯","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"heading_2","text":"Marketing & Sales"},{"type":"divider"},{"type":"page","title":"Marketing Strategies","icon":"🗞","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"page","title":"Sales Strategies & Pipelines","icon":"💳","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]},{"type":"database","title":"Highlighted Clients","icon":"🥂","is_inline":true,"schema":{"Name":{"type":"title"},"Industry":{"type":"select","options":[{"name":"Agriculture","color":"orange"},{"name":"Energy","color":"purple"},{"name":"Healthcare","color":"blue"},{"name":"Security","color":"brown"},{"name":"Education","color":"yellow"},{"name":"Food delivery","color":"green"}]},"What they're doing":{"type":"rich_text"}}}]},{"type":"heading_2","text":"Legal Docs"},{"type":"divider"},{"type":"page","title":"Incorporation docs","icon":"📄","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"page","title":"Contracts & Agreements","icon":"🖋","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]},{"type":"page","title":"Regulatory Compliance","icon":"🏛","children":[{"type":"callout","icon":"💡","color":"yellow_background","content":[{"text":"Notion Tip:","style":["bold"]},{"text":" Add more details right in this page, including toggles, images, and more. Break up the page by using our different header options so that it’s easier to read.","style":[]}]}]}]}}