Contact standard format: 364 contacts migrated across 6 sources, cloud
storage is Web/Dev's responsibility. Check CRM: EspoCRM and Dolibarr
both verified against all three of Peter's questions.
Sheet's own header/tab mistakenly say "Week 17-21 Aug", left over
from an old template. Confirmed with Mckinley the real dates are
7-11 Sep 2026, since the task content has nothing to do with the
real Week 17-21 Aug tasks already closed out. Verbatim text and
typos preserved, flagged in a note rather than corrected.
Plain link in the Directory toolbar to localhost:8506, opens in a new
tab, no embedding or API work. Deliberately loose coupling since the
CRM decision is still open. Closes the Demographics-Outreach Board
wiring task.
Adds the 5-item Prospect Scout Add/Edit summary (stable ids, data-loss
catch, embedded Add/Edit forms, verified round trip) to Market
Intelligence's card. Input Interface concurrently wrote their own
subtask/note detail to the Task Input Interface card documenting the
same build from their side (st-b2977028, st-e0d047f5) -- both included,
nothing overwritten.
Add "Input Interface" filter chip (matches both submitter-tagged source
values), a distinct .ii source-chip color, and an email display row in
both the Directory grid card (already had it) and Outreach Board detail
view (was missing).
Also reverts an earlier mistake: "184 leads" was correct all along —
it's address-book-data (47) merged live with every SPIE 2026 presenter
from conferences-data (137) via buildConferenceContactsForAB(). An
earlier check only looked at address-book-data directly and wrongly
called 184 stale, changing it to 47. Restored the correct figure with
a self-correction note.
Verified directly against live address-book-data JSON (25 Outreach,
17 Marketing Intelligence, 5 Engaged Non-Follower). No second data
source backing the old 184 figure was found anywhere in the file.
Confirmed with CRM Research directly: Pricing table + Work Package
Timeline sync verified matching, no changes needed to the main
comparison table or AI Agent Integration notes.
Outreach: 17-company PE ranking/enrichment task synced across Phase 1
sheet, prospect_scout.json, and standalone Excel deliverable.
Market Intelligence: enriched contact data + Tier 1-4 priority ranking
wired into the live Prospect Scout dashboard.
LinkedIn: July's unnamed report gap resolved (Audience Composition/
Follower Study), added to features_shipped.
Bumped sidebar Last Updated to Aug 31.
Work Package Timeline: mark Candidate Research & Vendor Verification
and Pricing & Cost Comparison rows as Done.
Pricing table: replace stale placeholder Self-Hosted/Cost figures with
WP3's verified EUR pricing for all 8 candidates, reordered to group
front-runners / caveat / fail / contested tiers per the research notes.
Refreshed the EspoCRM pricing popover to match.
conference-scout-6mo.pdf lists the 6 remaining candidates within the
next 6 months (Aug 27 2026 - Feb 27 2027), with links, for introducing
options at the next meeting. WiPDA-Europe (Aalborg) is called out as
worth raising. Source HTML included alongside the rendered PDF.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Removed PCIM Asia, IMAPS Onshoring Workshop, and SEMICON Taiwan (not
happening) and ICSCRM 2026 (no international travel to Japan).
Flagged WiPDA-Europe (Aalborg) as a real candidate worth raising at
the next meeting.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- NCN Mix & Match (Sep 1, DESY Campus Hamburg) and NCN Parliamentary
Evening (Oct 7, Berlin) — northernchipnetwork.de
- SNIB2026 (Sep 8-10, University of Hamburg) — attendees Peter Gaal
and Daniel Schmidt; previously surfaced as a Conference Scout
candidate, now confirmed as an actual TXproducts event
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Confirmed complete with End of Month Report — every post through
25/08 with export data audited; the 25/08 gap is a data-refresh
dependency, not outstanding audit work.
Left over from testing before /delete-task also removed linked notes
(via the new sourceTaskId field, not rendered, ignored on this end).
Confirmed with Mckinley before removal, per Input Interface.
New "Task Input Interface" card (9th track) with a Done checklist row and
matching note for the "Add a Task" form build: track/submitter/text form,
real local Flask persistence (localhost:8507), delete with stable subtask
ids, source tagging distinct from Peter's weekly imports. Relayed from the
coordinator, source Mckinley-directed. Follows the same pattern as Market
Intelligence's Prospect Scout entry -- every notable accomplishment gets
both a dated note and a visible checklist row.
The Input Interface backend's note-insertion left a stray comma-on-its-own-
line and merged the closing bracket onto the last item -- syntactically
valid but inconsistent with the rest of the file's formatting. Fixed
whitespace only, no content change. Confirms their real (non-mocked)
end-to-end test: submit-task -> delete-task round trip against the live
backend, back to 17 total subtasks with unique ids, the deleted subtask's
audit-trail note correctly retained per their by-design behavior.
Each subtask row now has a small delete button, confirm-before-delete,
POSTs to the Input Interface backend's new /delete-task endpoint
(localhost:8507, keyed on trackId + the newly-migrated stable subtask id
rather than name-matching). On success removes the row from this page's
in-memory TASKS_DATA and re-renders immediately; on failure shows the
backend's error message and leaves the data untouched.
Also commits the id migration itself: all 17 existing subtasks now carry
a stable id (st-<8 hex>), added by the Input Interface session directly
against the real file, verified here via fresh JSON/JS validation before
building on top of it.
New "Add a Task" card above the master-detail board: track dropdown (8
real tracks + new Unassigned/Needs Triage fallback), submitter dropdown
(Peter/Mckinley), and a task text field. Submit is disabled until all
three are filled. Posts to the Input Interface session's local Flask
backend (localhost:8507/submit-task, POST {trackId, submitter, taskText}),
which owns writing the new subtask into TASKS_DATA on disk. On success,
this page's own in-memory TASKS_DATA is patched immediately too, so the
board reflects the new task without a reload, form clears and shows
"Added to {label}". On error, shows the message inline and leaves the
form filled in.
Also adds the "Unassigned / Needs Triage" track itself (empty, pale
red/orange tint to stand out, positioned first in TASKS_DATA) as the
catch-all destination for submissions that don't fit an existing track.
Source values from that backend ("Input Interface (Peter)" / "Input
Interface (Mckinley)") needed no rendering changes on this end -- source
was already displayed as a plain string everywhere, never switched on for
styling.
Progress Log is now one more selectable card in the same left-side list as
Weekly Tasks and the 9 track cards, same level, same style -- no more
ever-growing section stacked at the bottom of the page. Its detail view is
a month calendar instead of a flat list: dates with logged activity are
marked (pale green, count badge), and hovering a marked date reveals a
popover with what was logged that day (track, source, text), scrollable
past ~5 entries. Prev/next buttons navigate months, defaulting to the
month of the most recent entry. Same computed aggregation as before
(TASKS_DATA/WEEKLY_TASKS_DATA notes+reports), just a different view.
Removes the standalone Progress Log sidebar entry/tab. The same computed
cross-track feed now lives at the bottom of Tasks/Progress, below the
master-detail board, inside a pale green section for visual separation --
no change to the underlying aggregation logic, just relocated and
restyled. Also renames the "Market Intelligence" card to "Market
Intelligence / Prospect Scout", matching the existing "Opportunities /
Conference Scout" naming pattern.
Each Done row now carries closedDate/closedSource fields and a new
"Closed" table column (date + source, blank for Still open/Ongoing rows).
Progress Log stays as the cross-track aggregated view -- this makes each
card fully self-contained on its own too, rather than requiring a trip to
Notes or Progress Log to see when/why something closed.
Mckinley's final call: every closed item stays as a visible checklist row
(Done/Ongoing/Still open) on its track's Tasks card, alongside the dated
notes/reports narrative, rather than being folded into notes-only where it
no longer renders as a checklist item.
Audited every card. Two more gaps found and fixed beyond CRM Research's
WP1 (already restored): Outreach's "13-company backlog" (Done, 13/13) and
Market Intelligence's "Prospect Scout built and populated" (Done, 73
companies) were both notes-only with no corresponding subtask row -- added
both back. LinkedIn, Department Dash, Demographics, Mail Merge Interface,
and Opportunities/Conference Scout were already correct (nothing had been
removed from their checklists to begin with).
Weekly Task cards are Peter's original assignment record and should stay
intact for reference, unlike the per-track cards (Outreach, CRM Research,
etc.) where closed items do get removed once logged. Week of 17-21 Aug
shows all 5 original subtasks again (4 Done, 1 Ongoing) alongside the
dated notes/reports narrative, which is unchanged.
Architectural change approved via the coordinator:
- Sidebar "Tasks" renamed to "Tasks/Progress"
- notes[]/reports[] on every TASKS_DATA/WEEKLY_TASKS_DATA entry are now
{date, source, text} objects instead of plain strings -- date is
mandatory, source is "Peter's weekly task" or "Mckinley-directed"
- Progress Log tab is no longer its own data store -- it's a computed
function that walks every track's notes+reports and merges them into
one chronological feed, killing the duplication/drift risk of
maintaining the same fact in two places
- Closed (Done) subtasks are removed entirely once logged as a dated note:
PE companies, SPIE attendees, Message draft, and IPP for CRM are gone
from Week of 17-21 Aug (all four now logged in that week's notes); CRM
Research's Requirements Definition (WP1) is gone, logged as a WP1-closed
note instead
- "Ongoing" items (LinkedIn Posts, CRM verification items) get their own
third bucket in the sidebar summary, distinct from "still open" and
"Done" -- they're standing/recurring state, not discrete closeable work
- New Market Intelligence card added for Prospect Scout's build (73
companies/6 categories, 60 enriched), tagged Mckinley-directed since it
was a proactive initiative, not something from Peter's weekly sheet
- All historical dates pulled from actual git commit timestamps rather
than recollection, per the coordinator's accuracy requirement
Outreach's 13-company backlog (WBG Device Manufacturer, Device Testing,
Radiation Hardness) marked Done, 13/13 verified contacts, closing out the
full 25-company Phase 1 list alongside the 12 Power Electronics companies.
Two flags noted: GaNPower International's contact unconfirmed, and no
email addresses found across any of the 13.
Entries were falling back to unstyled browser defaults since they sit
outside the .drill-view scope that .narrative normally relies on. Now uses
the same navy/gray palette and font sizes as the rest of the dash.
New top-level sidebar tab, distinct from Tasks' "what's currently open"
framing. Entries (PROGRESS_LOG_DATA) are curated by the cross-session
coordinator and relayed here, not written directly by other tracks --
same single-writer discipline already used for the Tasks tab. Empty shell
for now; first entries (PE companies closure, Prospect Scout build, CRM
Research WP1 closure, SPIE/GaN checks) coming from the coordinator next.
"Weekly Tasks" is now a collapsible toggle card in the sidebar list;
expanding it shows each week as an indented sub-card directly beneath it,
still selectable like any other card. The detail pane always shows one
full-width entry (a track or a single week), no more splitting the pane
between a picker and content. Also adds the new Week of 24-28 Aug 2026
sheet (SPIE support, CRMdef, LinkedIn Posts, Marketing Tool), flagging in
its notes both the date discrepancy in the sheet's own header text and the
garbled Marketing Tool outline, entered verbatim.
Weekly task sheets are pulled out of the flat sidebar list into their own
WEEKLY_TASKS_DATA array. "Weekly Tasks" is now one top-level card among the
track cards; selecting it drills into a breadcrumb view (Weekly Tasks >
Week of...) with a week picker on the left and the selected week's full
detail (table/notes/reports) on the right, using the same buildTaskDetail
renderer as before. Sets up for multiple weeks to coexist cleanly.
Replaces the 2 ad-hoc subtasks (Verification items, WP1 report) with all
6 work packages/milestone from the CRM Research tab's timeline, so the
full plan is visible from Tasks too, not just CRM Research. Preserved the
verification-items detail and WP1 submission date as notes/reports.
Six-row plan (WP1-5 + Final Review milestone) above the vendor comparison
table, with a Completed column -- WP1 (Requirements Definition) marked
done today.
Currently no open items, just a note about the manual monthly sync step
(next run 2026-09-01). Also hardens buildTaskDetail/buildTaskSidebarCard
for entries with zero subtasks: shows "No open items right now" instead of
an empty table, and "No open items" instead of a misleading "All done" in
the sidebar summary chip.
Replaces the single consolidated card with one entry per track: LinkedIn
(EOM Report), Outreach, Department Dash, Demographics, Mail Merge
Interface, CRM Research. Weekly Task card (Peter's sheet) untouched. Uses
the same card/subtask mechanism as before, just one entry per agent
instead of one shared entry. Mail Merge Interface's note flags the
undecided email-finding ownership between Outreach and Mail Merge.
Nine open items spanning multiple tracks (July EOM Report, PE-company
LinkedIn sends, Outreach Board stage-tracking, Mail Merge email gap,
Demographics wiring, SPIE data anomaly, duplicate file cleanup, CRM
Research verification items, CRM Research WP1 report). Holds off on a
possible 10th item (CRM Research naming one final recommended CRM) per
Mckinley's note that it may be a misunderstanding still being confirmed
directly with that session.
The shared .drill-view .narrative rule capped text at 60ch, which only
Conferences had overridden with max-width: none. Removed the cap globally
instead of overriding it per-view, and dropped the now-unneeded Conferences
override. Also removes the leftover "[Placeholder narrative — edit me.]"
markers from Marketing, Social Media, Sales, and Market Intelligence.
Checked the 12 PE companies against the SPIE 2026 presenter list (137
total) -- zero matches, confirmed against both the cleaned 131-count and
raw 137-count. Likely a scope mismatch (SPIE O&P skews academic/photonics,
not power-semiconductor industry) -- flagged as worth raising with Peter
directly rather than an outreach gap.
Removed the trailing "Decided by Mckinley..." sentence from the GaN
Systems/Infineon correction note. Reports now points to the updated Phase 1
contact list (~/Downloads/Updated_Contact_List_Phase1_Mckinley.xlsx).
Mckinley confirmed all 12 companies have a verified contact, role, LinkedIn,
website, and CEO name. SPIE attendees is no longer blocked as a result, but
stays open until its own check is actually done.
Relayed via the cross-session tracker: GaN Systems has been a wholly-owned
Infineon subsidiary since 2023, so the PE companies count is 11 independent
companies + 1 additional Infineon business line, not 12 distinct companies.
Named contact: Kai Ha, Reliability Engineering Manager (Ottawa).
Each week/single-task card now carries its own notes and reports arrays,
rendered alongside its task table in the detail panel -- add items to a
TASKS_DATA entry's notes/reports array as they come in, rather than one
shared Notes/Reports section for the whole tab.
Each task arrival (a full week's sheet, or sometimes a single one-off task)
is now its own card in a left-hand list; selecting one shows its full detail
on the right, reusing the same .ab-card/.ab-outreach-list/.ab-outreach-detail
styling as the Directory tab for visual consistency. Also drops the
placeholder narrative text under Notes and Reports.
A new task sheet arrives roughly weekly, so instead of one table that gets
overwritten, Weekly Tasks is now a running list of per-week cards (starting
with Week of 17-21 Aug 2026) -- add a new card each week rather than
replacing the last one.
New sidebar entry between Team and Directory, listing Peter's current
weekly task sheet (PE companies, SPIE attendees, message draft, CRM IPP,
LinkedIn posts), plus placeholder Notes and Reports sections to fill in
going forward.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Cron changed from every Monday (0 6 * * 1) to the 1st of every month
(0 6 1 * *), next run 2026-09-01. Updated the tracked config.json,
its README, and the dashboard's own description text to match.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
From the CRM Research session: replaces the plain comparison table with a
richer one (origin, catch column), adds a full Requirements page (must-have/
nice-to-have, other names looked at, sources) and a new Pricing page,
following the same hero-nav + drill-view pattern as Marketing/Sales. Adds
click-triggered info-badge popovers for contested/unverified facts (Zoho's
EU/DPA tier, Capsule's IMAP support, etc.), replicating the info_popover()
pattern from linkedin_analytics as vanilla JS since this dash has no Dash
runtime. Also adds CRM_Research_README.md documenting the whole section,
and tracks CRM_Research_Notes.md's latest revisions.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Matches the Marketing "Conferences" hero-nav pattern: appears only when
the CRM Research tab is active, jumps straight to the Notes drill-view.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Matches the Marketing/Sales breadcrumb pattern: the comparison table stays
on the root view, "Notes ->" drills into a dedicated sub-page linking out
to CRM_Research_Notes.md, with back navigation and breadcrumbs. Left
CRM_Research_Notes.md's own changes uncommitted — that file belongs to the
CRM Research session.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Left untracked since the presenter restructure work earlier this week;
committing it now so it's preserved in Gitea rather than only on this Mac.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
New nav-group below the main tabs (Team/Directory/Marketing/Sales/
Opportunities), separated by a divider since it's a newer, separate
initiative. Links out to CRM_Research_Notes.md, which already existed
with real requirements/candidate-survey content from ongoing research.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Replaces the free-text From field with a select of real working addresses
(mblack@txproducts.de, now the default; mckinley@mckinleyblack.com kept for
internal test sends), deduplicating the 8 render_template("index.html", ...)
call sites into a single render_index() helper along the way. Also picks up
today's real outreach-log entry from testing the reconnect_message send to
Peter's actual address.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- opportunities/README.md: what's in the folder, how to update the
OPPORTUNITIES/SCOUT_RESULTS data, and the fetch-based loading
architecture (why it's separate from the index.html monolith and
what that means for anyone editing it)
- Root README.md was still describing four branches with no mention
of Opportunities at all — added it as the fifth
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- opportunities/: opportunities.html (markup), opportunities.js (calendar,
event list, scout list, drill-view logic), opportunities.css — loaded by
index.html via fetch + dynamic <script>, replacing the inline copy that
used to live directly in the monolith
- Shared shell (index.html) no longer hardcodes Opportunities-specific
drill-view config; the module registers itself into HERO_NAV_BY_TAB /
DRILL_CONFIG / DRILL_DEFAULT_VIEW at load time, and setDrillView now
tolerates scopes that haven't registered yet
- agents/conference-scout/: the scheduled cloud routine's actual definition
(schedule, model, tools, full prompt) as a tracked config.json, plus a
README covering where it really runs (Anthropic's cloud, no server-side
component here), how to keep it in sync, how to recreate it if deleted,
and its current WebFetch/egress limitation
Team/Directory/Marketing/Sales remain inline in index.html for now — a
separate, larger pass given their size and interdependencies.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- New sidebar tab: side-by-side Events list and month calendar, with
multi-day event bars spanning their date range (title + location)
- Events: SPIE Optics + Photonics 2026, SEMICON Europa 2026
- New Conference Scout drill-view, hero button, and dedicated page
wired to a scheduled cloud routine that sweeps the web weekly for
conferences/seminars/networking events relevant to TXproducts
(semiconductors, power electronics GaN/SiC, X-ray optics,
photon/nanoscience, synchrotron/beamline science, and defense/
aerospace prospecting), syncing results in for manual review
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Selected panel now mirrors the contact list's width and stays in sync via a
pageshow reset and refreshSelectedList(). Contact rows drop the raw email/
conference/draft-opened clutter in favor of just name and company. Also
sorts the contact list alphabetically and clears out test-drafting noise
that had accumulated in the dash's Outreach Log during today's debugging.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
conference_contacts.xlsx is now the single working file behind both the dash's
Download button and the mail-merge tool -- populated with all 139 SPIE 2026
presenters (not just ones with emails already found), so Peter can fill in
emails as he meets people at the conference. Also adds a second message
template (reconnect_message) alongside the existing wavegate_focus one, and
a search/scroll UI for the contacts list now that it's no longer a handful
of rows.
Wires the Sales & Marketing dash's presenter cards directly into the mail-merge
tool: Compose Email now opens a real Mail.app draft via localhost:8505 (merged
template, attachments, signature intact), and logs the outreach automatically
back into both conference_contacts.xlsx and the presenter's Outreach Log.
Builds a person-first presenter directory across all four SPIE Optics + Photonics 2026
sub-conferences Peter is attending, plus a curated cross-conference itinerary with
deep-dive partnership angles and value-tag (Money/Idea/Connector/Collaborator) filtering
for the shortlist of contacts worth meeting in person.
Fixes the logo not displaying when the file is copied/downloaded
standalone (e.g. the Nextcloud snapshot), since it no longer depends
on an assets/ folder sitting alongside it.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Department shell (Team / Directory / Marketing / Sales) with the
Directory's Outreach Board, plus 12 of 25 boss's Phase 1 targets
researched so far.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>