You are browsing as a guest. Sign up (or log in) to start making projects!

qqxzew

@qqxzew

Joined June 2nd, 2026

  • 16Devlogs
  • 4Projects
  • 2Ships
  • 52Votes
67 guys
Ship Changes requested

What did you make?
An assistant for a salesperson, not another lead list. You give it a customer profile, it walks the Czech public registers, and once a week it hands back a handful of companies with something that actually changed this week — each with a full dossier where every claim carries the exact quote it came from and a link to the page it was found on. Built as a take-home assignment for RTsoft (they sell custom shop-floor management software), and it’s live in production, not just running on my machine.

What was challenging?
Hallucination is the whole risk of this task, not a side concern — an invented fact about a company that a salesperson pastes into an email is worse than no output at all. So the model never gets to assert anything; it proposes a claim + a quote, and my code searches for that exact quote in the page text I archived. First time I ran a verifier that rechecked stored claims against their own archived pages, 100 of 172 supposedly-verified facts failed — all from one code path, the part reading the state register, which had been marking its own claims “verified” without ever passing them through the check. The other hard part: I assumed a good weighted score could rank “why this company.” Two separate experiments — a permutation test and a 1536-dim embedding of company sites — both came back at chance. The site text just doesn’t say who’s buying software. Had to throw the score out and rebuild ranking around what’s actually provable instead.

What are you proud of?
One line in the schema: claim.snapshot_id NOT NULL REFERENCES snapshot(id). A claim about a company physically cannot be inserted into the database unless it points at a stored page snapshot — “nothing without a source” isn’t a rule I have to remember, it’s a foreign key. Also proud that manual review keeps finding real bugs the statistics don’t: a solar-panel subsidy misfiled as “scaling up production,” a company ranked #1 whose own grant paperwork said they’d already bought the system — both caught by reading five actual cards, after two rigorous experiments said everything was fine.

What should people know so they can test it?
It only works for Czech companies — the sources are Czech state registers. python -m pipeline.run –check tells you exactly what’s missing before you run anything. The number that matters on every dossier is the last line — “N verified facts · N inferences · N discarded” — click a claim’s source link and check the quote is actually on that page; that’s the whole trust model, so it should be checkable, not taken on faith.

  • 5 devlogs
  • 34h
Try project → See source code →
Open comments for this post

7h 26m 39s logged

Wired up actual deploy: push to main, and a minute later the demo is running that commit. git archive straight over ssh into a receive script — no registry, no git pull on the server, so the server never holds credentials for this repo. The one thing it refuses to do is kill a run in progress: /api/run spawns the pipeline as a subprocess, and a container restart takes it down with it. Now the script asks first, and if a run is going it stops and exits non-zero — red, on purpose, because a deploy that shipped code but didn’t put it into service has no business looking green.Rebuilding the whole thing from nothing on a clean machine found what months of running it on my own box never did. All five delivered companies 404’d after the first real run — the candidate list gets loaded once at import, a run rewrites the files under it, and the process just kept serving eight-hour-old data until somebody restarted it by hand. The “what’s missing” preflight check was lying in both directions: it called the API key missing on a machine that had it as an env var instead of a .env file, and it reported success on a machine where the industry codebook never downloaded — which doesn’t crash anything, it just prints every industry as a bare five-digit code and calls that fine.README got rewritten to lead with the one sentence the tool actually stands on, plus an ARCHITECTURE.md the code can point to instead of explaining itself in comments, a Czech translation, and an MIT licence with the honest caveat: what’s verified is that a sentence was on a page, not that it’s true.

0
0
9
Open comments for this post
Reposted by @qqxzew

5h 34m 13s logged

