app: description: '' icon: 🤖 icon_background: '#FFEAD5' icon_type: emoji mode: workflow name: School news use_icon_as_answer_icon: false dependencies: - current_identifier: null type: marketplace value: marketplace_plugin_unique_identifier: langgenius/openai:1.0.5@51583313a5988d5dca405063831ffeeacdc1f2e95f32a8c10b4c281ceef39ebb version: null - current_identifier: null type: marketplace value: marketplace_plugin_unique_identifier: langgenius/tongyi:0.2.22@9cea96ffc7977f536c02999c80ff1283b1819aab9b6fa2fdf789d0c6c7d03715 version: null kind: app version: 0.7.0 workflow: conversation_variables: [] environment_variables: [] features: file_upload: allowed_file_extensions: - .JPG - .JPEG - .PNG - .GIF - .WEBP - .SVG allowed_file_types: - image allowed_file_upload_methods: - local_file - remote_url enabled: false fileUploadConfig: attachment_image_file_size_limit: 2 audio_file_size_limit: 50 batch_count_limit: 5 file_size_limit: 15 file_upload_limit: 50 image_file_batch_limit: 10 image_file_size_limit: 10 knowledge_file_size_limit: 50 single_chunk_attachment_limit: 10 skill_file_size_limit: 50 video_file_size_limit: 100 workflow_file_upload_limit: 10 image: enabled: false number_limits: 3 transfer_methods: - local_file - remote_url number_limits: 3 opening_statement: '' retriever_resource: enabled: true sensitive_word_avoidance: enabled: false speech_to_text: enabled: false suggested_questions: [] suggested_questions_after_answer: enabled: false text_to_speech: enabled: false language: '' voice: '' graph: edges: - data: isInIteration: false isInLoop: false sourceType: start targetType: knowledge-retrieval id: 1789970877464--1789971129095-target source: '1789970877464' sourceHandle: source target: '1789971129095' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: knowledge-retrieval targetType: llm id: 1789971129095--1789971168021-target source: '1789971129095' sourceHandle: source target: '1789971168021' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: llm targetType: llm id: 1789971168021--1789971306805-target source: '1789971168021' sourceHandle: source target: '1789971306805' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: llm targetType: llm id: 1789971306805--1789971527769-target source: '1789971306805' sourceHandle: source target: '1789971527769' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: llm targetType: llm id: 1789971527769--1789974076229-target source: '1789971527769' sourceHandle: '' target: '1789974076229' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: llm targetType: code id: 1789974076229--1789974245797-target source: '1789974076229' sourceHandle: '' target: '1789974245797' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: code targetType: if-else id: 1789974245797--1789974430545-target source: '1789974245797' sourceHandle: '' target: '1789974430545' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: if-else targetType: end id: 1789974430545-true-1789974474578-target source: '1789974430545' sourceHandle: 'true' target: '1789974474578' targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: if-else targetType: end id: 1789974430545-false-1789974564321-target source: '1789974430545' sourceHandle: 'false' target: '1789974564321' targetHandle: target type: custom zIndex: 0 nodes: - data: selected: false title: User Input type: start variables: - default: '' hint: '' label: What has happened or is going to happen? (who, what, where, when) options: [] placeholder: '' required: true type: paragraph variable: core_message - default: '' hint: '' label: 'For which class or year group? (or: whole school)' options: [] placeholder: '' required: true type: text-input variable: year_group - hint: '' label: Which tone fits this message? options: - informative - celebratory - urgent placeholder: '' required: true type: select variable: tone height: 160 id: '1789970877464' position: x: 80 y: 282 positionAbsolute: x: 80 y: 282 selected: false sourcePosition: right targetPosition: left type: custom width: 242 zIndex: 0 - data: dataset_ids: - oTycHUKIxz5h9TqTOxYZojCNnbtTICvzVXxyCqucL8j6opdim+1j1Pa/ejwe91Qg multiple_retrieval_config: reranking_enable: true reranking_mode: reranking_model reranking_model: model: qwen3-rerank provider: langgenius/tongyi/tongyi top_k: 4 query_attachment_selector: [] query_variable_selector: - '1789970877464' - core_message retrieval_mode: multiple selected: false title: Knowledge Retrieval type: knowledge-retrieval height: 89 id: '1789971129095' position: x: 382 y: 282 positionAbsolute: x: 382 y: 282 selected: false sourcePosition: right targetPosition: left type: custom width: 242 zIndex: 0 - data: context: enabled: true variable_selector: - '1789971129095' - result model: completion_params: {} mode: chat name: gpt-5-mini provider: langgenius/openai/openai prompt_template: - id: 8cfee75c-0407-46b1-bcec-b19c6bb59459 role: system text: 'Start your answer with the line WEBSITE followed by an empty line. You write for Example College, a secondary school. Write a news item for the website of at most 200 words. The headline is an active sentence of at most eight words, without an exclamation mark. The first paragraph answers who, what, where and when. End with a next step or a way to get in touch. Stick strictly to the style guide below: reading level B1, formal address for parents, words to avoid, names and photos of students. Adapt to the chosen tone. Invent no facts. If something is missing, write [FILL IN]. Style guide: {{#context#}} Year group: {{#1789970877464.year_group#}} Tone: {{#1789970877464.tone#}} Core message: {{#1789970877464.core_message#}}' selected: false title: Website type: llm vision: enabled: false height: 87 id: '1789971168021' position: x: 684 y: 282 positionAbsolute: x: 684 y: 282 selected: false sourcePosition: right targetPosition: left type: custom width: 242 zIndex: 0 - data: context: enabled: true variable_selector: - '1789971129095' - result model: completion_params: {} mode: chat name: gpt-5-mini provider: langgenius/openai/openai prompt_template: - id: 6d05c2e0-dfe6-4cd7-8cb8-f527927ed86e role: system text: 'Start your answer with the line PARENT APP followed by an empty line. You write for Example College, a secondary school. Write a message for the parent app of at most 80 words: parents read this on their phone. One message, one date, one action; no introduction and no headline. Address parents formally. Stick strictly to the style guide below. Adapt to the chosen tone. Invent no facts. If something is missing, write [FILL IN]. Style guide: {{#context#}} Year group: {{#1789970877464.year_group#}} Tone: {{#1789970877464.tone#}} Core message: {{#1789970877464.core_message#}}' selected: false title: Parent app type: llm vision: enabled: false height: 87 id: '1789971306805' position: x: 986 y: 282 positionAbsolute: x: 986 y: 282 selected: false sourcePosition: right targetPosition: left type: custom width: 242 zIndex: 0 - data: context: enabled: true variable_selector: - '1789971129095' - result model: completion_params: {} mode: chat name: gpt-5-mini provider: langgenius/openai/openai prompt_template: - id: e86f1562-baba-4d04-b3f8-f47f4348b803 role: system text: 'Start your answer with the line SOCIAL followed by an empty line. You write for Example College, a secondary school. Write a post for the school''s social media (Instagram and LinkedIn) of at most 60 words. Warm and concrete, no hype. End with at most three hashtags, always including #ExampleCollege. No names of students and no reference to recognisable photos of students. Stick to the style guide below. Adapt to the chosen tone. Invent no facts. If something is missing, write [FILL IN]. Style guide: {{#context#}} Year group: {{#1789970877464.year_group#}} Tone: {{#1789970877464.tone#}} Core message: {{#1789970877464.core_message#}}' selected: false title: Social type: llm vision: enabled: false height: 87 id: '1789971527769' position: x: 1288 y: 282 positionAbsolute: x: 1288 y: 282 selected: false sourcePosition: right targetPosition: left type: custom width: 242 zIndex: 0 - data: context: enabled: true variable_selector: - '1789971129095' - result model: completion_params: {} mode: chat name: gpt-5-mini provider: langgenius/openai/openai prompt_template: - id: 46332227-30db-4baf-a45f-59440772a731 role: system text: 'You are the checker of Example College. Below is a draft message for the parent app. Assess it on these points from the style guide: at most 80 words; parents are addressed formally; one message, one date and one action; no abbreviations and no words from the list of words to avoid; no names of students; reading level B1 (short sentences, everyday words). Work in two steps. Step 1: briefly name what is wrong (or write: nothing). Step 2: give the improved version. Invent no facts; what is not in the draft stays [FILL IN]. Do not remove facts, dates or times that are in the draft; a deadline for signing up belongs to the action and stays. Do not change digits into words. As your answer give ONLY the improved text, without step 1, without a heading and without explanation. If the draft is already good, return it unchanged. Style guide: {{#context#}} Draft message: {{#1789971306805.text#}}' selected: false title: Checker type: llm vision: enabled: false height: 87 id: '1789974076229' position: x: 1590 y: 282 positionAbsolute: x: 1590 y: 282 selected: false sourcePosition: right targetPosition: left type: custom width: 242 - data: code: "def main(website: str, parent_app: str, social: str) -> dict:\n \ \ reasons = []\n forbidden = [\"by means of\", \"with regard to\", \"\ asap\", \"w.r.t.\", \"kindly\", \"parent(s)/carer(s)\", \"utilise\"]\n \ \ texts = ((\"website\", website, 230), (\"parent app\", parent_app, 90),\ \ (\"social\", social, 70))\n for name, text, maximum in texts:\n \ \ count = len(text.split())\n if count > maximum:\n \ \ reasons.append(f\"{name}: {count} words, maximum {maximum}\")\n \ \ if \"[FILL IN]\" in text:\n reasons.append(f\"{name}: contains\ \ [FILL IN], information is missing\")\n for word in forbidden:\n\ \ if word in text.lower():\n reasons.append(f\"\ {name}: contains the word to avoid '{word.strip()}'\")\n if \"#examplecollege\"\ \ not in social.lower():\n reasons.append(\"social: #ExampleCollege\ \ is missing\")\n return {\n \"ok\": 0 if reasons else 1,\n \ \ \"reasons\": \"\\n\".join(reasons) if reasons else \"All rules satisfied.\"\ ,\n }\n" code_language: python3 outputs: ok: children: null type: number reasons: children: null type: string selected: false title: Gatekeeper type: code variables: - value_selector: - '1789971168021' - text value_type: string variable: website - value_selector: - '1789974076229' - text value_type: string variable: parent_app - value_selector: - '1789971527769' - text value_type: string variable: social height: 51 id: '1789974245797' position: x: 1892 y: 282 positionAbsolute: x: 1892 y: 282 selected: false sourcePosition: right targetPosition: left type: custom width: 242 - data: cases: - case_id: 'true' conditions: - comparison_operator: '=' id: 905ee344-fc66-4bfd-91d0-773aa3a8ffe4 value: '1' varType: number variable_selector: - '1789974245797' - ok logical_operator: and selected: false title: IF/ELSE type: if-else height: 123 id: '1789974430545' position: x: 2194 y: 282 positionAbsolute: x: 2194 y: 282 selected: false sourcePosition: right targetPosition: left type: custom width: 242 - data: outputs: - value_selector: - '1789971168021' - text value_type: string variable: website - value_selector: - '1789974076229' - text value_type: string variable: parent_app - value_selector: - '1789971527769' - text value_type: string variable: social selected: false title: Approved type: end height: 140 id: '1789974474578' position: x: 2496 y: 282 positionAbsolute: x: 2496 y: 282 selected: false sourcePosition: right targetPosition: left type: custom width: 242 - data: outputs: - value_selector: - '1789974245797' - reasons value_type: string variable: rejected_because - value_selector: - '1789971168021' - text value_type: string variable: draft_website - value_selector: - '1789974076229' - text value_type: string variable: draft_parent_app - value_selector: - '1789971527769' - text value_type: string variable: draft_social selected: false title: To the communications officer type: end height: 166 id: '1789974564321' position: x: 2496 y: 461 positionAbsolute: x: 2496 y: 461 selected: false sourcePosition: right targetPosition: left type: custom width: 242 viewport: x: -679.6126274026951 y: 109.12408509473971 zoom: 0.4152130788699637 rag_pipeline_variables: []