Candidate GTM Pipeline
Changelog
Improvement areas
Documented improvements
40 entries · since JAN 2026
Only meaningful, completed improvements to the Candidate GTM Pipeline are documented here; routine syncs, formatting, and private records are excluded.
2026-08-10
-
The technical verification route now says exactly what it contains
A release review caught the entry point promising more than the route delivers: “Proof & data” read as a broad evidence page, while the route's real contract is the PostgreSQL lifecycle model and system architecture. Renaming the view “System & data” aligned the navigation label, page title, and metadata with that contract, so a reader can predict what they are opening — and verify they arrived where the name said they would.
2026-08-02 – 2026-08-05
-
Public navigation now names the reader's next task
The four public views no longer rely on internal section names. They are labeled Start here, How it works, Proof & data, and Changelog, so an unfamiliar reader can choose the next page without first learning how the site is organized.
-
Proof & data now connects the job-search lifecycle, CRM records, and the daily workbench
The proof page now follows one operating story instead of presenting disconnected diagrams. It links each job-search stage to familiar CRM records, then shows how Johanna, her Skills, PostgreSQL, and the private Decision Workbench fit together. The detailed data model remains available for readers who want to inspect the underlying structure.
-
The public site can show operating data but cannot change it
The public site no longer has access to 27 writable core tables. It reads the evidence it needs through four purpose-built, read-only objects and can start without the login database. Real operating data can support the public case study without giving the public delivery path permission to alter the system of record.
-
A private Decision Workbench turns application records into today's operating view
The login-protected workbench brings application decisions, source health, stored resume evidence, and interview times into one daily view. Decisions are written as plain sentences rather than database codes, while every panel reads the same system of record without changing it. Johanna can see what needs attention without rebuilding the picture from separate queries and files.
-
Mobile readers can now see that more views continue off-screen
The mobile view bar used to look complete even when another page sat beyond the screen edge. A visible trailing cue now shows that the row can be swiped, so Proof & data and Changelog are discoverable instead of hidden by the viewport.
-
The private workbench now has a real login and layered access checks
The private side moved from a browser pop-up password to a dedicated login flow. Cookie sessions, route authorization, atomic lockout, login rate limits, and a length-first password policy now protect the workbench at more than one layer. Public pages remain accessible without inheriting private-workbench permissions.
2026-07-27 – 2026-08-01
-
Each active JD now has one page for strategy, people, and missing evidence
Every pursued role now gets a working page that brings the role strategy, stakeholder map, source freshness, and unresolved gaps together. Status is derived from the underlying receipts rather than typed as a free-form conclusion. More than ten readability rounds turned the page into a handoff surface another person can inspect without reconstructing the campaign from its folders.
-
Referral proof can now be retold without losing its receipts
The buyer-pitch workflow compresses a larger evidence package into a two-sentence proof core a referrer can repeat accurately. It keeps the recognizable project context and a source receipt behind every claim, so brevity does not turn into unsupported praise. The same core can be handed to a router, advocate, or evaluator without rewriting Johanna into a different candidate each time.
-
Data-model pages now derive from the database itself
The public model pages are generated from PostgreSQL table and column comments instead of a separately maintained diagram. The generator selects fields, CRM translations, funnel metrics, and lineage from the same schema the runtime uses. When the structure changes, documentation drift becomes detectable instead of silently leaving the page behind.
-
Company names are reconciled before sponsorship decisions are recorded
A job sweep misread sponsorship evidence because one employer appeared under multiple legal and public names. Identity resolution now reconciles those aliases and requires a per-company check before the slate receives a verdict. The pipeline records uncertainty instead of converting a name mismatch into a confident eligibility decision.
-
Multiple resume tailors can now run without overwriting one another
Each application now gets an isolated working copy and private export paths while its resume is being tailored. Completed work merges back through a defined handoff instead of sharing filenames with every other run. Parallel tailoring can increase throughput without swapping PDFs, layout measurements, or payloads between application packages.
2026-07-20 – 2026-07-26
-
Public proof numbers now carry their own denominator and quiet weeks
A cold read found that several headline numbers sounded impressive but could not be calibrated on sight. The proof strip was rewritten with explicit denominators, and the weekly application chart now preserves inactive weeks instead of compressing the timeline. Readers can distinguish scale from conversion and see the operating rhythm without a footnote rescuing the claim.
-
Employer demand is now shown in the employers' own words
The market-demand section now uses verbatim excerpts from real job descriptions instead of Johanna summarizing what hiring teams want. The quotes run on two rails and move only when the reader scrolls; an earlier timed animation was removed after real use made it harder to read. The buyer language remains visible long enough to compare with the proof beside it.
-
Application response moved SDR/BDR out of the default target pool
Weeks of replies, silence, and rejection patterns showed that SDR/BDR was not the pool producing useful momentum. Those roles were removed from default search, recommendation, application, and networking routes rather than being kept alive by old resume assets. Attention shifted to Marketing / GTM / Customer Signal Analytics and adjacent campaigns that were producing stronger response signals.
-
Networking status can only follow captured message evidence
Every sent LinkedIn invitation now lands in an evidence ledger before its networking status changes. Acceptance timestamps preserve their source, profile aliases reconcile to the same person, and message sync was hardened against page races and thread leakage. The relationship record can be audited from the actual interaction instead of trusting a status label entered from memory.
-
Application status emails now update the job-search pipeline automatically
The system incrementally fetches new rejection, interview, and application-update emails, then uses semantic reading to match each message to the right application. A deterministic write gate records only high-confidence status changes; uncertain messages remain for review instead of overwriting the pipeline. Confirmed changes automatically enter the next daily routing cycle, reducing manual reconciliation without letting automation guess.
-
The public case study was rebuilt in the order a hiring manager decides
The homepage stopped following the order in which the system had been built. It was reorganized around the questions a hiring manager asks: who Johanna is, what she runs, whether it is real, why the work matters, and what evidence can be checked. The new structure was prototyped, synchronized to the live application, and released as the site's main reading path.
2026-07-14 – 2026-07-19
-
2,976 live postings recalibrated the target market and entry routes
Six official job boards contributed 2,976 live postings; 145 matched the target lane and eight full descriptions were read line by line. The read showed where the work actually sits inside AI-forward companies, which entry routes exist, and which senior openings should be treated as market signals rather than immediate applications. Search language and company watchlists were updated from that evidence instead of relying on the title Marketing Analyst.
-
Website traffic is now classified before it counts as reader evidence
Traffic analysis became a formal Skill with a strict attribution order: remove Johanna's own visits, bots, and suspected delivery automation before interpreting external attention. Only visits that survive those checks can be promoted into reader evidence or marketing learning. This keeps a page view from becoming a flattering but false audience claim.
-
Every candidate surface now derives from one written system identity
Candidate Go-to-Market Pipeline became the single written name and story source for the resume, LinkedIn, public site, repository, and interview narrative. Each surface still speaks in its reader's language, but it no longer invents a different identity or claim ceiling. An exact-set validator and a shorter constitution keep the routing map inspectable as the Skill library grows.
-
Email and networking syncs now report freshness through one shared ledger
Email and networking syncs moved onto a common sync_state ledger instead of keeping separate notions of freshness. Automatic schema snapshots became the structural source of truth and now expose drift between the database and its documentation. Even a successful fetch with no new email advances freshness correctly, closing a gap that previously made healthy sources look stale.
-
JD qualification now keeps its sources, and its Skill has a regression exam
Every screening verdict now travels with the query, source material, and timing that produced it, so the decision can be traced back to what was actually read. Batch qualification records per-query attribution instead of flattening several searches into one unexplained slate. The governing Skill also gained a cold-read exam, allowing rule changes to be compared against the prior version before they replace it.
2026-07-10 – 2026-07-13
-
The site can learn from reading journeys without tracking people
First-party measurement now records anonymous reading depth, page sequence, and referral source without cookies or browser fingerprinting. Likely-human traffic is classified separately from bots and self-visits before it enters a content readout. The site can learn which proof paths are being used without turning an individual visitor into a profile.
-
English became the primary public draft, with Chinese as an equal check copy
The English page is now written for U.S. hiring readers rather than translated after the Chinese version is finished. Chinese remains a complete, equivalent version used to check meaning and claim boundaries. This two-copy workflow catches phrasing that is technically accurate in one language but unnatural or misleading in the other.
-
The homepage now shows the person, the Skills, and a test that keeps both visible
The public case study added Johanna's real portrait and a roster of the Skills behind the workflow. A visual contract test now checks that these identity and proof elements remain present when the page changes. The system is shown as work Johanna authored and operates, rather than as an anonymous AI interface.
-
Cold reads now decide whether a public section earns its place
Two completed sections failed to persuade unfamiliar readers even though they were technically correct. One public route was deleted and one loss-analysis readout was kept internal instead of being defended with more copy. Public content now has to improve hiring confidence, not merely prove that another artifact exists.
-
The flagship AI project now shows the actual job-search work
The resume project was rebuilt around a concrete live case: screen job-market signals against Johanna's rubrics, diagnose each shortlisted JD, tailor proof for the buyer, validate drafts with a context-free cold reader, and write misses back into the rules. A reusable experience anchor now preserves the proof, metrics, and claim ceilings behind that story. Different resumes can emphasize the relevant capability without inventing a different AI project each time.
Earlier milestones — the first six months, compressed.
2026-07-01 – 2026-07-09
-
The candidate, the method, and the proof now share one public address
The public pipeline settled on johannafan.com as the single link used across the resume, LinkedIn, outreach, and interview materials. A hiring reader no longer has to assemble Johanna's identity, operating method, and evidence from separate destinations. The address points to the maintained application rather than a temporary preview.
2026-06
-
The first public Candidate GTM homepage went live on Azure
The first maintained homepage was released to Azure after the custom-domain cutover completed. The candidate story, workflow, and proof moved from local files into a page an external reader could actually inspect. Release receipts recorded the domain and hosting cutover instead of treating deployment as an undocumented final step.
-
Resume tailoring gained three governed starting lenses
Resume tailoring stopped choosing from an informal pile of prior documents. Three named sources became the only governed starting points: MKT for signal-to-decision roles, CORE for CRM, pipeline, workflow, and handoff roles, and SDR for prospecting and outbound work. One selected baseline owns the full structure before per-JD evidence is rearranged, preventing one application from mixing several candidate identities.
-
Applications moved from occasional bursts into a daily operating loop
Marketing-analysis applications gained a repeatable daily route instead of depending on occasional search-and-apply bursts. The loop connects opportunity review, preparation, application, and the next follow-up decision so unfinished work has a visible continuation point. Daily cadence became part of the system rather than a reminder Johanna had to recreate each morning.
2026-05
-
Market reading recentered the search on GTM / Revenue Ops & Analytics
Months of job-description reading showed that Johanna's transferable work was being bought through GTM, revenue operations, and analytics objects rather than a broad generic-data identity. Search presets were rebuilt for wider recall inside that lane, then qualification rules decided which roles deserved deeper work. Positioning changed because the market evidence changed, not because a new title sounded better.
-
Application forms now use one facts source and a human submit gate
A guided browser workflow now fills application forms from one verified personal profile instead of retyping facts from memory. The workflow can navigate, populate, and check the page, but final submission remains an explicit human decision. This separates repeatable form work from the irreversible act of sending an application.
2026-04
-
LinkedIn replies and follow-ups now run on written relationship judgment
A dedicated Skill now reads the relationship stage, the open loop, and the prior conversation before drafting a LinkedIn reply or follow-up. Daily use refined the decision logic instead of leaving each message to a fresh improvisation. The workflow can distinguish when to answer, wait, receive a commitment, or close the thread without treating every connection as the same outreach sequence.
2026-03
-
Resumes stopped being one-off files and gained an evidence-first source of truth
Reusable candidate facts and proof moved into maintained resume sources instead of being copied from the last application. An evidence-first tailoring Skill now starts from the governed baseline, reads the full JD, and changes proof order and emphasis for that buyer. Improvements that remain true beyond one role can return to the source instead of disappearing inside a single exported PDF.
-
The job-search system of record moved from SQLite to PostgreSQL
Jobs, applications, and operating state moved onto PostgreSQL, and the active runtime stopped maintaining a second SQLite path. One database became the place downstream Skills and reporting surfaces read from. Removing the dual runtime reduced the chance that two machines or tools would answer the same pipeline question differently.
2026-02
-
The job list moved from one JSON file into a queryable database
The growing job list was migrated from jobs.json into SQLite. Records could now be queried and updated as structured data instead of rewriting one large file for every change. This was the first step toward a system of record that later supported applications, status history, reporting, and automated checks.
2026-01
-
Hiring judgment became a reusable Skill with a candidate-truth source
The first hiring-judgment Skill captured how a role should be read instead of leaving that reasoning inside one chat. A dedicated candidate-truth folder was created beside it so resumes and other outputs could derive from maintained facts rather than re-create Johanna each time. Repeatable judgment and reusable evidence became separate, versioned assets.
-
Initial release: the job search became a versioned operating project
The job search moved into one repository with decisions, artifacts, and workflow changes under version control. Early specifications made the work inspectable and recoverable instead of leaving the operating method in chat history and local files. This created the base that later Skills, databases, public proof, and learning loops could build on.