Ran two experiments trying to find better weights for the outreach-order score — a permutation test on our own signals, and a 1536-dim embedding of company sites — both landed at chance (AUC 0.39, p≈0.8). Turns out public site text just doesn’t say whether a company is buying planning software; that’s a ceiling in the source, not something more features would fix, so scoring got replaced with an order read straight off the client’s own ICP document instead of invented weights. Then reading five actual weekly cards by hand caught two things neither experiment did: a solar-panel subsidy misfiled as “scaling up production,” and the #1 company on the list whose own grant description said “we’re buying a complete information system” — already a lost lead, not a hot one. Fixed the classifier — it was only reading project titles, never descriptions — and one signal class jumped from 214 to 1014 matches, 415 of which used to be pitched as reasons to call. Two rigorous measurements found nothing; two hours of eyeballing cards found the bugs sitting at the top of the list.

0
1
45
Open comments for this post

5h 34m 13s logged

Ran two experiments trying to find better weights for the outreach-order score — a permutation test on our own signals, and a 1536-dim embedding of company sites — both landed at chance (AUC 0.39, p≈0.8). Turns out public site text just doesn’t say whether a company is buying planning software; that’s a ceiling in the source, not something more features would fix, so scoring got replaced with an order read straight off the client’s own ICP document instead of invented weights. Then reading five actual weekly cards by hand caught two things neither experiment did: a solar-panel subsidy misfiled as “scaling up production,” and the #1 company on the list whose own grant description said “we’re buying a complete information system” — already a lost lead, not a hot one. Fixed the classifier — it was only reading project titles, never descriptions — and one signal class jumped from 214 to 1014 matches, 415 of which used to be pitched as reasons to call. Two rigorous measurements found nothing; two hours of eyeballing cards found the bugs sitting at the top of the list.

0
1
45
Open comments for this post

2h 55m 43s logged

The assistant now produces real company cards - every claim on one carries the exact quote it came from and a link to the source it was found in. To make sure that actually held, I wrote a check that re-verifies every stored fact against the archived page it supposedly came from, and ran it over the whole database.100 of 172 “facts” failed. Every single one came from my own code: the part that reads the state company register was writing claims marked “verified” without ever passing them through the verifier. The irony is that the register is the most trustworthy source in the entire project - it was just the only one asserting things instead of proving them. Now 177 of 177 pass.I also cut the weekly run from ~50 minutes to about 2, after finding an official API that lists which companies changed recently - 30 of mine in a week, instead of re-checking all 3,299.

0
0
65
Open comments for this post

11h 38m 58s logged

I started working on icp-scout - an AI assistant that helps find potential B2B customers.
The idea behind the project is simple: instead of a salesperson spending hours searching for companies, opening different websites, and collecting information manually, the assistant should handle this routine work. The goal is not just to provide a list of companies, but to explain why each company could be a good fit and why now might be the right time to contact them.
Right now, I’m working on the basic project architecture and thinking about how to make AI results more reliable. The biggest challenge with systems like this is that AI can confidently generate information that is not true. That’s why it is important that every important statement can be verified and has a clear source.

Next, I plan to connect public company data sources, build the first analysis pipeline, and test it with real examples.

0
0
14
Open comments for this post

5h 21m 44s logged

last month I had done a lot of work, mainly on my global php/nette skill. Why? I want to find an intership, I know a lot of local IT companies from the Hackatons. And they know me to, but the main problem was the stack. All of them are using php.

I had revieved my knowelege of php - and realized that I dont know enought. After month i had returned to my project. I saw bad code and slow solutions, I was not using the correct options introduced by Nette framework but the old and procedure php, like a routers which was writen in index.php.

I dont write some new features or change frontend, I had only improve myself.

0
0
15
Open comments for this post

4h 2m 47s logged

