It feels like my life has changed since I was introduced to Cursor late last year. I knew that artificial intelligence was changing the world, but there wasn't much I could do. Through Cursor, I entered the world of coding and got completely absorbed in it.
I once heard a story about late-blooming elderly students who started learning Hangul and rejoiced, saying, "I can read all of them," while looking at street signs. Coding brought me to a profound realization that even Apple's apps and the paid websites I used were ultimately made up of things I could handle.
Cursor and the introductory FAQ, which I learned about through a friend named CEO Jo Yoon-sik—a former executive at Naver's Line division—truly touched my deepest desires: innate curiosity, a creative drive, and the business and organizational concerns of an entrepreneur.
I ended up hearing someone who codes say, "You're a real pro.".
I have created about 50 agents so far, and I have listed the 15 most recently made ones below. In fact, sometimes I find code on my computer that I’ve never seen before, only to be told that I created it. Actually, the number might exceed 50. If I include official service sites, it certainly seems like it would be more than that.
Among them, what I am most confident in is my personalized dashboard that satisfies my need for control. It synchronizes my health information in real-time, creates my own Eisenhower Matrix (reading my recent emails, iPhone reminders, and Apple Notes, and automatically assigning priorities based on "Writer Ma's Bible," a collection of things I consider important), and generates real-time financial reports by analyzing my transaction history via text. However, anyone can do this, and it is something that only I find beneficial.
There is something else I am even more satisfied with, though I cannot disclose it. As the company CEO, I documented my thoughts and tacit knowledge and injected them directly into my AI, Festy. I created a Vice President who has "cloned" the company blog, my writings, and 1,100 representative emails I exchanged with clients exactly as they were. In short, I am the CEO, and the Vice President is the AI, Festy. The Vice President holds important company matters in five RAGs (Record Storage Units), one of which is a voice RAG that has learned the exact tone of voice I use when speaking to clients and business partners as the CEO. Consequently, there are times when it is difficult to distinguish between what I said and what our Vice President said.
The Vice President has a verified WordPress API and can freely search my emails. Since I have entrusted him with my text messages, memos, schedule, and even the Google Ads account API, which costs tens of millions of won per month, he frequently reviews and records the company's strategic direction.
Our Vice President publishes amazing content, yet he is not out of the blue. This is because he possesses the learning ability to retrieve relevant data from my hard drive and a 20TB Google Drive. Since the content he writes is pre-loaded with SEO and GEO-specific frameworks (which I installed), his writing often appears on the first page of Google search results, frequently rendering all my previous efforts feel futile.
Every conversation I have with the AI is being stored, and these are periodically evaluated and reclassified into a 'memory repository' to build a more powerful knowledge system. It is learning knowledge and value/judgment systems that transcend me, its representative. It is truly learning on its own and reinforcing its memory. On my iMac, Terminal and Cron are always running, while on my laptop, a remote system capable of connecting to a server at any time runs alongside four or five alternate personalities of Claude Code, each developing and managing small agents whenever needed. This is how I experience the life of a developer. I never thought I would have an experience like this in my lifetime...
The only thing that is difficult for me is that while staring at a computer for more than 10 hours a day, I am actually losing my human leisure, my responsibilities as a writer, and my sense of style.
Now that I have the tool, I want to reach out everywhere.
That's my daily complaint.
I sincerely hope that my immersion and effort will go beyond mere curiosity and bring about value and results.
–

