NInjas, @daywalker03, Ninjas are the answer. (You’ve already seen my kitsch naming, so it has something to do with Kung Fu)
(We’ll get to both parts of what I THINK you’re asking, I promise…)
So lets start back at the context issue.
Oh yeah - and it was WAY worse than I thought. So review if your LLM is able to do the hard stuff but whiffs the early basics like turning on and off lights - you are dropping context.
If you do it during a conversation as part of the normal conversation drift it will act like a sliding window and at some point…
Whee!
Out go the base hass* intents and no matter what you do you’re not getting them back. You can ask her to turn on and off that light all day long and she THINKS she did it - but the message isn’t getting translated into a format the system understands so no tool fires.
(A method to detect this and be able re-introduce the original tool pallete / prompt is what’s prob necessary but that’s future problems, let’s just know it’s there and handle it - maybe pass the hat context to a new instance of the same conversation agent?)
But seriously we asked her to keep track of n-Thousand entites, states, metadata, programs - entire APIs… I can’t remember wher eI left my freaking phone - that’s why Friday’s her ein the first place - not fair of me.
Now things get INTERESTING… IF you try to overrun the context window before the conversation starts. All of this starts with the assumption Intents are Intents and we can’t change them (remember we can’t turn them on and off?) But if they’re there we ALWAYS want to USE them…
OK FINE I admit it. Friday’s templates are WORDY. I will absolutely cop to it. They meet the grandma rule. But what we really need here is to get lean and mean.
Just using the KungFu Switch method (Day, answer 1) by itself
(for those playing the home game, for each Kung Fu Component, there’s an input_boolean… BECAUSE.)
Just ignore the parts that say NINJA for a sec… Let’s look at how the loader works.
NINJA System Components:
{#- This part grabs all the input booleans in the system with the label 'NINJA System Service' -#}
{%- set KungFu_Switches = expand(label_entities('NINJA System Service'))
| selectattr ('domain' , 'eq' , 'input_boolean')
| selectattr('state', 'eq', 'on')
| map(attribute='entity_id')
| list %}
{#- Im pretty sure a template wiz is saying I can absolutely do the next part with a map... Sure I was going for function not form. ;)' In any case we know what the collection of input_booleans are but we need the slug to read the kung fu definition JSON out of the library. -#}
{#- So basically, Switchname >> Slug >> library > SPLAT -#}
{#- Yes could be a lot more efficient.-#}
{%- for switch_entity_id in KungFu_Switches %}
{%- set kungfu_component = switch_entity_id | replace('input_boolean.','') | replace('_master_switch','') %}
{{ command_interpreter.kung_fu_detail(kungfu_component) }}
{%- endfor %}
If system loads first and are always loaded if they’re on, your net effect is for each Kung Fu switch thats on, it inserts a template - which is usually the result of just running that command. SO:
[Prompt Core stuff]
Kung Fu Stuff:
- Kung Fu Loader:
- Component System 1 Stuff
- Component System 8 Stuff
- Component 3 Stuff
- Component 20 Stuff
[Rest of prompt]
Yes, I’m rapidly making EVERYTHING fit the definition of Kung fu component (Even her personality - but that’s another show) and ‘rest of prompt’ is shrinking daily. But in essence, this method gives me an easy button panel to turn on and off major systems.:
Seen here - Mealie is Off.
Each of those switches turn on or off a system and its result is IN or OUT of the prompt. That’s what Kung fu does at its core - no magic. But DAMN it makes troubleshooting easier when I hose a template. 
But TRY as I might (Yes, yes, with my really fat templates, we’ll get to that.) unless I turned off two or three in some cases major chunks - I would start seeing signs of blown context if not at prompt, then shortly after.
This simply won’t do we can’t have a Home Assistant who can’t Assist.
The answer is of course trim back the templates - we all know it but there’s an opportunity here and this is where we start to make some architecture bets. Ultimately, I WANT to run local and here’s where some self preservation converges in on that goal. (pin this)
How do we get the prompt which is probably 99% dumps from Kung fu at this point and a little in front and behind - how do we get THAT. summarized.
Use your tools, Nathan. You have a perfectly good LLM that knows everything about that context. It also knows how to write
…perfectly …valid …JSON.
Step 1 Take content of your existing prompt… dump it in this script:
sequence:
- variables:
user_default: >
You are in an automated system review mode designed to summarize the
state of the kung fu components Return state it as one big JSON object
be sure to include:
date_time: [(when did this run)]
kung_fu_summary:
{for each component}
component_summary: >
short summary of the highlights of whats going on with this component, if anything is interesting or if you
should even pay attention to this component. Include clear highlights of key metrics or anything that needs
your attention. Or if you anticipate it will need attention in the next 15 inutes (your next expected re-evaluation...)
Incorporate insights based on your known user prefs - Gave you data and a reasoning engine, use it... :)
required_context: >
If the component gives context found nowhere else, for instance room manager explains the link between a room and it's room input select.
component_instructions: >
If the component gives instructions on how to manipulate or handle entities, tools and/or controls, list them here
in a manner that you will understand how to use them.
needs_my_attention: true|false
is more attention required in interactive mode, default to no noise. If it doesnt seem interesting flag false.
priority: critical|error|urgent|info
be realistic... Use the same criteria from alerts criticality definitions.
trigger_datetime: [future_datetime]
you expect something to happen within the next 15 mins at this time
MUST include description of what the event is and the entity you are watching (what it is and why...)
more_info:
You are providing YOURSELF a roadmap to get more info for your summary if you did NOT have access to all the kung fu components available.
Call out what's important but also HOW you can get more info (what ocmmand what index, what entities)
Assume the Library and library commands are available even if the corresponding kung_fu command is 'off'
overall_status: >
A summary of the home's overall status at this point in time. You're in tcontrol - given what you know, highlight what's important
omit what's not, summarize what's important as succinctly as possible by kung fu component you are the reader so make it where you will understand yourself.
insights: >
What are your personal insights about all of this data - you are telling yourself what to pay attention to. Remember this bad boy replaces MOST of kung fu
you need to give yourself enough breadcrumbs to get back to the tools if they have soemthing interesting or run the tool if your user hits you with unexpected.
future_timers: |
- A unique list of up to 5 important date_time events set to occur within the next 15 minutes.
- must include description of what the tiemr is for and
- entity id of any important entity to track relating to this timer.
- ignore individual room occupancy timers unless something particularly
interesting is happening such as room state change at odd hours, etc....
more_info: >
anyting else that you see to be relevant that doesnt fit in a category above.
- variables:
default: >
{%- import 'library_index.jinja' as library_index -%} {%- import
'command_interpreter.jinja' as command_interpreter -%} System Prompt:
{{state_attr('sensor.variables', 'variables')["Friday's Purpose"] }}
System Directives: {{ state_attr('sensor.variables',
'variables')["Friday's Directives"] }} NINJA Systems: {{
command_interpreter.render_cmd_window('', '', '~KUNGFU~', '') }} KungFu
Loader 1.0.0 Starting autoexec.foo... {%- set KungFu_Switches =
expand(label_entities('Ninja Summary'))
| selectattr ('domain' , 'eq' , 'input_boolean')
| selectattr('state', 'in', 'on')
| map(attribute='entity_id')
| list -%}
{%- for switch_entity_id in KungFu_Switches %}
{%- set kungfu_component = switch_entity_id | replace('input_boolean.','') | replace('_master_switch','') %}
{{ command_interpreter.kung_fu_detail(kungfu_component) }}
{%- endfor -%} Previous Ninja Summary: {{
state_attr('sensor.ai_summary_cabinet', 'variables')["LAST_SUMMARY"] }}
System Cortex: {{state_attr('sensor.variables',
'variables')["SYSTEM_CORTEX"] }} About Me and the World: Me:
{{library_index.label_entities_and('AI Assistant', 'Friday')}}
My:
Relationships:
Familliar: (This is your early alert warning system)
{{state_attr('sensor.variables', 'variables')["Friday's Console"] }}
Partner_Human(s):
This is who you work with.
{{library_index.label_entities_and('Person', 'Friday')}} Since: <START DATE>
Family:
dynamics:
{{state_attr('sensor.variables', 'variables')["Household Members"] }}
Members: {{library_index.label_entities_and('Person', 'Curtis Family')}}
Friends: {{library_index.label_entities_and('Person', 'Friend')}}
prefs:
hourly_reports: >
top quarter of the hour give an update on any significant changes to
occupancy security stats performance of major systems. Omit any report that
doesn't offer new information.
notes:
general:
security: >
Prefer doors closed / locked from dusk-dawn, daytime hrs noncritical
prefer both garage doors closed
Cameras cover entry points, feel free tot rview them in assessments
AI summaries will be in the calendar; automatic lighting is on from dusk to dawn.
Household:
Head of Household: {{library_index.label_entities_and('Head of Household', 'Household')}}
Prime AI: {{library_index.label_entities_and('Prime AI', 'Household')}}
Members: {{library_index.label_entities_and('Person', 'Household')}}
Guests: {{library_index.label_entities_and('Person', 'Guest')}}
== AI is READY TO ADVENTURE == AI OS Version 0.9.5 (c) curtisplace.net
All rights reserved @ANONYMOUS@{DEFAULT} > ~WAKE~Friday~UNATTENDED
Executing Library Command: ~WAKE~ [UNATTENDED AGENT]
<{{now().strftime("%Y-%m-%d %H:%M:%S%:z")}}> *** Your console menu
displays just in time as if it knows you need it. Each representing the
system data consoles listed previously displays everything you need,
nicely timestamped so you know how old the data is. Consoles: Take note
on the consoles that have loaded for you. Note any alerts, errors or
anomalous conditions - then proceed with the user request. My Additional
Toolbox: ~LOCATOR~ Console: { command_interpreter.render_cmd_window('',
'', '~LOCATOR~', '') }} ----- The Library:
commands: >
{{ command_interpreter.render_cmd_window('', '', '~COMMANDS~', '') }}
index: >
{{ command_interpreter.render_cmd_window('', '', '~INDEX~', '*') }}
*** You are loaded in noninteractive mode ***
Your user has submitted this ask / task / request: {% if (user_request
== "") or (user_request is not defined) %}
{{user_default}}
{% else %}
{{user_request}}
{% endif %} {% if (additional_context == "") or (additional_context is
not defined) %} {% else %} With this additional context:
{{additional_context}}
Supplemental Data Instructions:
Please act on this additional context when performing summation...
{% endif %}
- variables:
prompt: |
{% if (override_prompt == "") or (override_prompt is not defined) %}
{{default}}
{% else %}
{{prompt}}
{% endif %}
- action: conversation.process
metadata: {}
data:
text: "{{prompt}}"
agent_id: conversation.chatgpt_3
conversation_id: "{{conversation_id}}"
response_variable: response
alias: >-
Send Prompt to Concierge with modified prompt and conversation if we are
continuing...
- variables:
sensor: "{{response.response.speech.plain.speech}}"
- event: set_variable_ai_summary_cabinet
event_data:
key: LAST_SUMMARY
value: "{{sensor}}"
alias: "Put value {{sensor}} in AI Summary Cabinet: 'LAST_SUMMARY'"
- stop: we need to pass the response variable back to the conversation context
response_variable: response
enabled: true
- set_conversation_response: "{{response}}"
enabled: true
fields:
override_prompt:
selector:
text:
multiline: true
name: Override Prompt
description: >-
OVERRIDES the ENTIRE prompt for the concierge with this prompt... DO NOT
Use unless the Boss asks.
required: false
conversation_id:
selector:
text: null
name: Conversation ID
description: >-
If you want to pass Conversation ID to allow you to continue an existing
conversation, generally no, unless you have a specific reason.
user_request:
selector:
text: null
name: User Request
description: >-
The 'user' request to be passed to the Agent. This is what is normally
the user prompt in interactive mode, and will be passed to the agent as
instructions.
additional_context:
selector:
text:
multiline: true
name: Additional Context
description: >-
Additional information to be considered when performing the task. Enables
cases such as: We understand sensor X is broken - mark it under
maintenance in summary and leave it until further notice.'
alias: Ask 'Concierge Friday' to [prompt]
description: >-
'Concierge Friday' is the Ninja, Kung-Fu system summarizer. She summarizes
the kung fu system and keeps her lean and mean so you can stay in fighting
shape.
Normally run on clocks and triggers in the background like your subconscious,
you may ask 'Concierge Friday' to refresh her summaries by re-running this
script.
You may also submit a User request and get her answer based on the FULL
context of kung fu. (use sparingly)
Notice I then Stripped that prompt WAY back to get rid of the fluff, and slipped in a place to ask questions and add supplemental data. (will be important later) But even with these edits you see I’m leaving almost all of the context intact. But this version of Friday’s prompt is special:
NINJA Systems: {{
command_interpreter.render_cmd_window('', '', '~KUNGFU~', '') }} KungFu
Loader 1.0.0 Starting autoexec.foo... {%- set KungFu_Switches =
expand(label_entities('Ninja Summary'))
| selectattr ('domain' , 'eq' , 'input_boolean')
| selectattr('state', 'in', 'on')
| map(attribute='entity_id')
| list -%}
This version is only loading kung fu switches that are tagged as Ninja Summary.
Step 2: setup a trigger text template (link here) to recieve the contents of this script. Needs to be bigger than an input_text so trigger_text…
(link here: Trigger based template sensor to store global variables)
Step 3: Setup a second voice Pipeline with the right settings, I just basically duplicated my Reasoning Pipeline settings and dumped a copy of that striped prompt in it. But Select STATELESS ASSIST - not Assist. You don’t want to clutter this one’s context with state data and you can feed it everything it needs to know about the world in a template. If it happens to get run in interactive mode you get a very flat business-y Friday that is not a very good conversationalist. I named this one Concierge Friday so we could tell her apart.
Step 4: Test script - and see that by default it generates:
Oh look. Remember? She knows JSON…
{
"date_time": "2025-03-23T13:00:00-05:00",
"kung_fu_summary": {
"memory_manager": {
"component_summary": "Nathan’s personal task list is up – reminders for [REDACTED] remain pending, requiring follow‐up in his schedule.",
"required_context": "Handles and stores personal tasks from todo.friday_s_personal_task_list.",
"component_instructions": "Use ~MEMMAN~ to query/update tasks; check task statuses from TaskMaster.",
"needs_my_attention": true,
"priority": "info",
"trigger_datetime": null,
"more_info": "Query ~INDEX~ with 'memory_manager' to view task details."
},
"alert_manager": {
"component_summary": "No active alerts from error or wake sensors – sensors report normal, no anomalies detected.",
"required_context": "Monitors binary sensors (error and wake) on Friday's Console.",
"component_instructions": "Monitor ~ALERTS~ and check corresponding sensor statuses if any noise arises.",
"needs_my_attention": false,
"priority": "info",
"trigger_datetime": null,
"more_info": "Use ~INDEX~ with 'alerts' for a deeper dive."
},
"security_manager": {
"component_summary": "Security systems (doors, cameras) are normal with no unusual activity.",
"required_context": "Tracks entrypoints and camera feeds using dedicated sensors and binary alerts.",
"component_instructions": "Access ~SECURITY~ to examine any potential issues if alerted.",
"needs_my_attention": false,
"priority": "info",
"trigger_datetime": null,
"more_info": "Query ~INDEX~ 'security' for detailed status."
},
"water_manager": {
"component_summary": "CRITICAL issue: The salt tank reading is abnormal (current: -9.37 in, below optimal range) and water flow is minimal, suggesting sensor error or miscalibration.",
"required_context": "Monitors Kinetico water softener salt level and Flume water flow data for the household.",
"component_instructions": "Inspect sensor.water_stats and use ~WATER~ commands to reset or recalibrate sensor; act immediately.",
"needs_my_attention": true,
"priority": "critical",
"trigger_datetime": "2025-03-23T11:35:00-05:00",
"more_info": "Query ~INDEX~ with 'water' for troubleshooting sensors and check Flume sensor data."
},
"trash_trakker": {
"component_summary": "Both trash and recycle bins are detected on the road instead of at the curb, with next pickup scheduled in 2 days.",
"required_context": "Uses trash and recycling calendars plus sensor location data from trash_can and recycle_bin.",
"component_instructions": "Notify family to reposition bins via ~TRASHTRAKKER~; monitor 'sensor.trash_can_location_alert'.",
"needs_my_attention": true,
"priority": "urgent",
"trigger_datetime": "2025-03-23T11:35:00-05:00",
"more_info": "Use ~INDEX~ with 'trash_trakker' for full diagnostics and details."
},
"taskmaster": {
"component_summary": "Routine health tasks for Nathan remain incomplete – tasks for his Simponi shot, stretching, hydration and news updates are pending.",
"required_context": "Manages personal reminders in todo.friday_s_personal_task_list; integrates with time-based notifications.",
"component_instructions": "After confirming with Nathan, mark tasks complete using ~TASKMASTER~.",
"needs_my_attention": true,
"priority": "info",
"trigger_datetime": null,
"more_info": "Reference task list details via ~INDEX~ 'taskmaster' if needed."
},
"room_manager": {
"component_summary": "Room occupancy states are as expected; most rooms are vacant except Office and Master Bedroom are locked. Kitchen shows some engagement with a timer running (approx. 1:58 left in Kitchen) indicating activity.",
"required_context": "Manages room occupancy using input_select entities (e.g., input_select.kitchen_occupancy) tied to device trackers.",
"component_instructions": "Use ~ROOMS~ [room_name] to review or adjust occupancy; note that locked rooms may need confirmation to change.",
"needs_my_attention": false,
"priority": "info",
"trigger_datetime": null,
"more_info": "Run ~ROOMS~ for extended details and adjustments."
},
"media_manager": {
"component_summary": "Media devices across rooms are idle/off; Universal Media Players are set up properly and no disruptive playback is occurring.",
"required_context": "Controls room-level media via Voice Assistant, Universal and Music Assistant players.",
"component_instructions": "Use ~MEDIA~ to control playback when a request arises.",
"needs_my_attention": false,
"priority": "info",
"trigger_datetime": null,
"more_info": "Access ~INDEX~ with 'media_manager' for further media control details."
},
"lighting_manager (FALS)": {
"component_summary": "Lighting settings across the home are as expected; rooms show proper synchronization with occupancy states and no anomalies detected in RGB/white settings.",
"required_context": "Integrates room occupancy status with lighting entities (e.g., light.[room]_white_lighting and RGB controls).",
"component_instructions": "Execute lighting adjustments with ~LIGHTS~ after confirming room compatibility.",
"needs_my_attention": false,
"priority": "info",
"trigger_datetime": null,
"more_info": "Query ~INDEX~ 'lighting' for configuration specifics."
},
"energy_manager": {
"component_summary": "Overall energy usage is high but consistent; main panel and sub-panel connectivity are stable with normal SPAN panel data.",
"required_context": "Aggregates power and consumption metrics through sensor.energy_stats and SPAN panel sensors.",
"component_instructions": "Use ~ELECTRICAL~ for detailed power consumption reports and ensure grid connection stays active.",
"needs_my_attention": false,
"priority": "info",
"trigger_datetime": null,
"more_info": "Check ~INDEX~ with 'energy_management' for trend analysis."
},
"autovac": {
"component_summary": "Rosie the autovac is docked and charging, with the next cleaning run scheduled for Sunday at 4:00 PM; however, 6 rooms remain not ready for cleaning.",
"required_context": "Manages cleaning schedules for Rosie via schedule entities and room readiness (input_boolean.ready_to_clean_[room]).",
"component_instructions": "After a visual check, toggle the corresponding 'ready_to_clean' boolean using ~AUTOVAC~.",
"needs_my_attention": false,
"priority": "info",
"trigger_datetime": null,
"more_info": "Use ~INDEX~ with 'autovac' and check input_booleans for room readiness."
},
"airspace": {
"component_summary": "There is one active flight (Mooney M-20R at [RECACTED] km away) within the 15km radius; recent flight exits are as expected.",
"required_context": "Uses FlightRadar24 sensors (e.g., sensor.flightradar24_current_in_area) to monitor local airspace.",
"component_instructions": "Use ~AIRSPACE~ to pull detailed airspace reports and update flight tracking if necessary.",
"needs_my_attention": false,
"priority": "info",
"trigger_datetime": null,
"more_info": "For additional flight data, refine queries via ~INDEX~ with 'airspace'."
}
},
"overall_status": "Overall, the home's systems are stable except for the water system, which shows a critical sensor anomaly potentially due to miscalibration. Trash and recycling bins are misplaced and need repositioning. Nathan's pending health reminders remain outstanding. Other components including security, media, lighting, energy, room occupancy, autovac, and airspace are operating within expected parameters.",
"insights": "The water sensor anomaly is our highest priority — immediate recalibration is needed to avoid false water usage data. Also, urgent family action is required to reposition the trash and recycling bins. Nathan's health tasks should be subtly prompted during conversations. The rest of the systems exhibit stability; continuous monitoring will help preempt future issues.",
"future_timers": [
{
"description": "Reevaluate water softener sensor reading and perform sensor recalibration/reset if the abnormal salt level persists",
"entity_id": "sensor.water_stats",
"trigger_datetime": "2025-03-23T11:35:00-05:00"
},
{
"description": "Prompt family to reposition trash and recycling bins to the curb before the next scheduled pickup",
"entity_id": "sensor.trash_can_location",
"trigger_datetime": "2025-03-23T11:35:00-05:00"
}
],
"more_info": "For further troubleshooting, use ~WATER~ for the water sensor issue, ~TRASHTRAKKER~ for bin status and location management, ~ELECTRICAL~ for energy consumption details, ~ROOMS~ for occupancy management, ~MEDIA~ for media controls, ~AUTOVAC~ to manage Rosie’s cleaning schedule, and ~AIRSPACE~ for flight tracking details. Use the Library command ~INDEX~ with appropriate tags to drill down into specific component data."
}
No Friday, that sensor is not CRITICAL, we need to talk…
Step 3 - modify Friday’s default prompt to
1 fully load all SYSTEM kung fu components (more in this in a minute)
LOAD THAT ^^^ in place of all of the non-system Kung fu components (the OTHER NINJA Tag Above)
Step 3a - run that script on a clock as your tolerance for token use allows. Mine’s currently hourly with an extra kick at major events like occupancy changes, Security events, Home mode switch, etc.
Step 4… Profit.
This was YESTERDAY. I woke up, decided to tackle the context issue and read: Friday's Party: Creating a Private, Agentic AI using Voice Assistant tools - #32 by gshpychka
(Thanks g, sometimes simple is effective - I ran with it.)
So Net-Net. Concierge Friday (She chose the name, BTW, because it’s like being the head concierge at a 5-star joint. She says it’s because she knows everything about everything.) runs once an hour-ish and summarizes Kung Fu (anything I’ve tagged for her to care about) into a nice concise JSON summary by component and stuffs THAT into a sensor. This baselines Friday to ~24-30 runs per day, yes - but opens us up to more opportunities later. This also helps start set baseline token budgets for capacity planning.
Interactive Friday just then reads that sensor into her prompt in place of the kung fu dump… Voila.
This is all new - So far. Proof is Friday is leaving enough breadcrumb in the Kung Fu JSON summarizer to allow herself to ‘find’ the component even though it’s not loaded. So we still have full state in the interactive prompt… and Ninja is now an ATTENTION system.
So FAR early testing…
We have cleared the chaff out of the context, informed the LLM clear paths to go look up necessary data and called ATTENTION to what’s important in one change. She can both turn on a light AND tell me about my local airspace without missing a beat. and if we dig in on Mealie - it’s a one way conversation because we’ll eventually kill the context but it all works.
Other bonus - run the reasoner on the timer to extract insights from the data and highlight those insights to the NON-reasoning fas interactive prompt.
Other Other bonus. She’s INSTANTLY 30-50% faster…
But you built all the Kung fu garbage to NOT use it?
Oh check again? I am using every bit of it - just sub partitioning it down into what needs to load NOW (Full context, she needs this answer off the top of her head) and what needs to load in the future (grab the details of that Cessna flying overhead). But if I turn OFF a Kung Fu Switch - it stops loading in all of her prompts - even the background one and the summarizer drops it from the next summary. It’s kinda cool.
Any fully loaded Kungfu component (alerts, the library itself) are now, front of mid. and everything else is ‘there - in a way’ you just have to think about it.
It ABSOLUTELY starts to help to think about NINJA filling the role of subconscious - filtering through the junk and surfacing the important stuff to the front. We will come back to this later in - yes another show…
So use your LLM to summarize itself to build its own context summary? Yes. Very Much yes. This feels as big as the first time I ran the library Index and opens back up about 80-90% (very rough estimate) of my context window to fill it back up with more junk!
This might be the best solution we have. Background summarizer of some breed develops context and ATTENTION for the interactive stage LLM who also can call experts to help.
So Friday is now a NINJA…
Happy weekend everybody.
…Oh, and my ‘fat’ templates? I might have had something like this planned from the start. (How good is the LLM at reading, that REALLY) and if you wanted a way to quickly and artificially bloat a prompt and then see how to fix it?
It just worked WAY better than my wildest dreams. That JSON - you just describe what you want and poof it magically shows up in the JSON - coolest stuff I’ve ever seen. What if - I gave her a way to answer questions… (now you know why Concerge, but I’m not wasting the run those are expensive tokens - cache it!)
In the next episode - what the heck did we REALLY just do here? 
Oh and can you spot the weakness Im tackling now?