Devlog: Building SSSocks — Days 1 to 6: Infrastructure to Atomic ReservationsFirst devlog for SSSocks, a high-performance e-commerce backend for premium sock sales. This log covers architecture choices, infrastructure setup, and technical challenges from the first six phases of development.Days 1–2: Infrastructure and CI/CD AutomationThe project focused on isolating the execution environment to ensure consistency across hosts.Configured a local development stack using Docker Compose (PHP-FPM, Nginx, and MySQL).Established an automated CI/CD pipeline using GitHub Actions.Integrated PHPStan for static analysis at Level 8 to enforce strict typing and prevent runtime type mismatches.Day 3: Database Schema and MigrationsDatabase modifications were abstracted using migrations to manage state deterministically.Integrated Phinx for migration and seeding management.Executed the initial relational schema, creating the products table.Implemented core database fields: unique stock keeping units (sku), names, inventory counts (stock), and prices stored as integers representing cents to avoid floating-point inaccuracies.Day 4: Dependency Injection and RefactoringAs the codebase scaled, manual object instantiation was replaced with a cleaner design pattern.Integrated the Nette DI container to manage object lifecycles and decouple classes.Configured service definitions inside config/common.neon.Refactored components like PasswordManager into standalone services managed by the container.Day 5: Presentation Layer and Repository PatternSeparated data access from presentation logic to maintain clean boundaries.Implemented the Repository pattern with ProductRepository handling data retrieval via Nette Database Core.Created ProductSeeder via Phinx to populate the database with standardized test inventory.Integrated the Latte template engine, eliminating inline HTML concatenation and establishing an MVC separation for the product showcase.Day 6: Highload Optimization and Race Condition PreventionThe standard SELECT stock -> UPDATE stock workflow introduces race conditions under concurrent traffic, causing overselling. To achieve atomic inventory reservation under high load, the architecture was refactored:Introduced a Redis instance running on an Alpine image inside the Docker network.Developed a StockManager service acting as an abstraction layer over the Redis memory cache.Wrote an embedded Lua script executed directly inside the single-threaded Redis engine. The script performs read, condition-check, and decrement operations atomically within a single non-blocking transaction.Lualocal current_stock = tonumber(redis.call(‘GET’, KEYS[1]))
if current_stock and current_stock >= tonumber(ARGV[1]) then
redis.call(‘DECRBY’, KEYS[1], ARGV[1])
return 1
end
return 0
Technical Challenges and Bug FixesPSR-4 Case Sensitivity: Encountered class-loading failures during Linux-based CI execution despite code running successfully on a Windows host. Resolved by aligning file naming conventions with uppercase namespaces (Bootstrap.php and StockManager.php).Docker Network DNS Propagation: Encountered a Name or service not known error connecting the PHP container to the new Redis host. Solved by flushing the virtual network topology via docker-compose down && docker-compose up -d.Strict Parameter Compliance: PHPStan Level 8 rejected passing integer parameters into the Predis eval method arguments. Fixed by explicitly casting inventory quantities to strings: (string) $quantity.Current Backlog[ ] Implement an API endpoint structure to accept incoming product selections.[ ] Integrate a validation layer for incoming HTTP POST request payloads.[ ] Design the architecture for the stateful shopping cart session.

0
0
2
Ship

I made EquipLane, an industrial maintenance ticketing system where clients can report equipment problems, engineers can manage assigned repair tasks, and admins can control the whole maintenance workflow.

The hardest part was coming up with the idea and building the project from scratch without much previous experience. I had to figure out the structure, database, roles, authentication, and the whole workflow step by step.

I’m most proud that I was able to finish a working project and also make the GitHub repository look organized and well documented. This is my first major portfolio project, so I’m proud that it turned into something complete.

To test it, just open the project link and log in using the demo credentials from the README.

  • 9 devlogs
  • 14h
  • 15.16x multiplier
  • 217 Stardust
Try project → See source code →
Open comments for this post

1h 24m 21s logged

What I did:
Wrapped up the EquipLane project and prepared it for my portfolio. I containerized the entire application using Docker and Docker Compose, linking a PHP 8.2 server with a MariaDB database so the whole environment can be spun up with a single command. I also set up a CI pipeline using GitHub Actions to automatically lint and check PHP syntax on every push. Finally, I generated a complete Entity-Relationship Diagram (ERD) to visualize the database architecture and wrote a comprehensive README explaining the core mechanics, security features, and the PRG pattern I implemented.