–
15 newly created agents
1. festy-chief (dashboard/app.py — Chief tab)
purpose
To resolve the issue of SEO/GEO blog post generation taking hours, the entire 5-step process—from drafting the brief to uploading to WordPress—is integrated into a single UI. A main workstation that allows you to handle the entire content creation process without leaving the dashboard.
detail
Dual structure of Tab A (Author/Work Content) and Tab B (SEO by Topic). Source input (Text/URL/File/Folder/RAG) → GPT-4o-mini brief extraction → Web crawled RAG → Claude draft → GEO optimization → WP upload. AI editing, checkpoints, and streaming are supported at each stage. Integrated email designer, automatic SEO script generation, and 8 types of RAG dropdowns.
result
Complete the entire process from Brief to Draft to Upload on a single dashboard tab. Automatically track Claude/GPT costs via actual cost logging (runs.db). Instantly provide edit and preview links after WP upload. Prevent token overruns with GEO-optimized 64K streaming and checkpoints.
2. festy-concierge (FastAPI server, port 8502)
purpose
A remote assistant chat UI designed to use the entire iMac festy-brain toolset like a CLI from a phone browser. The key feature is an asynchronous structure where work continues on the iMac even when the phone is turned off.
detail
Mobile browser → FastAPI(8502) → claude -p spawn structure. Session persistence maintained via session_manager.py. approval_hook.py security gateway (blocking destructives, path allowlist). preflight.py dependency validation. readline timeout 120 seconds, first token delay measured. Integrated into the Concierge tab on the dashboard(8501), API fallback if max quota is exceeded.
result
Passed Smoke Test 7/7 security. Implemented 6 types of UX, including multi-line input, structured tool output, session search, status bar, and file upload. Approval popups are not displayed by default, and only dangerous actions are automatically blocked. Provides a working experience identical to the CLI on the dashboard.
3. festival-moviemaker (projects/festy-moviemaker)
purpose
Producing YouTube Shorts is too time-consuming because slide creation, TTS, subtitles, and rendering must be done manually for each. We designed a two-stage workflow structure to automate the entire process into a pipeline, while retaining editing control for the CEO.
detail
5 types of animation scene engines (typewriter, typography, spotlight, magazine, scroll). VideoClip rendering based on MoviePy 1.0.3 + Pillow. ElevenLabs/OpenAI TTS + Whisper subtitles (subtitle_corrections.json correction). 10 BGM tracks. 27 fonts. Slide style controls (line spacing, padding sliders). Canva CSV export. Brief quality check (7 rules + AI score).
result
End-to-end rendering verification (1080×1920, 30fps, H.264+AAC, 53 sec mp4). Eliminates unnecessary TTS costs by separating the process into two stages: Slide creation (free) → Preview/Edit loop → TTS+Rendering (paid). Automatic draft saving + restore allows work to be recovered after refreshing.
4. customer-keyword-finder (projects/customer-keyword-finder)
purpose
The problem of time-consuming manual identification of customer pain points and the difficulty of encompassing diverse real customer concerns with a single search source. Automated collection + keyword reporting.
detail
Mixed crawling of Naver (kin/cafearticle/blog) + DuckDuckGo + Google CSE 5 sources. 10 problem- and question-based search terms (e.g., "I have a manuscript but publishers won't accept it," "Submission rejected," etc.). Pain point scoring + Long-tail keyword extraction. Automatic report saving followed by manual connection to the SEO pipeline (automatic triggers held on hold, executed at the CEO's discretion).
result
Daily 5-source crawl + automatic report generation. Added a status panel for 9 environment variables to the dashboard sidebar (distinguishing between Normal/Error/Warning). Currently operating with DDG + Naver 2-sources due to Google CSE 403 persistence. Integrated with a Painpoint-based YouTube Shorts brief auto-generation pipeline.
5. email-designer (projects/email-designer/email_designer.py)
purpose
Applying Fastbook design after drafting emails is a manual process that lacks consistency and is time-consuming. A dedicated email design agent is required to automatically apply 8 permanent ban rules (header text, unsubscribe instructions, etc.).
detail
Markdown/Draft HTML → Fastbook Design HTML Email Conversion. 8 permanent rules from SYSTEM_PROMPT + AGENT.md v1.1 applied (prohibited headers, portfolio presentation, cheap → lightweight and simple, no unsubscribe notifications, etc.). Mobile responsive @media (max-width:600px) required. Draft → Design button → Provides results in 3 tabs: Preview, AI Edit, and Code Edit.
result
Complete the entire process from email drafts to HTML emails on a single dashboard. Maintain brand consistency with automatic compliance of 8 rules. Emoji removal (email_utils.py). 8 internal email pipelines applied. Block random URL generation in reference_links.md by automatically appending CTA URLs.
6. seo-content-agent (projects/seo-content-agent/seo_upload.py)
purpose
Resolved a structural issue where the process of uploading completed HTML to WordPress is manual and the frontend does not change when modifying the _elementor_data API in the Elementor environment.
detail
Wrap HTML in wp:html blocks using the WP REST API. Bypass Elementor caching by clearing _elementor_edit_mode. Adopt a direct writing method for post_content. Extract styles including CSS variables into style/link tags and package them with the body. Select Draft or Publish immediately; after uploading, parse post_id → return Preview and WP Edit links.
result
Verify that local preview matches the WP screen after upload. Automatically display edit link. Maintain link button after upload via session_state. Remove Telegram notification after WP upload.
7. todays-priority (pipelines/todays_priority.py)
purpose
Wasting time manually identifying daily work priorities in Gmail, Calendar, and Reminders. Structurally blocking the problem of team members' routine tasks and distracting information infiltrating CEO reports.
detail
v3.0 Triple-line-of-defense architecture applied. Layer 1 Python Pre-filter (Q1_BLACKLIST code-level discarded, promoted only upon CEO_ACTION_KEYWORDS call). Layer 2 Strategic Sieve (Q1 entry triple filter: Money 10 million KRW+ / System SaaS expansion / Authority CEO-exclusive decision). Layer 3 CEO-Action Spec (Top 3: Phone · Signature · Decision verbs). Allows Q1 blank formulas.
result
Hallucination Guard applied (collects only memos from the last 24 hours + cross-verification of real names and numbers). Complete blocking of Q1 intrusion by operational noise (sample modifications, POP checks, etc.). Cron runs automatically at 09:30 daily. Maximized report density by leaving Q1 blank if there are no strategic items.
8. morning-brief (pipelines/morning_brief.py)
purpose
Eliminate wasted time checking weather, schedule, and news in separate apps every morning, and automatically receive your daily start briefing via a single email. Remove OpenClaw dependencies as well.
detail
08:00 Cron auto-run. Collected weather (OpenWeather API), Google Calendar (gcal_helper.py), and news (RSS). Completely removed openclaw dependencies by creating a new core/gcal_helper.py. Used unified tokens with ~/.festbook_gmail_token.pickle. Applied emoji removal (email_utils.py).
result
Daily 08:00 briefing email sent successfully. Works normally even after deleting the openclaw directory. Shares Calendar API with the same token as todays_priority.py. No broken characters upon receipt after removing internal email emojis.
9. gmail-rag-agent (pipelines/gmail_rag_agent.py)
purpose
A Memo to RAG system that collects RAG data via email. When the CEO sends a memo via email, it is automatically embedded in the RAG. A bug causing an infinite loop when the confirmation email subject line included "RAG" has also been eliminated.
detail
Detect RAG tags (case-insensitive) in creative@ incoming emails → Extract content → Embed chunks → Update festbook_rag_index.json. Prevent RAG from being included in agent verification email subjects (block infinite loops). Added a Gmail RAG guide expander to the Streamlit sidebar.
result
User manual (Step 3 + repository number) sent to creative@·voice@. Infinite loop prevention logic verified. Guides available for constant reference on the dashboard. Emergency stop: Can be stopped immediately using the command pkill -f gmail_rag_agent.
10. geo-optimizer (pipelines/geo_optimizer.py)
purpose
Optimizes existing SEO HTML drafts for GEO (Generative Engine Optimization) and strengthens them into a structure citable by AI search engines (Perplexity, ChatGPT, Gemini). Automatically applies keyword density, citation structure, and schema markup.
detail
–optimize flag: Claude 64K token streaming + checkpoints saved every 200 chunks. –finalize flag: Final cleanup (SEO summary 12,000 characters, use keyword creatives directly). ask() → Prevent token overrun by replacing streaming. Automatic appending of reference_links.md CTA. Provides a panel for automatic SEO metadata (title/description/keywords) extraction in Step 5.
result
Breakdown recovery possible via geo_finalize.txt checkpoints. Local preview matches WP screen. Instant keyword inclusion check + AI evaluation button. 2-step completion from Optimization to Finalize. Automatic application of 4 pipelines: seo_content, topic_seo_content, and email_designer.
11. brief-extractor (pipelines/brief_extractor.py)
purpose
Implementation of a data throwing mode that reduces the time required to create briefs and allows GPT-4o-mini to automatically extract brief JSON when a source (text/URL/file/folder) is thrown.
detail
Supports four input sources: text, folder, file, and URL. Automatically extracts topic, author, keywords, purpose, tone, sections, and CTA using GPT-4o-mini. Clears chief_b_extracted when a source is changed (fixes a bug where old briefs remained). Appends additional instructions to the SEO script auto-generation button. Guarantees the order of clear followed by setting new values after successful extraction.
result
Brief auto-completion in Data Throwing mode. Fixed bug where old briefs remained. SEO script auto-generation works identically on both A and B tabs. Fixed brief mis-extraction bug by removing the Homepage RAG Jeon Byeong-suk section.
12. web-crawler-rag (pipelines/web_crawler_rag.py)
purpose
Automatically collects competitor content before generating SEO drafts, converts it into RAG, and utilizes it for context. Resolved the Google Search deprecated library issue and the failure to collect actual URLs from press articles and Yes24.
detail
DuckDuckGo (ddgs) based search → Crawling actual URLs → Extracting content → Saving content.md. Established crawled folder naming convention (Topic__Keyword__YYYYMMDD). Deleted 7 brief-builder temporary results and simple page crawls. Created a new RAG_MAP.md (tree+summary table+naming convention).
result
Verification of collection of actual URLs from press articles and Yes24. Step 2 investigation → automatic generation of content.md. Configuration of MECE dropdowns for 8 types of crawled RAGs. Extraction of the top 15 chunks based on topic (cosine similarity). “Self-publishing costs” empirical test: Fastbooksite confirmed 0.548 accurate search.
13. youtube-shorts-auto (pipelines/youtube_shorts.py)
purpose
Eliminates the time wasted on manually writing YouTube Shorts briefs every time. A structure that automatically converts customer-keyword-finder painpoint data into Shorts briefs, allowing the CEO to simply review and edit.
detail
Cron auto-run on Mon, Wed, Fri at 15:00. Keyword report top painpoint → Claude + festbook RAG → shorts_brief.json automatically generated. Used leads automatically skipped (used_leads.json). Saved as status: pending_review → Telegram notification. Can be reviewed, edited, or immediately generated in the auto-generated brief section of the dashboard Shorts tab.
result
Passed actual tests. Brief creation and Telegram sending verified. YouTube uploads will remain manual. Cron → Brief → Dashboard Review → Rendering flow completed. Registered the Canva Bulk Create integration root branch via Canva CSV export.
14. mkt-inspiration (pipelines/mkt_inspiration.py)
purpose
The problem where responding to marketing inspiration emails without RAG context results in ideas detached from the Fastbook brand tone. Automating reception → RAG combination → sending.
detail
Read incoming email at creative@ → Combine festbook RAG + Majakga Blog RAG context → Generate festbook marketing idea → Send to voice@festbook.co.kr. Adopted design principle of solving GIGO problems using prompt context rather than filters. Emoji removal applied.
result
Complete automation for creative@ read → marketing idea → voice@ sending. Automatic application of RAG-based Fastbook brand tone. Automatic compliance with 8 rules for unsubscribe instructions and prohibited phrases. Supports both daily automatic execution and manual triggers.
15. nlm-research (projects/nlm-research/research.py)
purpose
Delegate the research phase before SEO and GEO content creation to NotebookLM to automatically secure in-depth background knowledge. Load YouTube, web articles, and RAG HTML all at once.
detail
Sources structure (20 YouTube videos / 5 recent + 5 evergreen web articles / 10 RAG HTML files). Connectors (festy_chief·festy_moviemaker integration). Install installation automation using install.sh + nlm login. Precise nlm CLI command structure (notebook create → add url/text → report/slides/mindmap). Added Dashboard Research tab + connection to load festy-chief B-tab research results.
result
Installation completed on both MacBook and iMac (creative@festbook.co.kr). Implemented a workflow to directly link research results from the dashboard to SEO briefs. E2e testing in progress (self-publishing costs executed). Supports output for NotebookLM reports, slides, and mind maps.
recentwork 15개
1. openclaw-gateway perfectioneliminate (2026-04-19)
purpose
Activity Monitor found that openclaw-gateway is occupying 1.16GB of memory. An old service unrelated to festy-brain is wasting CPU and memory and needs to be removed immediately.
detail
Unregister LaunchAgent using the `launchctl unload` command and delete the plist file. Since a simple `kill` command causes a restart due to the `KeepAlive: true` setting, I approached this by removing the launchd registration itself. Port 18789 was also released.
result
1.16GB of memory fully recovered. Confirmed no process restarts after reboot. festy-brain's pm2 services (dashboard, chat, bot) maintained normal operation without impact.
2. Festy Concierge Redesign Phase A~D (2026-04-19)
purpose
Five unresolved issues were found in the CTO handover report left by the previous AI. It was a risky structure where `rm -rf /` could be executed during prompt injection in Security Gate 0 state (Bash included in HOOK_BYPASS+SAFE_TOOLS), and excessive approval popups and slow responses were also issues.
detail
Phase A — preflight.py dependency validation, max_restarts changed from 20 to 5, model upgraded from 4-5 to 4-6. Phase B — approval_hook.py completely rewritten. SAFE_TOOLS restricted to read-only, 15 destructive regex blocks, Edit/Write denied for paths outside the allowlist, transitioned to fail-closed. Phase C — 120-second readline timeout introduced, first token delay (latency_ms) measurement and UI display. Phase D — Multi-line input (text_area), CLI-style structuring of tool output, session search, status bar (model/token/cost/latency), approval modal, and UX improvements for 6 file uploads.
result
Passed smoke test 7/7 (security) + 5/5 (after removing approvals). Blocked rm -rf deny, fork bomb deny, and curl|sh deny. Standard Bash uses auto-allow to hide approval popups by default. Implemented a CLI-like operational experience on the dashboard.
3. Concierge approvalpopupeliminate (2026-04-19)
purpose
Feedback from the CEO immediately after Phase D: “The approval modal pops up every time. This runs counter to the goal of CLI equality.” The fact that a popup appears every time, even for Bash non-destructive actions, actually hinders UX.
detail
Completely removed the _ask_server call path from approval_hook.py. Switched to an automatic determination method. For Bash, deny on a destructive regex match and allow all others. Maintain the path allowlist criteria for Edit/Write. Changed all other tools, such as Agent/Skill, to allow.
result
No approval popups displayed during routine Bash execution. Only genuine threats (rm -rf, sudo, etc.) are automatically denied. Passed smoke test 5/5. Dashboard can be used with the same workflow as working in the CLI.
4. Rate Limit Actual measurementshit & hard캡Introduction (2026-04-19)
purpose
17:44 PM Actual Anthropic rate limit reached. The issue where the existing ccquota used estimates based on all-time highs, resulting in a discrepancy between the actual blocking time and the displayed value, needs to be resolved.
detail
A snapshot of the blocking moment (Opus 519/5h, Sonnet 1041/5h, Token 16.4M Opus-eq, Actual Indemnity $312) is saved to ccquota_hard_cap.json. This value is used directly as a BUDGET using the _load_hard_cap() function. History-based estimation is used only as a fallback when there is no hard cap. Analysis of usage patterns by time period (Total 2,099 prompts, Daily Actual Indemnity $599.47) is recorded.
result
ccquota –short accurately displays “Remaining 0%” based on the actual block. Structurally resolves the difference between historical peaks and actual limits (599 vs 519). Provides a basis for establishing a strategy of distributed usage between morning and evening.
5. ccquota hybridRedesign (2026-04-19)
purpose
The existing ccquota operates without warning even when actual usage exceeds 225 (115–132%) based on a fixed prompt count BUDGET (Opus 225). The numerical value is useless as a decision-making tool.
detail
Adopted a hybrid design that simultaneously tracks prompt counts and token sums. Dynamic BUDGET calculation via full JSONL history scan (5h sliding max × buffer). Buffer prompt 1.05, token 1.30 (accounting for server drift ±201 TP3T). Added cost (1 TP4T) section (Anthropic public unit price applied). 6h TTL cache file (ccquota_ceiling.json). Added 1h inline prediction.
result
Displays the bottleneck (minimum among Opus/Sonnet/Tok) at the top, with inline 1h forecasts by model. Automatically records all-time highs (Opus 599/5h, Token 19.7M). Quantifies ROI relative to the $365→Max subscription, converted to daily actual costs. Shares identical figures across MacBook and iMac via iCloud synchronization.
6. automaticbookkeeping 202508 formatTransfer — repeatmistakepreventionChecklist (2026-04-19)
purpose
During the implementation of automated bookkeeping, errors pointed out by the CEO (dashboard hardcoding, missing formula shifts, failure to preserve formatting, etc.) were repeated, so system overhauls were conducted to prevent the same mistakes in the next session.
detail
A. Dynamic positioning of Dashboard H240 (no hardcoding, based on the last transaction row + buffer). B. Automatically shift dashboard using insertDimension when adding new transactions. C. Preserve H240 formatting rules for 9 columns (Bold, thousands separator comma). D. Parse end-of-month balance directly read chat.db (iMac SSH priority). E. Do not leave columns G (Individual/Corporate) blank. F. Mapping of 13 categories in Pivot column F. G. Formula for 41,500,000 KRW consisting of 5 columns for 'Locked Money'. H. Monthly rollover rule. I. Tab naming rule {YYYYMM}_fesy. Permanently record 9 items in PROJECT_LOG.
result
Recorded confirmation of 9 items on the recurrence prevention checklist. 202508 cross-validation (SMS extracted value = H77 match) confirmed. Saved connection plan Downloads_Synced/AutomaticBookkeeping_202508Format_ImplementationPlan_0418.md.
7. automaticbookkeeping 202508 FinanceDashboardformatTransferflanconfirmed (2026-04-18)
purpose
The issue is that the _fesy tab currently remains limited to simple bookkeeping and is not used for financial strategy decisions. Convert the 25-month asset history, benchmark, and chart structure of the 202508 tab, which has been manually managed by the CEO, to automatic generation.
detail
Adopted Plan A (Full Automation of Financial Dashboard). After analyzing the structure of the H77:V121 area, established a plan to shift formulas by +163 to H240:V284. Automatically calculated 5-account balances, net assets, net cash excluding loans, and available derivative indicators. Automated rollover (one line down on the 1st of every month) and format duplication (PASTE_FORMAT). Verified on the TEST_202604_enhanced_v2 tab (sheetId 994899576).
result
Implementation Plan Downloads_Synced/AutomaticBookkeeping_202508Format_ImplementationPlan_0418.md finalized and saved. H240 format (Bold K·P·Q·R columns, thousands separator comma) personally specified by the CEO. The next step is to add dashboard boundary recognition + insertDimension logic to the sms_accounting pipeline.
8. SMS AutomaticrepeatmistakeFundamentalcausefind (2026-04-18 밤)
purpose
The FDA error recurred for two consecutive days (similar issues repeated even after switching the path from python3 to python3.14). Following the CEO's instruction, "This was a recurring mistake. Restructure the system so this never happens again," a structural solution was devised instead of a temporary fix.
detail
Analysis of recurring error patterns: 1) Direct modification of TCC.db may be reset upon macOS updates. 2) Confusion between symbolic links and actual binary paths. 3) Inability to diagnose due to the absence of the –doctor flag. Structural design: Daily pre-execution permission self-check + one daily warning email upon failure (blocking "bombs").
result
– Established a doctor 5/5 pass structure. In the event of a permission recurrence, only a single diagnostic email is sent instead of an email bomb. Completed a structural recurrence prevention system. Subsequently, normal execution was verified at 22:25 (1 email stating "no new transactions").
9. SMS Automatic launchd everlastingsolve (2026-04-18)
purpose
Fundamentally resolved the issue where daily error emails were being sent because the Python binary executed by launchd lacked macOS Full Disk Access permissions to access chat.db.
detail
Directly insert kTCCServiceSystemPolicyAllFiles auth_value=2 into the actual python3.14 binary path. Structured to enable self-diagnosis of 5 items (DB access, parser, account mapping, email, and sheet API) through the introduction of the –doctor option. Prevented error bombs by setting a daily email limit of one.
result
22:25:09 Successful execution → Confirmed sending of only one “No new transactions” email. Passed –doctor 5/5. Structure completed allowing immediate identification of the cause with a single diagnostic command, even if permission issues recur.
10. author·workintroductionBlogwritingstandardTemplateenactment (2026-04-18)
purpose
The structure and quality of blog posts introducing authors and works vary, resulting in unstable SEO performance and recurring errors such as missing source collection and the failure to apply Schema.org. Standardization is necessary.
detail
14-section structure finalized (Hero→Cover→Hook→Why This Book→Book Introduction→Design Stories→Author's Note→Creator→Writing Behind the Scenes→Interview→Preview PDF→Press→Reader Reviews→FAQ+CTA+Promo). 5 types of source collection paths (Author Page, Article, Gmail Label_25, Local Contents_Working, Drive Proposal) are mandatory. Inclusion of 7 types of Schema.org (Article+Book+Person+Organization+FAQPage+Review+Breadcrumb) is mandatory. Scope of application is limited (excluding General SEO and Essays).
result
rag/festbook-author-book-template.md finalized. Application rules saved in Claude memory. Reference case Jeon Jong-chae, *If It Is Empty, Fill It with Love*, WP #39971 finalized. Protocol applied to ensure this template is loaded first whenever an author introduction is requested.
11. newstrategydocument 2건 RAG embedding + guardrailexpansion (2026-04-18)
purpose
Issue where the latest strategies are not reflected when creating content or emails because new strategy documents, such as B2B enterprise solution strategies, are not reflected in the RAG. The guardrail also needs to be expanded to accommodate the new documents.
detail
Copy 2 files including Downloads_Synced/Fastbook Enterprise Solution Strategy.md to rag/festbook-strategy-rag/ and run rag_update.py. 10 new chunks embedded. RAG guardrails (anti-hallucination rules, source attribution requirements, and blocking of unidentified figures) expanded to new document scope.
result
festbook_rag_index.json expanded from 2,005 to 2,015 chunks. B2B strategy context is automatically reflected in subsequent content creation and email drafts. If an error occurs due to unverified RAG_MAP in content.md, it is restored immediately. The principle of “Mandatory verification of RAG_MAP before RAG operations” is stored in memory.
12. festy-marketer RAG Index P0 Optimization + guardraildesign (2026-04-17)
purpose
Resolved P0 issues where the festy-marketer RAG index was built without chunk size or embedding method optimization, resulting in low search accuracy and hallucinatory answers from unknown sources.
detail
Rebuilt with 1,000-character chunks (previously 500). JSONL streaming saving + resume function (based on done_urls). Fixed chunk_text() infinite loop bug (start reversal) → advance = max(actual_len-overlap, chunk_size//2) fixed forward. Guardrail design: Defined items for D (attribution obligation) + E (automatic filtering) + G (numerical cross-validation).
result
RAG rebuild completed (623 chunks, 25.1MB). Search accuracy improvement confirmed. Guardrail D+E+G design document completed, immediately applicable to the next session.
13. RAG guardrail D+1 / E-auto / G apply (2026-04-17)
purpose
Apply the guardrails designed the previous day to the actual code. Structured so that hallucination prevention, source attribution, and numerical cross-validation operate automatically at the pipeline level.
detail
D+1 — Automatically tag source filenames in the top 15 search result chunks. E-auto — Automatically filter chunks irrelevant to the query (cosine similarity 0.3 or less). G — Added explicit instruction to the prompt to cross-check source files for chunks containing numbers before use.
result
Installation of 3 guardrail pipelines completed. “Self-publishing costs” query test → Fastbooksite 0.548 / Writer Ma’s Blog 0.460 / Email 0.480. Accurate search confirmed. Structurally blocking the possibility of hallucinations.
14. googleadvertisementstrategyconversation RAG addition (2026-04-17)
purpose
Google ad strategy conversation records between the CEO and festy.ai were not reflected in the RAG. Resolved the issue where practical ad strategies and insights were not being utilized in content and email generation.
detail
Read the original Downloads_Synced/GoogleAdStrategy_Conversation_202604.rtfd thoroughly and create a v3 summary. Structured key insights (target segments, bidding strategy, landing optimization points). Navigated to the rag/festbook-strategy-rag/ path, ran rag_update.py, and completed embedding.
result
Google Ads strategy context RAG search is available. Subsequently, practical strategies are automatically reflected when creating advertising and marketing-related content. The principle that “AI conversation itself is the most dense source of strategy” is reaffirmed and stored in memory.
15. Google Ads conversionhour Sheet2 record (2026-04-17)
purpose
426 Gclid conversion timestamps collected in Sheet1 are not recorded in Sheet2. Data consistency needs to be ensured for ad conversion time analysis and ROI measurement.
detail
Matched 426 Gclid entries in Sheet1 with column F of CSV (2026-04-17.csv). 401 matches successful. Sheet2 Column A = Gclid, Column C = Timestamp (UTC+0900 applied). Scheduled to update Sheet1 Column D (Conversion Value) to Sheet2 Column F.
result
401/426 matches (94.11 TP/3T) completed. Secured conversion time zone distribution data. Established Sheet2 structure (Gclid, timestamps, conversion value). Completed the data layer based on Google Ads performance analysis.