The struggles:
I definitely reached the limit of what makes sense to build with pure procedural PHP. Refactoring and maintaining this architecture showed me exactly why OOP and modern frameworks exist. It was a great learning experience for understanding the fundamentals, but I am definitely ready to move on to Nette for my next hackathon projects.

0
0
17
Open comments for this post

3h 37m 39s logged

What I did:
Massive architectural and security overhaul today. I completely rewrote the form submission logic to follow the Post-Redirect-Get (PRG) pattern, integrating session-based Flash messages and strict CSRF token validation across all endpoints. I also implemented “Sticky Forms” so users never lose their detailed text inputs if a validation error occurs. For the administration side, I built full CRUD interfaces to manage personnel roles, corporate clients, and the equipment registry without needing direct database access. Finally, I wrote SQL-level pagination for the main tickets table to keep the application fast and scalable as data grows.

The struggles:
I finally switched from VS Code to PhpStorm today and I am just in shock at how insanely cool and powerful it is. It instantly highlighted database schema mismatches I missed and forced me to write much cleaner code, though getting used to its strict warnings definitely took some time.

0
0
8
Open comments for this post

2h 20m 10s logged

What I did:
Expanded the engineer’s resource reporting logic. When resolving a ticket, engineers are now required to input the exact hours spent and the cost of replacement parts. Built a financial calculation module on the backend that automatically aggregates these costs, applies the Czech 21% VAT (DPH), and displays a detailed invoice summary to admins and clients.

Also implemented a critical backup request feature: engineers can now submit a “Request Backup” flag along with a specific text reason if they encounter blocking issues on-site. Admins immediately see an approval panel to either accept the request (and assign additional help) or reject it.

The struggles:
I had no idea for frontend

0
0
14
Open comments for this post

1h 47m 59s logged

Built the ticket creation page with role protection. Clients can now select their equipment, set priorities, and safely submit maintenance requests to the database via PDO prepared statements.

The struggles:
Broken the SQL query and html :>

0
0
14
Open comments for this post

2h 13m 55s logged

Milestone: From Static UI to Secure Multi-User App

What I did:
Since the last update on the UI dashboard, I have completely transformed the project from a static frontend into a secure, functional multi-user system using native PHP and MariaDB.

  1. Authentication & Session Management: Built a backend login system from scratch. Implemented secure password hashing using bcrypt. Set up native PHP sessions to track users across pages.
  2. Security Guards & Logout: Created a centralized guard script to prevent unauthorized URI access. If a user isn’t logged in, they are killed and redirected to the login page. Added a full session-destroying logout mechanism.
  3. Role-Based Access Control (RBAC): Differentiated the system for Admins, Engineers, and Clients. The UI now dynamically hides navigation links based on roles, and the backend explicitly throws a 403 Forbidden error if a non-admin tries to access the core control panel.
  4. Profile & Password Updates: Built a personal profile page that fetches current user details and handles password modification with server-side validation.

The struggles:
Ran into multiple syntax walls, including incorrect sql, forgotten POST block brackets, and a lot of typo mismatches. Also had to deal with MariaDB unique constraint violations during database seed testing, which I resolved by writing a structured TRUNCATE routine to clear tables before fresh seeding.

Now the app actually feels like a secure industrial tool rather than just a Tailwind template.

0
0
6
Open comments for this post

22m 33s logged

After getting the database connected, I built the main dashboard U, also I dont have any idea for design after hard day so I asked AI about help…

0
0
11
Open comments for this post

1h 7m 22s logged

Honestly, it is my first time building a real website in PHP, and I realized I had completely forgotten most of my HTML and CSS. Today I successfully parsed the environment variables, securely connected the MariaDB database via PDO, and built a clean industrial dashboard layout using Tailwind CSS. EquipLane is finally coming to life.

0
0
51
Open comments for this post

55m 25s logged

Today I set up the initial structure for Equiplane, an industrial equipment maintenance workflow system

I prepared the first part of the database schema for the project, including the base tables for users and companies. The goal is to build a system where clients can report equipment failures, admins can assign engineers, and engineers can manage repair tickets.

1
0
57

Followers

Loading…